aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1995-05-17 14:53:11 -0700
committerJim Wilson <wilson@gcc.gnu.org>1995-05-17 14:53:11 -0700
commit01e7bd9ad266390ee411603018a015a4cd2a0d4c (patch)
treeea8baa9d98c9436015adaa2cc31f61771e648ac3
parenta25ee33216ab0b3c0ace1cb717d2434a0a7ddd8f (diff)
downloadgcc-01e7bd9ad266390ee411603018a015a4cd2a0d4c.zip
gcc-01e7bd9ad266390ee411603018a015a4cd2a0d4c.tar.gz
gcc-01e7bd9ad266390ee411603018a015a4cd2a0d4c.tar.bz2
(unroll_loop): Increment copy_start_luid if copy_start
is loop_start. From-SVN: r9736
-rw-r--r--gcc/unroll.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/unroll.c b/gcc/unroll.c
index a08cfd1..6dd9760 100644
--- a/gcc/unroll.c
+++ b/gcc/unroll.c
@@ -735,6 +735,12 @@ unroll_loop (loop_end, insn_count, loop_start, end_insert_before,
since it will also be used outside the loop. */
if (GET_CODE (copy_end) == JUMP_INSN)
copy_end_luid--;
+ /* If copy_start points to the NOTE that starts the loop, then we must
+ use the next luid, because invariant pseudo-regs moved out of the loop
+ have their lifetimes modified to start here, but they are not safe
+ to duplicate. */
+ if (copy_start == loop_start)
+ copy_start_luid++;
for (j = FIRST_PSEUDO_REGISTER; j < max_reg_before_loop; ++j)
if (regno_first_uid[j] > 0 && regno_first_uid[j] <= max_uid_for_loop