diff options
author | David Alan Gilbert <david.gilbert@linaro.org> | 2011-10-14 14:38:42 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2011-10-14 14:38:42 +0000 |
commit | 3e2a46fe397751855594e35cc6ef15b41794e0d9 (patch) | |
tree | 444d8a3bc8f3ca93bba0740fb74f5021cbe3e008 | |
parent | 80651d8e1cc65f26b5a2760aa965549f2b6f2dbb (diff) | |
download | gcc-3e2a46fe397751855594e35cc6ef15b41794e0d9.zip gcc-3e2a46fe397751855594e35cc6ef15b41794e0d9.tar.gz gcc-3e2a46fe397751855594e35cc6ef15b41794e0d9.tar.bz2 |
re PR target/48126 (arm_output_sync_loop: misplaced memory barrier)
gcc/
2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
PR target/48126
* config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
From-SVN: r179980
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6a141e5..83e5db5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org> + PR target/48126 + * config/arm/arm.c (arm_output_sync_loop): Move label before barrier. + +2011-10-14 David Alan Gilbert <david.gilbert@linaro.org> + * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1. 2011-10-14 Paolo Carlini <paolo.carlini@oracle.com> diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index ad733da..93386f0 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -24217,8 +24217,11 @@ arm_output_sync_loop (emit_f emit, } } - arm_process_output_memory_barrier (emit, NULL); + /* Note: label is before barrier so that in cmp failure case we still get + a barrier to stop subsequent loads floating upwards past the ldrex + PR target/48126. */ arm_output_asm_insn (emit, 1, operands, "%sLSYB%%=:", LOCAL_LABEL_PREFIX); + arm_process_output_memory_barrier (emit, NULL); } static rtx |