This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/46914] std::atomic<int*>::exchange(...) doesn't store correct value.
- From: "paolo.carlini at oracle dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 28 Jan 2011 10:22:46 +0000
- Subject: [Bug libstdc++/46914] std::atomic<int*>::exchange(...) doesn't store correct value.
- Auto-submitted: auto-generated
- References: <bug-46914-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46914
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bkoz at redhat dot com
--- Comment #12 from Paolo Carlini <paolo.carlini at oracle dot com> 2011-01-28 10:22:27 UTC ---
I'm making some progress: using --with-arch-32=i586 is fine, and the reason is,
in that case the _GLIBCXX_ATOMIC_BUILTINS_* are *all* true (in the i486 case,
_GLIBCXX_ATOMIC_BUILTINS_8 is false). Now, the testcase only uses ints, but in
atomic_base.h we require either all true, or the special case of at least
_GLIBCXX_ATOMIC_BUILTINS_1 true, that is _GLIBCXX_ATOMIC_PROPERTY == 1, or
none true, that is _GLIBCXX_ATOMIC_PROPERTY == 0.
Given that, I suppose, Ubuntu and Debian have been using -i486 only because of
the crazyness old GCCs defaulting to i386 and now everything is different
finally (essentially the current default is a bit more than pentium4), I don't
consider this issue particularly serious.
Still, it would be nice to understand why both _GLIBCXX_ATOMIC_PROPERTY == 1
(as this PR shows) and _GLIBCXX_ATOMIC_PROPERTY == 0 (as trying
--with-arch-32=i386 shows), both don't work. Maybe Benjamin has ideas...
Note: the command line per se doesn't seem to matter, is the way the *.so is
built that matters.