re PR target/42869 (GOMP_critical_start wrong on Itanium due to __sync miscompilation)
authorSteve Ellcey <sje@cup.hp.com>
Fri, 12 Mar 2010 18:19:14 +0000 (18:19 +0000)
committerSteve Ellcey <sje@gcc.gnu.org>
Fri, 12 Mar 2010 18:19:14 +0000 (18:19 +0000)
2010-03-12  Steve Ellcey  <sje@cup.hp.com>

PR target/42869
* config/ia64/sync.md (sync_compare_and_swap): Move memory fence.

From-SVN: r157410

gcc/ChangeLog
gcc/config/ia64/sync.md

index 9bb215a..580ccc4 100644 (file)
@@ -1,3 +1,8 @@
+2010-03-12  Steve Ellcey  <sje@cup.hp.com>
+
+       PR target/42869
+       * config/ia64/sync.md (sync_compare_and_swap): Move memory fence.
+
 2010-03-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        PR middle-end/42431
index b40e208..9aec0fe 100644 (file)
   if (GET_MODE (dst) != DImode)
     dst = gen_reg_rtx (DImode);
 
-  emit_insn (gen_memory_barrier ());
   emit_insn (gen_cmpxchg_rel_<mode> (dst, operands[1], ccv, operands[3]));
+  emit_insn (gen_memory_barrier ());
 
   if (dst != operands[0])
     emit_move_insn (operands[0], gen_lowpart (<MODE>mode, dst));