aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1993-06-08 14:57:08 -0700
committerJim Wilson <wilson@gcc.gnu.org>1993-06-08 14:57:08 -0700
commite6726b1f48c83bffa51c002e3eb6edb0fcfba4da (patch)
treed7acbdb735b5556f64f4ebb8992702211ef9204b
parent68f68b904268d8eaa46103a7211b9be4ca6515c8 (diff)
downloadgcc-e6726b1f48c83bffa51c002e3eb6edb0fcfba4da.zip
gcc-e6726b1f48c83bffa51c002e3eb6edb0fcfba4da.tar.gz
gcc-e6726b1f48c83bffa51c002e3eb6edb0fcfba4da.tar.bz2
(move_movables): Delete REG_EQUAL notes that describe a
non loop invariant value. From-SVN: r4653
-rw-r--r--gcc/loop.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index 84a6fdf..ad82384 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -1824,6 +1824,16 @@ move_movables (movables, threshold, insn_count, loop_start, end, nregs)
REG_NOTES (i1) = REG_NOTES (p);
+ /* If there is a REG_EQUAL note present whose value is
+ not loop invariant, then delete it, since it may
+ cause problems with later optimization passes.
+ It is possible for cse to create such notes
+ like this as a result of record_jump_cond. */
+
+ if ((temp = find_reg_note (i1, REG_EQUAL, NULL_RTX))
+ && ! invariant_p (XEXP (temp, 0)))
+ remove_note (i1, temp);
+
if (new_start == 0)
new_start = i1;