diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-03-08 16:45:38 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-03-08 16:45:38 -0500 |
commit | 5c23c401723bd1c663709d2ae3493bbeee02f9d1 (patch) | |
tree | 955c21bf02427414034ee6f0d87515e833a4d3e2 /gcc/reload1.c | |
parent | 82bb2b597d775a92172cc4d3832345a262fe8ce5 (diff) | |
download | gcc-5c23c401723bd1c663709d2ae3493bbeee02f9d1.zip gcc-5c23c401723bd1c663709d2ae3493bbeee02f9d1.tar.gz gcc-5c23c401723bd1c663709d2ae3493bbeee02f9d1.tar.bz2 |
*** empty log message ***
From-SVN: r422
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index e26cefe..c6f46b1 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -1367,6 +1367,20 @@ reload (first, global, dumpfile) } } + /* See if anything that happened changes which eliminations are valid. + For example, on the Sparc, whether or not the frame pointer can + be eliminated can depend on what registers have been used. We need + not check some conditions again (such as flag_omit_frame_pointer) + since they can't have changed. */ + + for (ep = reg_eliminate; ep < ®_eliminate[NUM_ELIMINABLE_REGS]; ep++) + if ((ep->from == FRAME_POINTER_REGNUM && FRAME_POINTER_REQUIRED) +#ifdef ELIMINABLE_REGS + || ! CAN_ELIMINATE (ep->from, ep->to) +#endif + ) + ep->can_eliminate = 0; + /* Look for the case where we have discovered that we can't replace register A with register B and that means that we will now be trying to replace register A with register C. This means we can |