OSDN Git Service

* function.c (keep_stack_depressed): Check global_live_at_start
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 Dec 2001 02:44:57 +0000 (02:44 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 Dec 2001 02:44:57 +0000 (02:44 +0000)
of EXIT_BLOCK for temp register and verify it isn't in equiv_reg_src.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47706 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/function.c

index d47d1db..ec150de 100644 (file)
@@ -1,3 +1,8 @@
+Wed Dec  5 19:18:53 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * 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.
+
 2001-12-05  David O'Brien  <obrien@FreeBSD.org>
 
        * config.gcc (powerpc-*-freebsd*): Use the proper tmake_file files,
index 82a71d3..8c26a7e 100644 (file)
@@ -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)