re PR rtl-optimization/38644 (Optimization flag -O1 -fschedule-insns2 causes wrong code)

2011-11-04  Jiangning Liu  <jiangning.liu@arm.com>

	PR rtl-optimization/38644
	* config/arm/arm.c (thumb1_expand_epilogue): Add memory barrier
	for epilogue having stack adjustment.

	testcase:
	* gcc.target/arm/stack-red-zone.c: New.

From-SVN: r180964
This commit is contained in:
Jiangning Liu 2011-11-04 16:50:04 +00:00 committed by Joey Ye
parent 92b4d64cd4
commit e98925f693
4 changed files with 25 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2011-11-04 Jiangning Liu <jiangning.liu@arm.com>
PR rtl-optimization/38644
* config/arm/arm.c (thumb1_expand_epilogue): Add memory barrier
for epilogue having stack adjustment.
2011-11-04 Georg-Johann Lay <avr@gjlay.de>
PR target/50931

View File

@ -22216,6 +22216,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)));

View File

@ -1,3 +1,8 @@
2011-11-04 Jiangning Liu <jiangning.liu@arm.com>
PR rtl-optimization/38644
* gcc.target/arm/stack-red-zone.c: New.
2011-11-04 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/48420

View File

@ -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;
}