From: Hans-Peter Nilsson Date: Mon, 16 Jul 2012 02:59:42 +0000 (+0000) Subject: * config/cris/sync.md ("atomic_fetch_") X-Git-Tag: misc/gccgo-go1_1_2~1900 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fdb6272c11a47c5030719f0cf059b57974a269f2;p=thirdparty%2Fgcc.git * config/cris/sync.md ("atomic_fetch_") ("atomic_compare_and_swap"): Gate expand_mem_thread_fence calls on result of call to need_atomic_barrier_p. From-SVN: r189500 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 676707e57f60..2e12d4eb54b4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-07-16 Hans-Peter Nilsson + + * config/cris/sync.md ("atomic_fetch_") + ("atomic_compare_and_swap"): Gate expand_mem_thread_fence + calls on result of call to need_atomic_barrier_p. + 2012-07-15 Richard Sandiford * config/mips/mips.md (move_type): Replace mfhilo and mthilo diff --git a/gcc/config/cris/sync.md b/gcc/config/cris/sync.md index d0cc3b28e4e5..5dc2858d99d3 100644 --- a/gcc/config/cris/sync.md +++ b/gcc/config/cris/sync.md @@ -93,11 +93,15 @@ if (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__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; }) @@ -196,13 +200,17 @@ if (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_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; })