This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/48126] arm_output_sync_loop: misplaced memory barrier, missing clrex / dummy strex
- From: "m.k.edwards at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 17 Mar 2011 18:14:32 +0000
- Subject: [Bug target/48126] arm_output_sync_loop: misplaced memory barrier, missing clrex / dummy strex
- Auto-submitted: auto-generated
- References: <bug-48126-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48126
--- Comment #2 from Michael K. Edwards <m.k.edwards at gmail dot com> 2011-03-17 18:14:11 UTC ---
Please insert the text of your citations, since the ARM ARM is not a public
document.
I think I'm persuaded that the CLREX isn't necessary -- although I'm going to
keep it in my compiler so that I can monitor ldrex/strex pairing accurately in
valgrind/qemu.
How about the branch past the DMB? What's actually required in order to get
"ordered" semantics? If it's safe to skip the trailing DMB in the "compare
failed" case, maybe it can be disposed of entirely?