diff options
| author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-09-07 01:22:07 +0000 |
|---|---|---|
| committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-09-07 01:22:07 +0000 |
| commit | d2eef15bfd5afb4c864922ffa591fa3717269080 (patch) | |
| tree | 72b903b37e2a9bfaf45793f92cbe20081ee848c7 | |
| parent | c87678e495b4535561fdf3020c75211095ba77c7 (diff) | |
| download | ppe42-gcc-d2eef15bfd5afb4c864922ffa591fa3717269080.tar.gz ppe42-gcc-d2eef15bfd5afb4c864922ffa591fa3717269080.zip | |
* flow.c (insn_dead_p): Detect dead memory stores with auto increments.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36220 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/flow.c | 15 |
2 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f21bd1afe56..0214e8d4d99 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2000-09-06 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl> + + * flow.c (insn_dead_p): Detect dead memory stores with auto increments. + 2000-09-06 Kazu Hirata <kazu@hxi.com> * calls.c: Fix formatting. diff --git a/gcc/flow.c b/gcc/flow.c index 6f1ba7cf004..ca6cac2a0d5 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -3954,8 +3954,21 @@ insn_dead_p (pbi, x, call_ok, notes) temp = pbi->mem_set_list; while (temp) { - if (rtx_equal_p (XEXP (temp, 0), r)) + rtx mem = XEXP (temp, 0); + + if (rtx_equal_p (mem, r)) + return 1; +#ifdef AUTO_INC_DEC + /* Check if memory reference matches an auto increment. Only + post increment/decrement or modify are valid. */ + if (GET_MODE (mem) == GET_MODE (r) + && (GET_CODE (XEXP (mem, 0)) == POST_DEC + || GET_CODE (XEXP (mem, 0)) == POST_INC + || GET_CODE (XEXP (mem, 0)) == POST_MODIFY) + && GET_MODE (XEXP (mem, 0)) == GET_MODE (r) + && rtx_equal_p (XEXP (XEXP (mem, 0), 0), XEXP (r, 0))) return 1; +#endif temp = XEXP (temp, 1); } } |

