On Wed, Nov 2, 2011 at 3:27 AM, Jiangning Liu <jiangning....@arm.com> wrote: > Hi, > > This patch is to fix PR38644 in ARM back-end. OK for trunk? > > For every detail, please refer to > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38644.
Ok in absence of any target maintainer objection within 24h. Thanks, Richard. > ChangeLog: > > 2011-11-2 Jiangning Liu <jiangning....@arm.com> > > PR rtl-optimization/38644 > * config/arm/arm.c (thumb1_expand_epilogue): Add memory barrier > for epilogue having stack adjustment. > > ChangeLog of testsuite: > > 2011-11-2 Jiangning Liu <jiangning....@arm.com> > > PR rtl-optimization/38644 > * gcc.target/arm/stack-red-zone.c: New. > > Thanks, > -Jiangning > > Patch: > > diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c > index f1ada6f..1f6fc26 > --- a/gcc/config/arm/arm.c > +++ b/gcc/config/arm/arm.c > @@ -22215,6 +22215,8 @@ thumb1_expand_epilogue (void) > gcc_assert (amount >= 0); > if (amount) > { > + emit_insn (gen_blockage ()); > + > if (amount < 512) > emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, > GEN_INT (amount))); > diff --git a/gcc/testsuite/gcc.target/arm/stack-red-zone.c > b/gcc/testsuite/gcc.target/arm/stack-red-zone.c > new file mode 100644 > index 0000000..b9f0f99 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/arm/stack-red-zone.c > @@ -0,0 +1,12 @@ > +/* No stack red zone. PR38644. */ > +/* { dg-options "-mthumb -O2" } */ > +/* { dg-final { scan-assembler "ldrb\[^\n\]*\\n\[\t \]*add\[\t \]*sp" } } > */ > + > +extern int doStreamReadBlock (int *, char *, int size, int); > + > +char readStream (int *s) > +{ > + char c = 0; > + doStreamReadBlock (s, &c, 1, *s); > + return c; > +} > > > > > >