+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
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)
&& 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);
}