OSDN Git Service

* reload1.c (gen_reload): Don't use REGNO on SUBREGs.
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 4 Nov 2011 21:05:46 +0000 (21:05 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 4 Nov 2011 21:05:46 +0000 (21:05 +0000)
* print-rtl.c (print_rtx): Don't segfault on negative regno.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180983 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/print-rtl.c
gcc/reload1.c

index 438e33c..2b9e5b3 100644 (file)
@@ -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
index db9c0fb..edeeefa 100644 (file)
@@ -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);
index 04a839e..c9fb57b 100644 (file)
@@ -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);