(modregno_adjust): Fixed case when reg_renumber invalid.
authorRichard Kenner <kenner@gcc.gnu.org>
Sun, 2 Feb 1997 11:08:11 +0000 (06:08 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Sun, 2 Feb 1997 11:08:11 +0000 (06:08 -0500)
From-SVN: r13577

gcc/config/1750a/1750a.c

index 0c10b6ddc736c164449c37a71fd41b00b1b984e5..c82a872a16318c61e6e3b62f940af3d554ea1ebe 100644 (file)
@@ -204,12 +204,15 @@ mod_regno_adjust (instr, op)
   char *r = (!strncmp (instr, "dvr", 3) ? "r" : "");
   int modregno_gcc = REGNO (op[3]), modregno_1750 = REGNO (op[0]) + 1;
 
-  if (modregno_gcc == modregno_1750 || (reg_renumber != NULL
-        && reg_renumber[modregno_gcc] == reg_renumber[modregno_1750]))
+  if (modregno_gcc == modregno_1750
+      || (reg_renumber != NULL
+         && reg_renumber[modregno_gcc] >= 0
+         && reg_renumber[modregno_gcc] == reg_renumber[modregno_1750]))
     sprintf (outstr, "%s r%%0,%s%%2", instr, r);
   else
     sprintf (outstr, "lr r%d,r%d\n\t%s r%%0,%s%%2\n\txwr r%d,r%d",
-       modregno_gcc, modregno_1750, instr, r, modregno_1750, modregno_gcc);
+            modregno_gcc, modregno_1750, instr, r, modregno_1750,
+            modregno_gcc);
   return outstr;
 }