diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-03-06 21:41:37 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-03-06 21:41:37 +0100 |
commit | 2728bf8f131f42c43cc4b309bf4d949a0bea601d (patch) | |
tree | 26d9143b9f0c8efc23a075271e91492c87be6419 /gcc/combine.c | |
parent | 284ee475e1c239b9d74bd2c5fc7dde457c9db4f7 (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.c | 8 |
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); |