modulo-sched.c: Use rtx_insn in various places
gcc/ * modulo-sched.c (struct ps_reg_move_info): Strengthen field "insn" from rtx to rtx_insn *. (ps_rtl_insn): Likewise for return type. (doloop_register_get): Likewise for params "head", "tail" and locals "insn", "first_insn_not_to_check". (schedule_reg_move): Likewise for local "this_insn". (schedule_reg_moves): Add a checked cast to rtx_insn * to result of gen_move_insn for now. (reset_sched_times): Strengthen local "insn" from rtx to rtx_insn *. (permute_partial_schedule): Likewise. (duplicate_insns_of_cycles): Likewise for local "u_insn". (dump_insn_location): Likewise for param "insn". (loop_canon_p): Likewise for local "insn". (sms_schedule): Likewise. (print_partial_schedule): Likewise. (ps_has_conflicts): Likewise. From-SVN: r214354
This commit is contained in:
parent
cea83a3ac8
commit
6210ec61d9
|
@ -1,3 +1,23 @@
|
|||
2014-08-22 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
* modulo-sched.c (struct ps_reg_move_info): Strengthen field
|
||||
"insn" from rtx to rtx_insn *.
|
||||
(ps_rtl_insn): Likewise for return type.
|
||||
(doloop_register_get): Likewise for params "head", "tail" and
|
||||
locals "insn", "first_insn_not_to_check".
|
||||
(schedule_reg_move): Likewise for local "this_insn".
|
||||
(schedule_reg_moves): Add a checked cast to rtx_insn * to result
|
||||
of gen_move_insn for now.
|
||||
(reset_sched_times): Strengthen local "insn" from rtx to
|
||||
rtx_insn *.
|
||||
(permute_partial_schedule): Likewise.
|
||||
(duplicate_insns_of_cycles): Likewise for local "u_insn".
|
||||
(dump_insn_location): Likewise for param "insn".
|
||||
(loop_canon_p): Likewise for local "insn".
|
||||
(sms_schedule): Likewise.
|
||||
(print_partial_schedule): Likewise.
|
||||
(ps_has_conflicts): Likewise.
|
||||
|
||||
2014-08-22 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
* sched-int.h (get_ebb_head_tail): Strengthen params "headp" and
|
||||
|
|
|
@ -155,7 +155,7 @@ struct ps_reg_move_info
|
|||
/* An instruction that sets NEW_REG to the correct value. The first
|
||||
move associated with DEF will have an rhs of OLD_REG; later moves
|
||||
use the result of the previous move. */
|
||||
rtx insn;
|
||||
rtx_insn *insn;
|
||||
};
|
||||
|
||||
typedef struct ps_reg_move_info ps_reg_move_info;
|
||||
|
@ -305,7 +305,7 @@ ps_reg_move (partial_schedule_ptr ps, int id)
|
|||
|
||||
/* Return the rtl instruction that is being scheduled by partial schedule
|
||||
instruction ID, which belongs to schedule PS. */
|
||||
static rtx
|
||||
static rtx_insn *
|
||||
ps_rtl_insn (partial_schedule_ptr ps, int id)
|
||||
{
|
||||
if (id < ps->g->num_nodes)
|
||||
|
@ -342,10 +342,11 @@ ps_num_consecutive_stages (partial_schedule_ptr ps, int id)
|
|||
more than one occurrence in the loop besides the control part or the
|
||||
do-loop pattern is not of the form we expect. */
|
||||
static rtx
|
||||
doloop_register_get (rtx head ATTRIBUTE_UNUSED, rtx tail ATTRIBUTE_UNUSED)
|
||||
doloop_register_get (rtx_insn *head ATTRIBUTE_UNUSED, rtx_insn *tail ATTRIBUTE_UNUSED)
|
||||
{
|
||||
#ifdef HAVE_doloop_end
|
||||
rtx reg, condition, insn, first_insn_not_to_check;
|
||||
rtx reg, condition;
|
||||
rtx_insn *insn, *first_insn_not_to_check;
|
||||
|
||||
if (!JUMP_P (tail))
|
||||
return NULL_RTX;
|
||||
|
@ -552,7 +553,7 @@ schedule_reg_move (partial_schedule_ptr ps, int i_reg_move,
|
|||
int start, end, c, ii;
|
||||
sbitmap_iterator sbi;
|
||||
ps_reg_move_info *move;
|
||||
rtx this_insn;
|
||||
rtx_insn *this_insn;
|
||||
ps_insn_ptr psi;
|
||||
|
||||
move = ps_reg_move (ps, i_reg_move);
|
||||
|
@ -758,7 +759,8 @@ schedule_reg_moves (partial_schedule_ptr ps)
|
|||
move->old_reg = old_reg;
|
||||
move->new_reg = gen_reg_rtx (GET_MODE (prev_reg));
|
||||
move->num_consecutive_stages = distances[0] && distances[1] ? 2 : 1;
|
||||
move->insn = gen_move_insn (move->new_reg, copy_rtx (prev_reg));
|
||||
move->insn = as_a <rtx_insn *> (gen_move_insn (move->new_reg,
|
||||
copy_rtx (prev_reg)));
|
||||
bitmap_clear (move->uses);
|
||||
|
||||
prev_reg = move->new_reg;
|
||||
|
@ -852,7 +854,7 @@ reset_sched_times (partial_schedule_ptr ps, int amount)
|
|||
if (dump_file)
|
||||
{
|
||||
/* Print the scheduling times after the rotation. */
|
||||
rtx insn = ps_rtl_insn (ps, u);
|
||||
rtx_insn *insn = ps_rtl_insn (ps, u);
|
||||
|
||||
fprintf (dump_file, "crr_insn->node=%d (insn id %d), "
|
||||
"crr_insn->cycle=%d, min_cycle=%d", u,
|
||||
|
@ -883,7 +885,7 @@ permute_partial_schedule (partial_schedule_ptr ps, rtx last)
|
|||
for (row = 0; row < ii ; row++)
|
||||
for (ps_ij = ps->rows[row]; ps_ij; ps_ij = ps_ij->next_in_row)
|
||||
{
|
||||
rtx insn = ps_rtl_insn (ps, ps_ij->id);
|
||||
rtx_insn *insn = ps_rtl_insn (ps, ps_ij->id);
|
||||
|
||||
if (PREV_INSN (last) != insn)
|
||||
{
|
||||
|
@ -1105,7 +1107,7 @@ duplicate_insns_of_cycles (partial_schedule_ptr ps, int from_stage,
|
|||
{
|
||||
int u = ps_ij->id;
|
||||
int first_u, last_u;
|
||||
rtx u_insn;
|
||||
rtx_insn *u_insn;
|
||||
|
||||
/* Do not duplicate any insn which refers to count_reg as it
|
||||
belongs to the control part.
|
||||
|
@ -1242,7 +1244,7 @@ loop_single_full_bb_p (struct loop *loop)
|
|||
/* Dump file:line from INSN's location info to dump_file. */
|
||||
|
||||
static void
|
||||
dump_insn_location (rtx insn)
|
||||
dump_insn_location (rtx_insn *insn)
|
||||
{
|
||||
if (dump_file && INSN_HAS_LOCATION (insn))
|
||||
{
|
||||
|
@ -1274,7 +1276,7 @@ loop_canon_p (struct loop *loop)
|
|||
{
|
||||
if (dump_file)
|
||||
{
|
||||
rtx insn = BB_END (loop->header);
|
||||
rtx_insn *insn = BB_END (loop->header);
|
||||
|
||||
fprintf (dump_file, "SMS loop many exits");
|
||||
dump_insn_location (insn);
|
||||
|
@ -1287,7 +1289,7 @@ loop_canon_p (struct loop *loop)
|
|||
{
|
||||
if (dump_file)
|
||||
{
|
||||
rtx insn = BB_END (loop->header);
|
||||
rtx_insn *insn = BB_END (loop->header);
|
||||
|
||||
fprintf (dump_file, "SMS loop many BBs.");
|
||||
dump_insn_location (insn);
|
||||
|
@ -1349,7 +1351,7 @@ setup_sched_infos (void)
|
|||
static void
|
||||
sms_schedule (void)
|
||||
{
|
||||
rtx insn;
|
||||
rtx_insn *insn;
|
||||
ddg_ptr *g_arr, g;
|
||||
int * node_order;
|
||||
int maxii, max_asap;
|
||||
|
@ -1412,7 +1414,7 @@ sms_schedule (void)
|
|||
|
||||
if (dump_file)
|
||||
{
|
||||
rtx insn = BB_END (loop->header);
|
||||
rtx_insn *insn = BB_END (loop->header);
|
||||
|
||||
fprintf (dump_file, "SMS loop num: %d", loop->num);
|
||||
dump_insn_location (insn);
|
||||
|
@ -1547,7 +1549,7 @@ sms_schedule (void)
|
|||
|
||||
if (dump_file)
|
||||
{
|
||||
rtx insn = BB_END (loop->header);
|
||||
rtx_insn *insn = BB_END (loop->header);
|
||||
|
||||
fprintf (dump_file, "SMS loop num: %d", loop->num);
|
||||
dump_insn_location (insn);
|
||||
|
@ -2930,7 +2932,7 @@ print_partial_schedule (partial_schedule_ptr ps, FILE *dump)
|
|||
fprintf (dump, "\n[ROW %d ]: ", i);
|
||||
while (ps_i)
|
||||
{
|
||||
rtx insn = ps_rtl_insn (ps, ps_i->id);
|
||||
rtx_insn *insn = ps_rtl_insn (ps, ps_i->id);
|
||||
|
||||
if (JUMP_P (insn))
|
||||
fprintf (dump, "%d (branch), ", INSN_UID (insn));
|
||||
|
@ -3192,7 +3194,7 @@ ps_has_conflicts (partial_schedule_ptr ps, int from, int to)
|
|||
crr_insn;
|
||||
crr_insn = crr_insn->next_in_row)
|
||||
{
|
||||
rtx insn = ps_rtl_insn (ps, crr_insn->id);
|
||||
rtx_insn *insn = ps_rtl_insn (ps, crr_insn->id);
|
||||
|
||||
if (!NONDEBUG_INSN_P (insn))
|
||||
continue;
|
||||
|
|
Loading…
Reference in New Issue