Commit b5f89788 by Richard Kenner

(unroll_loop): Don't move reg if used in copy_end and that is a

JUMP_INSN.

From-SVN: r9646
parent 454e0249
...@@ -728,17 +728,17 @@ unroll_loop (loop_end, insn_count, loop_start, end_insert_before, ...@@ -728,17 +728,17 @@ unroll_loop (loop_end, insn_count, loop_start, end_insert_before,
int copy_start_luid = INSN_LUID (copy_start); int copy_start_luid = INSN_LUID (copy_start);
int copy_end_luid = INSN_LUID (copy_end); int copy_end_luid = INSN_LUID (copy_end);
/* If a register is used in the jump insn, we must not duplicate it
since it will also be used outside the loop. */
if (GET_CODE (copy_end) == JUMP_INSN)
copy_end_luid--;
for (j = FIRST_PSEUDO_REGISTER; j < maxregnum; ++j) for (j = FIRST_PSEUDO_REGISTER; j < maxregnum; ++j)
{ if (regno_first_uid[j] > 0 && regno_first_uid[j] <= max_uid_for_loop
int first_uid = regno_first_uid[j]; && uid_luid[regno_first_uid[j]] >= copy_start_luid
int last_uid = regno_last_uid[j]; && regno_last_uid[j] > 0 && regno_last_uid[j] <= max_uid_for_loop
&& uid_luid[regno_last_uid[j]] <= copy_end_luid)
if (first_uid > 0 && first_uid <= max_uid_for_loop local_regno[j] = 1;
&& uid_luid[first_uid] >= copy_start_luid
&& last_uid > 0 && last_uid <= max_uid_for_loop
&& uid_luid[last_uid] <= copy_end_luid)
local_regno[j] = 1;
}
} }
/* If this loop requires exit tests when unrolled, check to see if we /* If this loop requires exit tests when unrolled, check to see if we
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment