aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHerman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>2000-09-07 03:22:07 +0200
committerJeff Law <law@gcc.gnu.org>2000-09-06 19:22:07 -0600
commit4f4b88d0832c7279722b5dee73d9ce9f1704452f (patch)
tree72b903b37e2a9bfaf45793f92cbe20081ee848c7 /gcc
parentf725a3ec9b41893a046a05008afd789e26ca91ca (diff)
downloadgcc-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')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/flow.c15
2 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f21bd1a..0214e8d 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 6f1ba7c..ca6cac2 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);
}
}