OSDN Git Service

2005-10-17 Paul Thomas <pault@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / reload.c
index 378db66..e55bf34 100644 (file)
@@ -5804,7 +5804,8 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context,
              if ((unsigned) CLASS_MAX_NREGS (class, GET_MODE (SUBREG_REG (x)))
                  > reg_class_size[class])
                {
-                 x = find_reloads_subreg_address (x, 0, opnum, type,
+                 x = find_reloads_subreg_address (x, 0, opnum, 
+                                                  ADDR_TYPE (type),
                                                   ind_levels, insn);
                  push_reload (x, NULL_RTX, loc, (rtx*) 0, class,
                               GET_MODE (x), VOIDmode, 0, 0, opnum, type);
@@ -5964,7 +5965,7 @@ find_reloads_subreg_address (rtx x, int force_replace, int opnum,
                }
 
              find_reloads_address (GET_MODE (tem), &tem, XEXP (tem, 0),
-                                   &XEXP (tem, 0), opnum, ADDR_TYPE (type),
+                                   &XEXP (tem, 0), opnum, type,
                                    ind_levels, insn);
 
              /* If this is not a toplevel operand, find_reloads doesn't see
@@ -6032,9 +6033,12 @@ subst_reloads (rtx insn)
             register refers to.  */
          if (GET_CODE (*r->where) == LABEL_REF
              && JUMP_P (insn))
-           REG_NOTES (insn) = gen_rtx_INSN_LIST (REG_LABEL,
-                                                 XEXP (*r->where, 0),
-                                                 REG_NOTES (insn));
+           {
+             REG_NOTES (insn) = gen_rtx_INSN_LIST (REG_LABEL,
+                                                   XEXP (*r->where, 0),
+                                                   REG_NOTES (insn));
+             JUMP_LABEL (insn) = XEXP (*r->where, 0);
+          }
 
          /* Encapsulate RELOADREG so its machine mode matches what
             used to be there.  Note that gen_lowpart_common will