From: Joey Ye Date: Tue, 19 Jun 2012 03:01:10 +0000 (+0000) Subject: backport: re PR target/48126 (arm_output_sync_loop: misplaced memory barrier) X-Git-Tag: releases/gcc-4.6.4~486 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e6a26d09caf3218bbc335bfb2275998518e37870;p=thirdparty%2Fgcc.git backport: re PR target/48126 (arm_output_sync_loop: misplaced memory barrier) 2012-06-18 Joey Ye Backported from mainline 2011-10-14 David Alan Gilbert PR target/48126 * config/arm/arm.c (arm_output_sync_loop): Move label before barrier. From-SVN: r188766 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 943fcd5a84dc..6a30d39d8d5a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2012-06-18 Joey Ye + + Backported from mainline + 2011-10-14 David Alan Gilbert + + PR target/48126 + * config/arm/arm.c (arm_output_sync_loop): Move label before barrier. + 2012-06-17 Uros Bizjak Backport from mainline: diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index a5edf04b9ed6..db2d723ba976 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -23423,8 +23423,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