diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1995-05-17 14:53:11 -0700 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1995-05-17 14:53:11 -0700 |
commit | 01e7bd9ad266390ee411603018a015a4cd2a0d4c (patch) | |
tree | ea8baa9d98c9436015adaa2cc31f61771e648ac3 | |
parent | a25ee33216ab0b3c0ace1cb717d2434a0a7ddd8f (diff) | |
download | gcc-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.c | 6 |
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 |