Commit 27738602 by Richard Henderson Committed by Richard Henderson

alpha.c (alpha_split_lock_test_and_set): Move memory barrier to below the test-and-set.

        * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
        memory barrier to below the test-and-set.
        (alpha_split_lock_test_and_set_12): Likewise.

From-SVN: r139950
parent a7f32992
2008-09-03 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
memory barrier to below the test-and-set.
(alpha_split_lock_test_and_set_12): Likewise.
2008-09-03 Vladimir Makarov <vmakarov@redhat.com> 2008-09-03 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-opt/37243 PR rtl-opt/37243
......
...@@ -4600,8 +4600,6 @@ alpha_split_lock_test_and_set (rtx retval, rtx mem, rtx val, rtx scratch) ...@@ -4600,8 +4600,6 @@ alpha_split_lock_test_and_set (rtx retval, rtx mem, rtx val, rtx scratch)
enum machine_mode mode = GET_MODE (mem); enum machine_mode mode = GET_MODE (mem);
rtx label, x, cond = gen_lowpart (DImode, scratch); rtx label, x, cond = gen_lowpart (DImode, scratch);
emit_insn (gen_memory_barrier ());
label = gen_rtx_LABEL_REF (DImode, gen_label_rtx ()); label = gen_rtx_LABEL_REF (DImode, gen_label_rtx ());
emit_label (XEXP (label, 0)); emit_label (XEXP (label, 0));
...@@ -4611,6 +4609,8 @@ alpha_split_lock_test_and_set (rtx retval, rtx mem, rtx val, rtx scratch) ...@@ -4611,6 +4609,8 @@ alpha_split_lock_test_and_set (rtx retval, rtx mem, rtx val, rtx scratch)
x = gen_rtx_EQ (DImode, cond, const0_rtx); x = gen_rtx_EQ (DImode, cond, const0_rtx);
emit_unlikely_jump (x, label); emit_unlikely_jump (x, label);
emit_insn (gen_memory_barrier ());
} }
void void
...@@ -4649,7 +4649,6 @@ alpha_split_lock_test_and_set_12 (enum machine_mode mode, rtx dest, rtx addr, ...@@ -4649,7 +4649,6 @@ alpha_split_lock_test_and_set_12 (enum machine_mode mode, rtx dest, rtx addr,
mem = gen_rtx_MEM (DImode, align); mem = gen_rtx_MEM (DImode, align);
MEM_VOLATILE_P (mem) = 1; MEM_VOLATILE_P (mem) = 1;
emit_insn (gen_memory_barrier ());
label = gen_rtx_LABEL_REF (DImode, gen_label_rtx ()); label = gen_rtx_LABEL_REF (DImode, gen_label_rtx ());
emit_label (XEXP (label, 0)); emit_label (XEXP (label, 0));
...@@ -4673,6 +4672,8 @@ alpha_split_lock_test_and_set_12 (enum machine_mode mode, rtx dest, rtx addr, ...@@ -4673,6 +4672,8 @@ alpha_split_lock_test_and_set_12 (enum machine_mode mode, rtx dest, rtx addr,
x = gen_rtx_EQ (DImode, scratch, const0_rtx); x = gen_rtx_EQ (DImode, scratch, const0_rtx);
emit_unlikely_jump (x, label); emit_unlikely_jump (x, label);
emit_insn (gen_memory_barrier ());
} }
/* Adjust the cost of a scheduling dependency. Return the new cost of /* Adjust the cost of a scheduling dependency. Return the new cost of
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment