summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2004-04-30 11:28:57 +0000
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2004-04-30 11:28:57 +0000
commitb0345ee634fb5470bc98363385dea8b06f11e6f1 (patch)
tree12f6e7a9fa326b2cc4f21f968dbba068ed79ce10
parent9c29106490b2034be62de4c648fe622220e2670d (diff)
downloadppe42-gcc-b0345ee634fb5470bc98363385dea8b06f11e6f1.tar.gz
ppe42-gcc-b0345ee634fb5470bc98363385dea8b06f11e6f1.zip
* flow.c (propagate_one_insn): Call mark_set_regs for stack pointer
updates too. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81334 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/flow.c18
2 files changed, 17 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a972e93d6ea..cdf801a8629 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/flow.c b/gcc/flow.c
index 686292cf9ab..1cd08230c8e 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -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;
OpenPOWER on IntegriCloud