summaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-03-06 21:41:37 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-03-06 21:41:37 +0100
commit2728bf8f131f42c43cc4b309bf4d949a0bea601d (patch)
tree26d9143b9f0c8efc23a075271e91492c87be6419 /gcc/combine.c
parent284ee475e1c239b9d74bd2c5fc7dde457c9db4f7 (diff)
re PR target/84710 (ICE: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:1896 with -O -fno-forward-propagate)
PR target/84710 * combine.c (try_combine): Use reg_or_subregno instead of handling just paradoxical SUBREGs and REGs. * gcc.dg/pr84710.c: New test. From-SVN: r258301
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index a4efd11703c..c9105ed02b3 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -4283,12 +4283,8 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0,
if (GET_CODE (x) == PARALLEL)
x = XVECEXP (newi2pat, 0, 0);
- /* It can only be a SET of a REG or of a paradoxical SUBREG of a REG. */
- x = SET_DEST (x);
- if (paradoxical_subreg_p (x))
- x = SUBREG_REG (x);
-
- unsigned int regno = REGNO (x);
+ /* It can only be a SET of a REG or of a SUBREG of a REG. */
+ unsigned int regno = reg_or_subregno (SET_DEST (x));
bool done = false;
for (rtx_insn *insn = NEXT_INSN (i3);