aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-eliminations.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-02-05 22:13:43 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2016-02-05 22:13:43 +0100
commit861c7bcd62bcbbf6e14311e18ba7293cc581e1ff (patch)
tree84543eae7a1c294a2636eed0bf90ff081233edf4 /gcc/lra-eliminations.c
parentb5c1c988528a8761d802e923fe0a94160810c732 (diff)
downloadgcc-861c7bcd62bcbbf6e14311e18ba7293cc581e1ff.zip
gcc-861c7bcd62bcbbf6e14311e18ba7293cc581e1ff.tar.gz
gcc-861c7bcd62bcbbf6e14311e18ba7293cc581e1ff.tar.bz2
re PR rtl-optimization/69691 (wrong code at -O2 on x86_64-linux-gnu)
PR rtl-optimization/69691 * lra-eliminations.c (move_plus_up): Don't add the addend twice. * gcc.c-torture/execute/pr69691.c: New test. From-SVN: r233187
Diffstat (limited to 'gcc/lra-eliminations.c')
-rw-r--r--gcc/lra-eliminations.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/lra-eliminations.c b/gcc/lra-eliminations.c
index 1494263..9ae5cfe 100644
--- a/gcc/lra-eliminations.c
+++ b/gcc/lra-eliminations.c
@@ -303,7 +303,8 @@ move_plus_up (rtx x)
subreg_lowpart_offset (x_mode,
subreg_reg_mode));
if (cst && CONSTANT_P (cst))
- return gen_rtx_PLUS (x_mode, lowpart_subreg (x_mode, subreg_reg,
+ return gen_rtx_PLUS (x_mode, lowpart_subreg (x_mode,
+ XEXP (subreg_reg, 0),
subreg_reg_mode), cst);
}
return x;