aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-eliminations.c
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2013-04-22 14:26:51 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2013-04-22 14:26:51 +0000
commit88a581daa7f2c350e061b12db8ed24a0417a6058 (patch)
tree972114b4e0989e2e816099da413dd707f4b716fd /gcc/lra-eliminations.c
parent92be22dc7442dd9a62f5a33d41bc424b16570456 (diff)
downloadgcc-88a581daa7f2c350e061b12db8ed24a0417a6058.zip
gcc-88a581daa7f2c350e061b12db8ed24a0417a6058.tar.gz
gcc-88a581daa7f2c350e061b12db8ed24a0417a6058.tar.bz2
re PR target/57018 (Miscompilation of bison 2.7.1 under "-Os -fomit-frame-pointer")
2013-04-22 Vladimir Makarov <vmakarov@redhat.com> PR target/57018 * lra-eliminations.c (mark_not_eliminable): Prevent elimination of a set sp if no stack realignment. 2013-04-22 Vladimir Makarov <vmakarov@redhat.com> PR target/57018 * gcc.target/i386/pr57018.c: New test. From-SVN: r198140
Diffstat (limited to 'gcc/lra-eliminations.c')
-rw-r--r--gcc/lra-eliminations.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/lra-eliminations.c b/gcc/lra-eliminations.c
index b8ec69f..27a5d75 100644
--- a/gcc/lra-eliminations.c
+++ b/gcc/lra-eliminations.c
@@ -716,7 +716,9 @@ mark_not_eliminable (rtx x)
ep++)
if (ep->to_rtx == SET_DEST (x)
&& SET_DEST (x) != hard_frame_pointer_rtx
- && (GET_CODE (SET_SRC (x)) != PLUS
+ && (! (SUPPORTS_STACK_ALIGNMENT && stack_realign_fp
+ && REGNO (ep->to_rtx) == STACK_POINTER_REGNUM)
+ || 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);