aboutsummaryrefslogtreecommitdiff
path: root/gcc/simplify-rtx.c
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2004-10-28 12:47:21 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2004-10-28 12:47:21 +0000
commitfd326ba823f7a8cbb2f7c47a2a3d15a8e098a976 (patch)
treea9bda2464d7b200ebd679487ccda3fef16f416b1 /gcc/simplify-rtx.c
parent4af46a327e490e1a24a353bc55f0d64631ba85de (diff)
downloadgcc-fd326ba823f7a8cbb2f7c47a2a3d15a8e098a976.zip
gcc-fd326ba823f7a8cbb2f7c47a2a3d15a8e098a976.tar.gz
gcc-fd326ba823f7a8cbb2f7c47a2a3d15a8e098a976.tar.bz2
re PR target/15286 (ICE cause by reload)
PR target/15286 * final.c (alter_subreg): Compute correct offset to use with paradoxical SUBREGs of memory operands. * recog.c (general_operand): Allow paradoxical SUBREGs of memory operands after reload. * simplify-rtx.c (simplify_gen_subreg): Fail if simplify_subreg has failed when passed a hard register. From-SVN: r89752
Diffstat (limited to 'gcc/simplify-rtx.c')
-rw-r--r--gcc/simplify-rtx.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 4af468a..e463fef 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -3789,7 +3789,8 @@ simplify_gen_subreg (enum machine_mode outermode, rtx op,
if (newx)
return newx;
- if (GET_CODE (op) == SUBREG || GET_MODE (op) == VOIDmode)
+ if (GET_CODE (op) == SUBREG || GET_MODE (op) == VOIDmode
+ || (REG_P (op) && REGNO (op) < FIRST_PSEUDO_REGISTER))
return NULL_RTX;
return gen_rtx_SUBREG (outermode, op, byte);