diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 384fb53063d..e25d72f3b5c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-08-21 Richard Henderson + + * flow.c (calculate_global_regs_live): Mark frame pointer live + everywhere before reload. + 2000-08-21 Jim Wilson * real.c (ereal_from_int, ereal_from_uint, significand_size): Handle diff --git a/gcc/flow.c b/gcc/flow.c index e37512acc42..ad3403974a6 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -3191,6 +3191,12 @@ calculate_global_regs_live (blocks_in, blocks_out, flags) the case for blocks within infinite loops. */ SET_REGNO_REG_SET (new_live_at_end, STACK_POINTER_REGNUM); + /* Similarly for the frame pointer before reload. Any reference + to any pseudo before reload is a potential reference of the + frame pointer. */ + if (! reload_completed) + SET_REGNO_REG_SET (new_live_at_end, FRAME_POINTER_REGNUM); + /* Regs used in phi nodes are not included in global_live_at_start, since they are live only along a particular edge. Set those regs that are live because of a