This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/42869] GOMP_critical_start wrong on Itanium due to __sync miscompilation
- From: "sje at cup dot hp dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 9 Mar 2010 23:49:27 -0000
- Subject: [Bug target/42869] GOMP_critical_start wrong on Itanium due to __sync miscompilation
- References: <bug-42869-6957@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #4 from sje at cup dot hp dot com 2010-03-09 23:49 -------
Yes, I think this is clearly a bug in the IA64 definition of
sync_compare_and_swap. I think the fix is swapping the two instructions being
generated by the IA64 sync_compare_and_swap instruction. (cmpxchg4.rel
followed by a memory fence instead of a memory fence followed by cmpxchg4.rel).
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42869