diff options
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/function.c b/gcc/function.c index 82a71d3..8c26a7e 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -7241,7 +7241,12 @@ keep_stack_depressed (seq) if (HARD_REGNO_MODE_OK (regno, Pmode) && !fixed_regs[regno] && TEST_HARD_REG_BIT (regs_invalidated_by_call, regno) - && !FUNCTION_VALUE_REGNO_P (regno)) + && !REGNO_REG_SET_P (EXIT_BLOCK_PTR->global_live_at_start, + regno) + && !refers_to_regno_p (regno, + regno + HARD_REGNO_NREGS (regno, + Pmode), + info.equiv_reg_src, NULL)) break; if (regno == FIRST_PSEUDO_REGISTER) |