Date: Fri, 14 Sep 2012 15:37:15 -0500 From: Chuck Burns <break19@gmail.com> To: Brooks Davis <brooks@freebsd.org> Cc: freebsd-current@FreeBSD.org Subject: Re: Clang as default compiler November 4th Message-ID: <20120914153715.4aa1a412.break19@gmail.com> In-Reply-To: <20120914202319.GB5244@lor.one-eyed-alien.net> References: <20120911104518.GF37286@deviant.kiev.zoral.com.ua> <20120911120649.GA52235@freebsd.org> <20120911132410.GA87126@troutmask.apl.washington.edu> <504F4645.4070900@FreeBSD.org> <504F4A6B.4010001@coosemans.org> <504F5101.8090906@FreeBSD.org> <505101C3.70203@freebsd.org> <20120913020833.GA8255@troutmask.apl.washington.edu> <1347550332.1110.108.camel@revolution.hippie.lan> <20120913161024.GA13846@troutmask.apl.washington.edu> <20120914202319.GB5244@lor.one-eyed-alien.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 14 Sep 2012 15:23:19 -0500 Brooks Davis <brooks@freebsd.org> wrote: > On Thu, Sep 13, 2012 at 09:10:24AM -0700, Steve Kargl wrote: > > On Thu, Sep 13, 2012 at 09:32:12AM -0600, Ian Lepore wrote: > > > On Wed, 2012-09-12 at 19:08 -0700, Steve Kargl wrote: > > > > In regards to my initial post in this thread, I was just trying > > > > to assess whether any benchmarks have been performed on FreeBSD > > > > for floating point generated by clang. Other than the limited > > > > testing that I've done, it appears that the answer is 'no'. > > > > > > > > > > We have src/tools/tests/testfloat and src/tools/regression/lib/msun. I > > > know nothing about the former (just noticed it for the first time). The > > > latter I think is a set of correctness tests rather than performance > > > tests. > > > > It's quite clear that the clang proponent have not tried > > to run src/tools/regression/lib/msun. > > > > % setenv CC clang > > % make |& grep warning | wc -l > > 1354 > > % make clean > > % make |& tee make.log > > % head -20 make.log > > clang -O2 -pipe -march=opteron -O0 -lm test-cexp.c -o test-cexp > > test-cexp.c:49:14: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas] > > #pragma STDC FENV_ACCESS ON > > ^ > > test-cexp.c:183:2: warning: expression result unused [-Wunused-value] > > testall(0.0, 1.0, ALL_STD_EXCEPT, 0, 1); > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > test-cexp.c:98:7: note: expanded from macro 'testall' > > test(cexp, x, result, exceptmask, excepts, checksign); \ > > ^ > > test-cexp.c:87:11: note: expanded from macro 'test' > > assert(((func), fetestexcept(exceptmask) == (excepts))); \ > > ^ > > /usr/include/assert.h:54:21: note: expanded from macro 'assert' > > #define assert(e) ((e) ? (void)0 : __assert(__func__, __FILE__, \ > > ^ > > test-cexp.c:183:2: warning: expression result unused [-Wunused-value] > > testall(0.0, 1.0, ALL_STD_EXCEPT, 0, 1); > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > test-cexp.c:99:7: note: expanded from macro 'testall' > > > > % tail -20 make.log > > test-trig.c:69:11: note: expanded from macro 'test' > > assert(((func), fetestexcept(exceptmask) == (excepts))); \ > > ^ > > /usr/include/assert.h:54:21: note: expanded from macro 'assert' > > #define assert(e) ((e) ? (void)0 : __assert(__func__, __FILE__, \ > > ^ > > 74 warnings generated. > > clang -O2 -pipe -march=opteron -O0 -lm test-fenv.c -o test-fenv > > test-fenv.c:82:14: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas] > > #pragma STDC FENV_ACCESS ON > > ^ > > 1 warning generated. > > for p in test-cexp test-conj test-csqrt test-ctrig test-exponential test-fma test-fmaxmin test-ilogb test-invtrig test-logarithm test-lrint test-lround test-nan test-nearbyint test-next test-rem test-trig test-fenv; do /usr/src/tools/regression/lib/msun/$p; done > > Assertion failed: (((cexp), fetestexcept((0x04 | 0x20 | 0x01 | 0x08 | 0x10)) == (0))), function test_nan, file test-cexp.c, line 211. > > 1..7 > > ok 1 - cexp zero > > Abort trap (core dumped) > > *** [tests] Error code 134 > > > > Stop in /usr/src/tools/regression/lib/msun. > > Prompted by this post, I did a bit of testing and it looks like we have > two classes of failures that need to be investigated. First, some tests > are failing with a gcc compiled world and clang compiled test code. > They seem to mostly be unexpected fp exception state when testing with > NaNs. I suspect that someone more knowledgeable in this area could come > up with a reduced test case and explication of what clang is doing wrong > pretty quickly. > > The second class is tests that fail when libm is compiled using clang. > I've not investigate those at all. I'd tend to guess that we have a > wider range of issues there. > > This is clearly an area we need more focus on before a switch to clang. > To a point I would be OK with it delaying the switch to work these > issues, but as with C99 long double support we can't let the quest for > perfection delay us indefinitely. > > -- Brooks Also, you probably want to be sure you are running these tests against clang 3.2, not the clang that is in base, since -that- is the version that will be going live, right? -- Chuck Burns <break19@gmail.com>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120914153715.4aa1a412.break19>