This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa-20020619-branch] current status report on i386-*-freebsd4*
- From: law at redhat dot com
- To: Steven Bosscher <stevenb at suse dot de>
- Cc: Christian Ehrhardt <ehrhardt at mathematik dot uni-ulm dot de>, Gerald Pfeifer <gp at suse dot de>, Loren James Rittle <rittle at labs dot mot dot com>, gcc-patches at gcc dot gnu dot org
- Date: Thu, 26 Feb 2004 12:44:55 -0700
- Subject: Re: [tree-ssa-20020619-branch] current status report on i386-*-freebsd4*
- Reply-to: law at redhat dot com
In message <200402251512.28835.stevenb@suse.de>, Steven Bosscher writes:
>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.
Presumably this bug is the motivation behind Andrew's patch from earlier
today:
2004-02-26 Andrew MacLeod <amacleod@redhat.com>
* tree-ssa.c (find_replaceable_in_bb): Don't repalce expressions in
volatile statements.
Can someone verify that i386 is working properly now?
Thanks,
jeff