diff options
author | Richard Henderson <rth@cygnus.com> | 2000-04-22 11:47:52 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2000-04-22 11:47:52 -0700 |
commit | b2433fcde0f08059731043f5af3d1ad687a1fbba (patch) | |
tree | 224a74aedf2a76f794c1e8b618fa2c83f7f84084 /gcc/flow.c | |
parent | 6f81b1ade69b0a968ba6fe5ea1e633cb75a11db4 (diff) | |
download | gcc-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/flow.c')
-rw-r--r-- | gcc/flow.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -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); |