summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-07 01:22:07 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-07 01:22:07 +0000
commitd2eef15bfd5afb4c864922ffa591fa3717269080 (patch)
tree72b903b37e2a9bfaf45793f92cbe20081ee848c7
parentc87678e495b4535561fdf3020c75211095ba77c7 (diff)
downloadppe42-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/ChangeLog4
-rw-r--r--gcc/flow.c15
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);
}
}
OpenPOWER on IntegriCloud