re PR middle-end/23135 (find_reloads_toplev -> find_reloads_subreg_address uses wrong...
authorJ"orn Rennecke <joern.rennecke@st.com>
Fri, 5 Aug 2005 16:06:35 +0000 (16:06 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Fri, 5 Aug 2005 16:06:35 +0000 (17:06 +0100)
PR middle-end/23135
* reload.c (find_reloads_subreg_address): Pass down TYPE
unchanged.  Change all callers except find_reloads_toplev.

From-SVN: r102772

gcc/ChangeLog
gcc/reload.c

index c332799..95076b9 100644 (file)
@@ -1,3 +1,9 @@
+2005-08-05  J"orn Rennecke <joern.rennecke@st.com>
+
+       PR middle-end/23135
+       * reload.c (find_reloads_subreg_address): Pass down TYPE
+       unchanged.  Change all callers except find_reloads_toplev.
+
 2005-08-05  Michael Matz  <matz@suse.de>
 
        * genattrtab.c (current_alternative_string): Remove.
index 378db66..c8e8c07 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