aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2001-10-30 00:19:58 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2001-10-29 19:19:58 -0500
commitcd7c9015a6306338ea15c1f8a94b8e1be87ae0d5 (patch)
treeee0f3b7f02f54b596230f73fb1f309766c065aa0 /gcc
parentf3597919c54311f783cb87bf51aecd61f47f8b9c (diff)
downloadgcc-cd7c9015a6306338ea15c1f8a94b8e1be87ae0d5.zip
gcc-cd7c9015a6306338ea15c1f8a94b8e1be87ae0d5.tar.gz
gcc-cd7c9015a6306338ea15c1f8a94b8e1be87ae0d5.tar.bz2
reload1.c (eliminate_regs): Test for reg_renumber being allocated before referencing it.
* reload1.c (eliminate_regs): Test for reg_renumber being allocated before referencing it. From-SVN: r46623
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/reload1.c9
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d264baf..f717f53 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Mon Oct 29 19:22:07 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * reload1.c (eliminate_regs): Test for reg_renumber being allocated
+ before referencing it.
+
2001-10-26 DJ Delorie <dj@redhat.com>
* config/rs6000/sysv4.h (LINK_SPEC): Allow -msdata=none to
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 2947f1a..c5158c7 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -2298,8 +2298,8 @@ eliminate_regs (x, mem_mode, insn)
return plus_constant (ep->to_rtx, ep->previous_offset);
}
- else if (reg_renumber[regno] < 0 && reg_equiv_constant
- && reg_equiv_constant[regno]
+ else if (reg_renumber && reg_renumber[regno] < 0
+ && reg_equiv_constant && reg_equiv_constant[regno]
&& ! CONSTANT_P (reg_equiv_constant[regno]))
return eliminate_regs (copy_rtx (reg_equiv_constant[regno]),
mem_mode, insn);
@@ -2365,7 +2365,7 @@ eliminate_regs (x, mem_mode, insn)
rtx new0 = eliminate_regs (XEXP (x, 0), mem_mode, insn);
rtx new1 = eliminate_regs (XEXP (x, 1), mem_mode, insn);
- if (new0 != XEXP (x, 0) || new1 != XEXP (x, 1))
+ if (reg_renumber && (new0 != XEXP (x, 0) || new1 != XEXP (x, 1)))
{
/* If one side is a PLUS and the other side is a pseudo that
didn't get a hard register but has a reg_equiv_constant,
@@ -2473,7 +2473,8 @@ eliminate_regs (x, mem_mode, insn)
{
new = eliminate_regs (XEXP (x, 1), mem_mode, insn);
if (new != XEXP (x, 1))
- return gen_rtx_fmt_ee (GET_CODE (x), GET_MODE (x), XEXP (x, 0), new);
+ return
+ gen_rtx_fmt_ee (GET_CODE (x), GET_MODE (x), XEXP (x, 0), new);
}
return x;