From: Vladimir Makarov Date: Thu, 10 Jan 2013 20:07:55 +0000 (+0000) Subject: PR rtl-optimization/pr55672 X-Git-Tag: upstream/12.2.0~71792 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f85021b02197bdd582e030c6e8ae8b9f221e776f;p=platform%2Fupstream%2Fgcc.git PR rtl-optimization/pr55672 2013-01-10 Vladimir Makarov PR rtl-optimization/pr55672 * lra-eliminations.c (mark_not_elimnable): Permit addition with const to be elimnable. 2013-01-10 Vladimir Makarov PR rtl-optimization/pr55672 * gcc.target/i386/pr55672.c: New. From-SVN: r195095 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 17554bd..58168c9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-01-10 Vladimir Makarov + + PR rtl-optimization/pr55672 + * lra-eliminations.c (mark_not_elimnable): Permit addition with + const to be elimnable. + 2013-01-10 David Edelsohn * configure.ac (HAVE_AS_TLS): Add check for powerpc-ibm-aix. diff --git a/gcc/lra-eliminations.c b/gcc/lra-eliminations.c index 24c58f6..807ac16 100644 --- a/gcc/lra-eliminations.c +++ b/gcc/lra-eliminations.c @@ -657,7 +657,7 @@ mark_not_eliminable (rtx x) case PRE_MODIFY: if (REG_P (XEXP (x, 0)) && REGNO (XEXP (x, 0)) < FIRST_PSEUDO_REGISTER) /* If we modify the source of an elimination rule, disable - it. Do the same if it is the source and not the hard frame + it. Do the same if it is the source and not the hard frame register. */ for (ep = reg_eliminate; ep < ®_eliminate[NUM_ELIMINABLE_REGS]; @@ -716,7 +716,10 @@ mark_not_eliminable (rtx x) ep < ®_eliminate[NUM_ELIMINABLE_REGS]; ep++) if (ep->to_rtx == SET_DEST (x) - && SET_DEST (x) != hard_frame_pointer_rtx) + && SET_DEST (x) != hard_frame_pointer_rtx + && (GET_CODE (SET_SRC (x)) != PLUS + || XEXP (SET_SRC (x), 0) != SET_DEST (x) + || ! CONST_INT_P (XEXP (SET_SRC (x), 1)))) setup_can_eliminate (ep, false); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6df9b9c..668dd36 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-01-10 Vladimir Makarov + + PR rtl-optimization/pr55672 + * gcc.target/i386/pr55672.c: New. + 2013-01-10 Jeff Law * gcc/dg/tree-ssa/vrp06.c: Tighten expected output. Make each diff --git a/gcc/testsuite/gcc.target/i386/pr55672.c b/gcc/testsuite/gcc.target/i386/pr55672.c new file mode 100644 index 0000000..6f1c898 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr55672.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-O -fstack-check=generic" } */ + +int main () +{ + int x[8]; + if (x[0] != 4) + __builtin_abort (); + return 0; +}