Skip site navigation (1)Skip section navigation (2)
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>