This is the mail archive of the
mailing list for the GCC project.
Re: [tree-ssa-20020619-branch] current status report on i386-*-freebsd4*
On Wednesday 25 February 2004 15:08, Christian Ehrhardt wrote:
> On Wed, Feb 25, 2004 at 01:39:58PM +0100, Steven Bosscher wrote:
> > On Wednesday 25 February 2004 11:54, Christian Ehrhardt wrote:
> > > On Wed, Feb 18, 2004 at 12:13:36AM +0100, Gerald Pfeifer wrote:
> > > > Steven has started to look at this a bit, but basically it seems to
> > > > be a compiler issue, not a libstdc++ issue. If you could provide the
> > > > libstdc++ folks with a small testcase (mine are *huge*) that probably
> > > > would help a lot!
> > >
> > > Maybe 14272 is related. This causes tons of libstdc++ testsuite
> > > failures on sparc because runtime datastructures like std::cout are
> > > never initialized. Check if __exchange_and_add from atomicity.h is
> > > miscompiled!
> > It's not related, but it does fail. Also on i686 btw.
> Yes, the reduced testcase in the PR should fail on virtually any
> platform. But some CPUs (i386 and sparc32) use code that triggers
> this bug in libstdc++-v3/config/cpu/*/atomicity.h whereas others
> don't (e.g. i686) because they have optimized assembler versions.
> I'm pretty much sure that that the i386-Version of __exchange_and_add
> will be miscompiled and cause various libstdc++-v3 testsuite failures.
> Note that __exchange_and_add is in turn used to make sure that things like
> std::cout is initialized exactly once. With the miscompilation the
> initilization never happens which leads to various interesting failures.
I tried i386 with TER disabled and it didn't fix the problems
Gerald is seeing. But I've analyzed the problem a bit more and
it is not really a TER problem, apparently, but more one with
aliasing and volatiles. So I can imagine similar problems going
on in one of the optimizers. I'll be watching this bug :-)
Diego said he'd look into this bug.