This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Patch 3/3] ARM 64 bit atomic operations
- From: "Dr. David Alan Gilbert" <david dot gilbert at linaro dot org>
- To: gcc-patches at gcc dot gnu dot org
- Cc: patches at linaro dot org
- Date: Fri, 1 Jul 2011 16:57:11 +0100
- Subject: [Patch 3/3] ARM 64 bit atomic operations
- References: <20110701155254.GA5242@davesworkthinkpad>
As per pr/48126 Michael Edwards spotted that in the case where
the compare fails in the cmpxchg, the barrier at the end wasn't taken
theoretically allowing a following load to float up above the load
value compared.
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 057f9ba..39057d2 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -23531,8 +23626,8 @@ arm_output_sync_loop (emit_f emit,
}
}
- arm_process_output_memory_barrier (emit, NULL);
arm_output_asm_insn (emit, 1, operands, "%sLSYB%%=:", LOCAL_LABEL_PREFIX);
+ arm_process_output_memory_barrier (emit, NULL);
}
static rtx