diff options
author | Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl> | 2000-09-07 03:22:07 +0200 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2000-09-06 19:22:07 -0600 |
commit | 4f4b88d0832c7279722b5dee73d9ce9f1704452f (patch) | |
tree | 72b903b37e2a9bfaf45793f92cbe20081ee848c7 /gcc/flow.c | |
parent | f725a3ec9b41893a046a05008afd789e26ca91ca (diff) | |
download | gcc-4f4b88d0832c7279722b5dee73d9ce9f1704452f.zip gcc-4f4b88d0832c7279722b5dee73d9ce9f1704452f.tar.gz gcc-4f4b88d0832c7279722b5dee73d9ce9f1704452f.tar.bz2 |
* flow.c (insn_dead_p): Detect dead memory stores with auto increments.
From-SVN: r36220
Diffstat (limited to 'gcc/flow.c')
-rw-r--r-- | gcc/flow.c | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -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); } } |