aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-09-08 16:42:18 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-09-08 16:42:18 -0700
commit9831d6406274d4bfbdf0106976718ac08b472dd9 (patch)
tree01131e6136aef32fd853c3e9f7a9176a62fd99c5 /gcc
parentb6b4c6c6f9aef8cdcf37eb3c2518eff0b68a787f (diff)
downloadgcc-9831d6406274d4bfbdf0106976718ac08b472dd9.zip
gcc-9831d6406274d4bfbdf0106976718ac08b472dd9.tar.gz
gcc-9831d6406274d4bfbdf0106976718ac08b472dd9.tar.bz2
* flow.c (new_insn_dead_notes): Don't early out for preexisting regs.
From-SVN: r29217
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/flow.c13
2 files changed, 17 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index abf7806..8f47f95 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Wed Sep 8 16:41:27 1999 Richard Henderson <rth@cygnus.com>
+
+ * flow.c (new_insn_dead_notes): Don't early out for preexisting regs.
+
Wed Sep 8 16:07:52 1999 Richard Henderson <rth@cygnus.com>
* gengenrtl.c (CONST_DOUBLE_FORMAT): Take the size REAL_ARITHMETIC
diff --git a/gcc/flow.c b/gcc/flow.c
index 60be87a..bd42a56bc 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -5351,6 +5351,7 @@ new_insn_dead_notes (pat, insn, first, last, orig_first_insn, orig_last_insn)
if (GET_CODE (dest) == REG)
{
+#if 0
/* If the original insns already used this register, we may not
add new notes for it. One example for a replacement that
needs this test is when a multi-word memory access with
@@ -5370,6 +5371,17 @@ new_insn_dead_notes (pat, insn, first, last, orig_first_insn, orig_last_insn)
REG_DEAD notes. This can probably be accurately done by
calling mark_referenced_resources() on the old stream before
replacing the old insns. */
+ /* ??? The conclusion reached here -- that we can't add DEAD notes
+ when the register is preexisting -- is false. I can't envision
+ a sequence postulated above that wouldn't be properly handled
+ by the code below. In the meantime, consider the 1->2 split
+
+ (set (reg:SI 100) (ne:SI (reg:SI 100) (const_int 0)))
+ to
+ (set (reg:CC icc) (compare:CC (reg:SI 100) (const_int 0)))
+ (set (reg:SI 100) (ne:SI (reg:CC icc) (const_int 0)))
+
+ We do in fact need a new DEAD note on the first insn for reg 100. */
for (tem = orig_first_insn; tem != NULL_RTX; tem = NEXT_INSN (tem))
{
@@ -5379,6 +5391,7 @@ new_insn_dead_notes (pat, insn, first, last, orig_first_insn, orig_last_insn)
if (tem == orig_last_insn)
break;
}
+#endif
/* So it's a new register, presumably only used within this
group of insns. Find the last insn in the set of new insns