mirror of git://gcc.gnu.org/git/gcc.git
SMS: Avoid generating redundant reg-moves
From-SVN: r179380
This commit is contained in:
parent
f27a3d372a
commit
442b891d02
|
|
@ -1,3 +1,9 @@
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue