diff options
author | amylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-04-30 11:28:57 +0000 |
---|---|---|
committer | amylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-04-30 11:28:57 +0000 |
commit | b0345ee634fb5470bc98363385dea8b06f11e6f1 (patch) | |
tree | 12f6e7a9fa326b2cc4f21f968dbba068ed79ce10 | |
parent | 9c29106490b2034be62de4c648fe622220e2670d (diff) | |
download | ppe42-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/flow.c | 18 |
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; |