On 1 July 2011 16:57, Dr. David Alan Gilbert <david.gilb...@linaro.org> wrote: > > 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.
Please resubmit with a proper changelog entry. Can you add a comment in the code to explain that this is to prevent speculative loads before the barrier ? cheers Ramana > > 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 >