Commit 6ad216ad by Richard Stallman

(scan_loop): Treat pseudo duplicated for exit tests just

like we treat user vars in seeing if we can move a SET.

From-SVN: r4514
parent dca821e1
...@@ -682,13 +682,16 @@ scan_loop (loop_start, end, nregs) ...@@ -682,13 +682,16 @@ scan_loop (loop_start, end, nregs)
; ;
/* In order to move a register, we need to have one of three cases: /* In order to move a register, we need to have one of three cases:
(1) it is used only in the same basic block as the set (1) it is used only in the same basic block as the set
(2) it is not a user variable. (2) it is not a user variable and it is not used in the
exit test (this can cause the variable to be used
before it is set just like a user-variable).
(3) the set is guaranteed to be executed once the loop starts, (3) the set is guaranteed to be executed once the loop starts,
and the reg is not used until after that. */ and the reg is not used until after that. */
else if (! ((! maybe_never else if (! ((! maybe_never
&& ! loop_reg_used_before_p (set, p, loop_start, && ! loop_reg_used_before_p (set, p, loop_start,
scan_start, end)) scan_start, end))
|| ! REG_USERVAR_P (SET_DEST (PATTERN (p))) || (! REG_USERVAR_P (SET_DEST (PATTERN (p)))
&& ! REG_LOOP_TEST_P (SET_DEST (PATTERN (p))))
|| reg_in_basic_block_p (p, SET_DEST (PATTERN (p))))) || reg_in_basic_block_p (p, SET_DEST (PATTERN (p)))))
; ;
else if ((tem = invariant_p (src)) else if ((tem = invariant_p (src))
......
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