aboutsummaryrefslogtreecommitdiff
path: root/gcc/jump.c
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2008-08-06 16:20:14 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2008-08-06 16:20:14 +0100
commite088f04bdb2331f7ec6ba0faa4eb2c64982e56c3 (patch)
treeb10889a27b1cc0c2c180bc4ea92acf3aa3f1f998 /gcc/jump.c
parent6f371a2e412f0384dcdc36ebd00c8597be74a098 (diff)
downloadgcc-e088f04bdb2331f7ec6ba0faa4eb2c64982e56c3.zip
gcc-e088f04bdb2331f7ec6ba0faa4eb2c64982e56c3.tar.gz
gcc-e088f04bdb2331f7ec6ba0faa4eb2c64982e56c3.tar.bz2
jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset for unrepresentable subregs or treat them as...
* jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset for unrepresentable subregs or treat them as equal to other regs or subregs with the same register number. From-SVN: r138804
Diffstat (limited to 'gcc/jump.c')
-rw-r--r--gcc/jump.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/jump.c b/gcc/jump.c
index 595363b..c0ab690 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -1552,12 +1552,22 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y)
if (reg_renumber[reg_x] >= 0)
{
+ if (!subreg_offset_representable_p (reg_renumber[reg_x],
+ GET_MODE (SUBREG_REG (x)),
+ byte_x,
+ GET_MODE (x)))
+ return 0;
reg_x = subreg_regno_offset (reg_renumber[reg_x],
GET_MODE (SUBREG_REG (x)),
byte_x,
GET_MODE (x));
byte_x = 0;
}
+ else if (!subreg_offset_representable_p (reg_x,
+ GET_MODE (SUBREG_REG (x)),
+ byte_x,
+ GET_MODE (x)))
+ return 0;
}
else
{
@@ -1573,12 +1583,22 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y)
if (reg_renumber[reg_y] >= 0)
{
+ if (!subreg_offset_representable_p (reg_renumber[reg_y],
+ GET_MODE (SUBREG_REG (y)),
+ byte_y,
+ GET_MODE (y)))
+ return 0;
reg_y = subreg_regno_offset (reg_renumber[reg_y],
GET_MODE (SUBREG_REG (y)),
byte_y,
GET_MODE (y));
byte_y = 0;
}
+ else if (!subreg_offset_representable_p (reg_y,
+ GET_MODE (SUBREG_REG (y)),
+ byte_y,
+ GET_MODE (y)))
+ return 0;
}
else
{