ia64.c (ia64_expand_prologue): Mark extra output registers as fixed.
authorRichard Henderson <rth@cygnus.com>
Tue, 24 Oct 2000 00:26:12 +0000 (17:26 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 24 Oct 2000 00:26:12 +0000 (17:26 -0700)
        * config/ia64/ia64.c (ia64_expand_prologue): Mark extra
        output registers as fixed.
        (ia64_function_epilogue): Undo output fixation.

From-SVN: r37029

gcc/ChangeLog
gcc/config/ia64/ia64.c

index 9ba7546563cbe89a6021b0e3db54c31d44f7ecc2..1f6efffaa891d34eb519cd5666b06e3f109c9301 100644 (file)
@@ -1,3 +1,9 @@
+2000-10-23  Richard Henderson  <rth@cygnus.com>
+
+       * config/ia64/ia64.c (ia64_expand_prologue): Mark extra 
+       output registers as fixed.
+       (ia64_function_epilogue): Undo output fixation.
+
 2000-10-23  Richard Henderson  <rth@cygnus.com>
 
        * config/alpha/alpha.md: Add names for all unnamed insns; use
index 6d13ef8c7ef9772852ec380b78f1b218620cde4c..dcf3ce17ff7bad375938cc796eb209704ffb171d 100644 (file)
@@ -1852,6 +1852,12 @@ ia64_expand_prologue ()
        reg_names[OUT_REG (i)] = ia64_reg_numbers[inputs + locals + i];
     }
 
+  /* ??? Temporarily mark the remaining output registers fixed, so
+     that the register renaming pass does not try to used them after
+     we've fixed the size of the register frame.  */
+  for (i = current_frame_info.n_output_regs; i < 8; ++i)
+    fixed_regs[OUT_REG (i)] = 1;
+
   /* Set the frame pointer register name.  The regnum is logically loc79,
      but of course we'll not have allocated that many locals.  Rather than
      worrying about renumbering the existing rtxs, we adjust the name.  */
@@ -2475,6 +2481,8 @@ ia64_function_epilogue (file, size)
      FILE *file ATTRIBUTE_UNUSED;
      int size ATTRIBUTE_UNUSED;
 {
+  int i;
+
   /* Reset from the function's potential modifications.  */
   XINT (return_address_pointer_rtx, 0) = RETURN_ADDRESS_POINTER_REGNUM;
 
@@ -2487,8 +2495,6 @@ ia64_function_epilogue (file, size)
     }
   if (! TARGET_REG_NAMES)
     {
-      int i;
-
       for (i = 0; i < current_frame_info.n_input_regs; i++)
        reg_names[IN_REG (i)] = ia64_input_reg_names[i];
       for (i = 0; i < current_frame_info.n_local_regs; i++)
@@ -2496,6 +2502,10 @@ ia64_function_epilogue (file, size)
       for (i = 0; i < current_frame_info.n_output_regs; i++)
        reg_names[OUT_REG (i)] = ia64_output_reg_names[i];
     }
+
+  for (i = 0; i < 8; ++i)
+    fixed_regs[OUT_REG (i)] = 0;
+
   current_frame_info.initialized = 0;
 }