diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-10-29 21:56:18 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-10-29 21:56:18 -0500 |
commit | 2a1f8b6bca3e10f7380a7165a3cb376a94ef6a39 (patch) | |
tree | b5dc894b3cfe44ac89be1c89db7e17565e8553af | |
parent | fe0f9c4bfb3209c6cfd18c690535147bc92739da (diff) | |
download | gcc-2a1f8b6bca3e10f7380a7165a3cb376a94ef6a39.zip gcc-2a1f8b6bca3e10f7380a7165a3cb376a94ef6a39.tar.gz gcc-2a1f8b6bca3e10f7380a7165a3cb376a94ef6a39.tar.bz2 |
(reload): If FP was eliminated, remove it from being live in any basic
block.
From-SVN: r2656
-rw-r--r-- | gcc/reload1.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index f1933d7..c065da8 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -1805,6 +1805,17 @@ reload (first, global, dumpfile) || caller_save_spill_class != NO_REGS) reload_as_needed (first, global); + /* If we were able to eliminate the frame pointer, show that it is no + longer live at the start of any basic block. If it ls live by + virtue of being in a pseudo, that pseudo will be marked live + and hence the frame pointer will be known to be live via that + pseudo. */ + + if (! frame_pointer_needed) + for (i = 0; i < n_basic_blocks; i++) + basic_block_live_at_start[i][FRAME_POINTER_REGNUM / REGSET_ELT_BITS] + &= ~ ((REGSET_ELT_TYPE) 1 << (FRAME_POINTER_REGNUM % REGSET_ELT_BITS)); + reload_in_progress = 0; /* Come here (with failure set nonzero) if we can't get enough spill regs |