diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-10-29 21:55:53 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-10-29 21:55:53 -0500 |
commit | fe0f9c4bfb3209c6cfd18c690535147bc92739da (patch) | |
tree | 45532c78346ea0210a84a97ec19c65681b6a4b7b | |
parent | e28d6e8a917f47a50d6d29c484d6609a75450966 (diff) | |
download | gcc-fe0f9c4bfb3209c6cfd18c690535147bc92739da.zip gcc-fe0f9c4bfb3209c6cfd18c690535147bc92739da.tar.gz gcc-fe0f9c4bfb3209c6cfd18c690535147bc92739da.tar.bz2 |
(life_analysis): Mark FP live at end of function.
From-SVN: r2655
-rw-r--r-- | gcc/flow.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -861,6 +861,20 @@ life_analysis (f, nregs) |= (REGSET_ELT_TYPE) 1 << (STACK_POINTER_REGNUM % REGSET_ELT_BITS); } + /* Mark the frame pointer is needed at the end of the function. If + we end up eliminating it, it will be removed from the live list + of each basic block by reload. */ + + if (n_basic_blocks > 0) + { + basic_block_live_at_end[n_basic_blocks - 1] + [FRAME_POINTER_REGNUM / REGSET_ELT_BITS] + |= (REGSET_ELT_TYPE) 1 << (FRAME_POINTER_REGNUM % REGSET_ELT_BITS); + basic_block_new_live_at_end[n_basic_blocks - 1] + [FRAME_POINTER_REGNUM / REGSET_ELT_BITS] + |= (REGSET_ELT_TYPE) 1 << (FRAME_POINTER_REGNUM % REGSET_ELT_BITS); + } + /* Mark all global registers as being live at the end of the function since they may be referenced by our caller. */ |