OSDN Git Service

(reload): Move assign_stack_local call into main loop.
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Feb 1997 21:37:59 +0000 (21:37 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Feb 1997 21:37:59 +0000 (21:37 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@13671 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/reload1.c

index 591f489..30f97c4 100644 (file)
@@ -747,11 +747,6 @@ reload (first, global, dumpfile)
   for (i = LAST_VIRTUAL_REGISTER + 1; i < max_regno; i++)
     alter_reg (i, -1);
 
-  /* Round size of stack frame to BIGGEST_ALIGNMENT.  This must be done here
-     because the stack size may be a part of the offset computation for
-     register elimination.   */
-  assign_stack_local (BLKmode, 0, 0);
-
   /* If we have some registers we think can be eliminated, scan all insns to
      see if there is an insn that sets one of these registers to something
      other than itself plus a constant.  If so, the register cannot be
@@ -861,7 +856,7 @@ reload (first, global, dumpfile)
       rtx max_groups_insn[N_REG_CLASSES];
       rtx max_nongroups_insn[N_REG_CLASSES];
       rtx x;
-      HOST_WIDE_INT starting_frame_size = get_frame_size ();
+      HOST_WIDE_INT starting_frame_size;
       int previous_frame_pointer_needed = frame_pointer_needed;
       static char *reg_class_names[] = REG_CLASS_NAMES;
 
@@ -883,6 +878,14 @@ reload (first, global, dumpfile)
         changes from 0 to 1 in this pass.  */
       new_basic_block_needs = 0;
 
+      /* Round size of stack frame to BIGGEST_ALIGNMENT.  This must be done
+        here because the stack size may be a part of the offset computation
+        for register elimination, and there might have been new stack slots
+        created in the last iteration of this loop.   */
+      assign_stack_local (BLKmode, 0, 0);
+
+      starting_frame_size = get_frame_size ();
+
       /* Reset all offsets on eliminable registers to their initial values.  */
 #ifdef ELIMINABLE_REGS
       for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)