aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-04-22 11:47:52 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-04-22 11:47:52 -0700
commitb2433fcde0f08059731043f5af3d1ad687a1fbba (patch)
tree224a74aedf2a76f794c1e8b618fa2c83f7f84084 /gcc
parent6f81b1ade69b0a968ba6fe5ea1e633cb75a11db4 (diff)
downloadgcc-b2433fcde0f08059731043f5af3d1ad687a1fbba.zip
gcc-b2433fcde0f08059731043f5af3d1ad687a1fbba.tar.gz
gcc-b2433fcde0f08059731043f5af3d1ad687a1fbba.tar.bz2
* flow.c (mark_used_reg): Hack around rs6000 eliminable pic reg.
From-SVN: r33342
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/flow.c9
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2fcc64a..7b3844a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2000-04-22 Richard Henderson <rth@cygnus.com>
+ * flow.c (mark_used_reg): Hack around rs6000 eliminable pic reg.
+
+2000-04-22 Richard Henderson <rth@cygnus.com>
+
* diagnostic.c (init_output_buffer): Don't initialize format_args.
(output_clear): Likewise.
(output_printf): Use va_copy.
diff --git a/gcc/flow.c b/gcc/flow.c
index 9f7537e..24ae92c 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -4473,12 +4473,15 @@ mark_used_reg (pbi, reg, cond, insn)
be eliminated, reload will set it live at that point.
Otherwise, record that this function uses this register. */
+ /* ??? The PPC backend tries to "eliminate" on the pic
+ register to itself. This should be fixed. In the mean
+ time, hack around it. */
- if (! TEST_HARD_REG_BIT (elim_reg_set, regno))
+ if (! (TEST_HARD_REG_BIT (elim_reg_set, regno)
+ && (regno == FRAME_POINTER_REGNUM
+ || regno == ARG_POINTER_REGNUM)))
{
int n = HARD_REGNO_NREGS (regno, GET_MODE (reg));
- if (n == 0)
- n = 1;
do
regs_ever_live[regno + --n] = 1;
while (n > 0);