aboutsummaryrefslogtreecommitdiff
path: root/gcc/flow.c
diff options
context:
space:
mode:
authorJ"orn Rennecke <joern.rennecke@superh.com>2004-04-30 11:28:57 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2004-04-30 12:28:57 +0100
commite344dbf315197023671560d95663f162483c32f4 (patch)
tree12f6e7a9fa326b2cc4f21f968dbba068ed79ce10 /gcc/flow.c
parent65a939f7ac72e5ea2a631a321a04f754e0085641 (diff)
downloadgcc-e344dbf315197023671560d95663f162483c32f4.zip
gcc-e344dbf315197023671560d95663f162483c32f4.tar.gz
gcc-e344dbf315197023671560d95663f162483c32f4.tar.bz2
flow.c (propagate_one_insn): Call mark_set_regs for stack pointer updates too.
* flow.c (propagate_one_insn): Call mark_set_regs for stack pointer updates too. From-SVN: r81334
Diffstat (limited to 'gcc/flow.c')
-rw-r--r--gcc/flow.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/gcc/flow.c b/gcc/flow.c
index 686292c..1cd0823 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;