aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2001-12-06 02:44:57 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2001-12-05 21:44:57 -0500
commitb5ed05aac936bf0f5196aeb9bb6995d724b00119 (patch)
tree5a614ea9a6af080379f728f06077fca1b8c1d098 /gcc/function.c
parentf3465a44453eb234979d5ee462a2a7f38401e2d0 (diff)
downloadgcc-b5ed05aac936bf0f5196aeb9bb6995d724b00119.zip
gcc-b5ed05aac936bf0f5196aeb9bb6995d724b00119.tar.gz
gcc-b5ed05aac936bf0f5196aeb9bb6995d724b00119.tar.bz2
function.c (keep_stack_depressed): Check global_live_at_start of EXIT_BLOCK for temp register and verify it isn't...
* function.c (keep_stack_depressed): Check global_live_at_start of EXIT_BLOCK for temp register and verify it isn't in equiv_reg_src. From-SVN: r47706
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c7
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)