OSDN Git Service

* flow.c (propagate_one_insn): Call mark_set_regs for stack pointer
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Apr 2004 11:28:57 +0000 (11:28 +0000)
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Apr 2004 11:28:57 +0000 (11:28 +0000)
updates too.

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

gcc/ChangeLog
gcc/flow.c

index a972e93..cdf801a 100644 (file)
@@ -1,3 +1,8 @@
+2004-04-30  J"orn Rennecke <joern.rennecke@superh.com>
+
+       * flow.c (propagate_one_insn): Call mark_set_regs for stack pointer
+       updates too.
+
 2004-04-30  Paul Brook  <paul@codesourcery.com>
 
        * arm.c (arm_needs_doubleword_align): Use mode alignment.
index 686292c..1cd0823 100644 (file)
@@ -1707,12 +1707,18 @@ propagate_one_insn (struct propagate_block_info *pbi, rtx insn)
           && GET_CODE (SET_SRC (PATTERN (insn))) == PLUS
           && XEXP (SET_SRC (PATTERN (insn)), 0) == stack_pointer_rtx
           && GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 1)) == CONST_INT)
-    /* We have an insn to pop a constant amount off the stack.
-       (Such insns use PLUS regardless of the direction of the stack,
-       and any insn to adjust the stack by a constant is always a pop.)
-       These insns, if not dead stores, have no effect on life, though
-       they do have an effect on the memory stores we are tracking.  */
-    invalidate_mems_from_set (pbi, stack_pointer_rtx);
+    {
+      /* We have an insn to pop a constant amount off the stack.
+         (Such insns use PLUS regardless of the direction of the stack,
+         and any insn to adjust the stack by a constant is always a pop
+        or part of a push.)
+         These insns, if not dead stores, have no effect on life, though
+         they do have an effect on the memory stores we are tracking.  */
+      invalidate_mems_from_set (pbi, stack_pointer_rtx);
+      /* Still, we need to update local_set, lest ifcvt.c:dead_or_predicable
+        concludes that the stack pointer is not modified.  */
+      mark_set_regs (pbi, PATTERN (insn), insn);
+    }
   else
     {
       rtx note;