aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-10-23 17:26:12 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-10-23 17:26:12 -0700
commit8a959ea52ed701328f6e062950b43140792af5bb (patch)
treecd3bf8ff6e05f219a26d930a4b27e707ed66470f /gcc
parent964686defdd10bfddabeb0e077ec3906433a49c0 (diff)
downloadgcc-8a959ea52ed701328f6e062950b43140792af5bb.zip
gcc-8a959ea52ed701328f6e062950b43140792af5bb.tar.gz
gcc-8a959ea52ed701328f6e062950b43140792af5bb.tar.bz2
ia64.c (ia64_expand_prologue): Mark extra output registers as fixed.
* config/ia64/ia64.c (ia64_expand_prologue): Mark extra output registers as fixed. (ia64_function_epilogue): Undo output fixation. From-SVN: r37029
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/ia64/ia64.c14
2 files changed, 18 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9ba7546..1f6efff 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
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
define_insn_and_split in some obvious places.
(lda): Remove.
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 6d13ef8..dcf3ce1 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -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;
}