aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-04-25 15:10:01 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2018-04-25 15:10:01 +0200
commitb15b6fc56478c6243e5776d04c23565ebba87e68 (patch)
tree794d1758d03e521bfe63f3d94d05b87930c0bb51 /gcc/expr.c
parentbe3830f845753a70a38599f3d963a5cbbedcd306 (diff)
downloadgcc-b15b6fc56478c6243e5776d04c23565ebba87e68.zip
gcc-b15b6fc56478c6243e5776d04c23565ebba87e68.tar.gz
gcc-b15b6fc56478c6243e5776d04c23565ebba87e68.tar.bz2
re PR middle-end/85414 (ICE: in ix86_expand_prologue, at config/i386/i386.c:13810 with -Og -fgcse)
PR middle-end/85414 * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND, case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to gen_lowpart_no_emit. From-SVN: r259649
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index c9e6bf2..9dd0e60 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -233,7 +233,10 @@ convert_move (rtx to, rtx from, int unsignedp)
&& (GET_MODE_PRECISION (subreg_promoted_mode (from))
>= GET_MODE_PRECISION (to_int_mode))
&& SUBREG_CHECK_PROMOTED_SIGN (from, unsignedp))
- from = gen_lowpart (to_int_mode, from), from_mode = to_int_mode;
+ {
+ from = gen_lowpart (to_int_mode, SUBREG_REG (from));
+ from_mode = to_int_mode;
+ }
gcc_assert (GET_CODE (to) != SUBREG || !SUBREG_PROMOTED_VAR_P (to));