Commit 442b891d by Revital Eres Committed by Revital Eres

SMS: Avoid generating redundant reg-moves

From-SVN: r179380
parent f27a3d37
2011-09-30 Revital Eres <revital.eres@linaro.org>
* modulo-sched.c (generate_reg_moves): Skip instructions that
do not set a register and verify no regmoves are created for
!single_set instructions.
2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
* hw-doloop.c (scan_loop): Compute register usage only for non-debug
......@@ -476,7 +476,12 @@ generate_reg_moves (partial_schedule_ptr ps, bool rescan)
sbitmap *uses_of_defs;
rtx last_reg_move;
rtx prev_reg, old_reg;
rtx set = single_set (u->insn);
/* Skip instructions that do not set a register. */
if ((set && !REG_P (SET_DEST (set))))
continue;
/* Compute the number of reg_moves needed for u, by looking at life
ranges started at u (excluding self-loops). */
for (e = u->out; e; e = e->next_out)
......@@ -493,6 +498,16 @@ generate_reg_moves (partial_schedule_ptr ps, bool rescan)
&& SCHED_COLUMN (e->dest) < SCHED_COLUMN (e->src))
nreg_moves4e--;
if (nreg_moves4e >= 1)
{
/* !single_set instructions are not supported yet and
thus we do not except to encounter them in the loop
except from the doloop part. For the latter case
we assume no regmoves are generated as the doloop
instructions are tied to the branch with an edge. */
gcc_assert (set);
}
nreg_moves = MAX (nreg_moves, nreg_moves4e);
}
......
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