]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* config/cris/sync.md ("atomic_fetch_<atomic_op_name><mode>")
authorHans-Peter Nilsson <hp@axis.com>
Mon, 16 Jul 2012 02:59:42 +0000 (02:59 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Mon, 16 Jul 2012 02:59:42 +0000 (02:59 +0000)
("atomic_compare_and_swap<mode>"): Gate expand_mem_thread_fence
calls on result of call to need_atomic_barrier_p.

From-SVN: r189500

gcc/ChangeLog
gcc/config/cris/sync.md

index 676707e57f60a1d58a3120d45d8dc0f4b64608f5..2e12d4eb54b4a50261f95c2707ede065e2107f52 100644 (file)
@@ -1,3 +1,9 @@
+2012-07-16  Hans-Peter Nilsson  <hp@axis.com>
+
+       * config/cris/sync.md ("atomic_fetch_<atomic_op_name><mode>")
+       ("atomic_compare_and_swap<mode>"): Gate expand_mem_thread_fence
+       calls on result of call to need_atomic_barrier_p.
+
 2012-07-15  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * config/mips/mips.md (move_type): Replace mfhilo and mthilo
index d0cc3b28e4e5326e3d52c45e37af080ebfc74e86..5dc2858d99d342871b1e2ec89a2c9d681ba81a6d 100644 (file)
   if (<MODE>mode != QImode && TARGET_TRAP_UNALIGNED_ATOMIC)
     cris_emit_trap_for_misalignment (operands[1]);
 
-  expand_mem_thread_fence (mmodel);
+  if (need_atomic_barrier_p (mmodel, true))
+    expand_mem_thread_fence (mmodel);
+
   emit_insn (gen_cris_atomic_fetch_<atomic_op_name><mode>_1 (operands[0],
                                                             operands[1],
                                                             operands[2]));
-  expand_mem_thread_fence (mmodel);
+  if (need_atomic_barrier_p (mmodel, false))
+    expand_mem_thread_fence (mmodel);
+
   DONE;
 })
 
   if (<MODE>mode != QImode && TARGET_TRAP_UNALIGNED_ATOMIC)
     cris_emit_trap_for_misalignment (operands[2]);
 
-  expand_mem_thread_fence (mmodel);
+  if (need_atomic_barrier_p (mmodel, true))
+    expand_mem_thread_fence (mmodel);
+
   emit_insn (gen_cris_atomic_compare_and_swap<mode>_1 (operands[0],
                                                       operands[1],
                                                       operands[2],
                                                       operands[3],
                                                       operands[4]));
-  expand_mem_thread_fence (mmodel);
+  if (need_atomic_barrier_p (mmodel, false))
+    expand_mem_thread_fence (mmodel);
+
   DONE;
 })