From fdb6272c11a47c5030719f0cf059b57974a269f2 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Mon, 16 Jul 2012 02:59:42 +0000 Subject: [PATCH] * 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 --- gcc/ChangeLog | 6 ++++++ gcc/config/cris/sync.md | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 676707e57f6..2e12d4eb54b 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 d0cc3b28e4e..5dc2858d99d 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; }) -- 2.34.1