aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2011-11-05 07:35:46 +1030
committerAlan Modra <amodra@gcc.gnu.org>2011-11-05 07:35:46 +1030
commitc62c54419cf1bcdebbe2313b509e1892b85832d0 (patch)
tree53b6e7dea7473fd468fa2d51f8e7aa9570360c7b /gcc
parent7a83e5bc5546183af6934f623a568b11cca63f78 (diff)
downloadgcc-c62c54419cf1bcdebbe2313b509e1892b85832d0.zip
gcc-c62c54419cf1bcdebbe2313b509e1892b85832d0.tar.gz
gcc-c62c54419cf1bcdebbe2313b509e1892b85832d0.tar.bz2
reload1.c (gen_reload): Don't use REGNO on SUBREGs.
* reload1.c (gen_reload): Don't use REGNO on SUBREGs. * print-rtl.c (print_rtx): Don't segfault on negative regno. From-SVN: r180983
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/print-rtl.c7
-rw-r--r--gcc/reload1.c4
3 files changed, 10 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 438e33c..2b9e5b3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-11-05 Alan Modra <amodra@gmail.com>
+
+ * reload1.c (gen_reload): Don't use REGNO on SUBREGs.
+ * print-rtl.c (print_rtx): Don't segfault on negative regno.
+
2011-11-03 David S. Miller <davem@davemloft.net>
PR target/49965
diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c
index db9c0fb..edeeefa 100644
--- a/gcc/print-rtl.c
+++ b/gcc/print-rtl.c
@@ -466,11 +466,10 @@ print_rtx (const_rtx in_rtx)
const char *name;
#ifndef GENERATOR_FILE
- if (REG_P (in_rtx) && value < FIRST_PSEUDO_REGISTER)
- fprintf (outfile, " %d %s", REGNO (in_rtx),
- reg_names[REGNO (in_rtx)]);
+ if (REG_P (in_rtx) && (unsigned) value < FIRST_PSEUDO_REGISTER)
+ fprintf (outfile, " %d %s", value, reg_names[value]);
else if (REG_P (in_rtx)
- && value <= LAST_VIRTUAL_REGISTER)
+ && (unsigned) value <= LAST_VIRTUAL_REGISTER)
{
if (value == VIRTUAL_INCOMING_ARGS_REGNUM)
fprintf (outfile, " %d virtual-incoming-args", value);
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 04a839e..c9fb57b 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -8601,10 +8601,10 @@ gen_reload (rtx out, rtx in, int opnum, enum reload_type type)
rtx loc = get_secondary_mem (in, GET_MODE (out), opnum, type);
if (GET_MODE (loc) != GET_MODE (out))
- out = gen_rtx_REG (GET_MODE (loc), REGNO (out));
+ out = gen_rtx_REG (GET_MODE (loc), reg_or_subregno (out));
if (GET_MODE (loc) != GET_MODE (in))
- in = gen_rtx_REG (GET_MODE (loc), REGNO (in));
+ in = gen_rtx_REG (GET_MODE (loc), reg_or_subregno (in));
gen_reload (loc, in, opnum, type);
gen_reload (out, loc, opnum, type);