bt-load.c: Use rtx_insn

gcc/
2014-08-21  David Malcolm  <dmalcolm@redhat.com>

	* bt-load.c (struct btr_user_s): Strengthen field "insn" from rtx
	to rtx_insn *.
	(struct btr_def_s): Likewise.
	(insn_sets_btr_p): Strengthen param "insn" from const_rtx to
	const rtx_insn *.
	(add_btr_def): Likewise.
	(new_btr_user): Likewise.
	(compute_defs_uses_and_gen): Strengthen locals "insn", "last" from
	rtx to rtx_insn *.
	(link_btr_uses): Likewise.
	(move_btr_def): Likewise for locals "insp", "old_insn",
	"new_insn".  Add checked cast to rtx_insn * for now on result of
	gen_move_insn.
	(can_move_up): Strengthen param "insn" from const_rtx to
	const rtx_insn *.

From-SVN: r214287
This commit is contained in:
David Malcolm 2014-08-21 20:28:33 +00:00 committed by David Malcolm
parent e93768e449
commit fd6657fbb3
2 changed files with 37 additions and 18 deletions

View File

@ -1,3 +1,21 @@
2014-08-21 David Malcolm <dmalcolm@redhat.com>
* bt-load.c (struct btr_user_s): Strengthen field "insn" from rtx
to rtx_insn *.
(struct btr_def_s): Likewise.
(insn_sets_btr_p): Strengthen param "insn" from const_rtx to
const rtx_insn *.
(add_btr_def): Likewise.
(new_btr_user): Likewise.
(compute_defs_uses_and_gen): Strengthen locals "insn", "last" from
rtx to rtx_insn *.
(link_btr_uses): Likewise.
(move_btr_def): Likewise for locals "insp", "old_insn",
"new_insn". Add checked cast to rtx_insn * for now on result of
gen_move_insn.
(can_move_up): Strengthen param "insn" from const_rtx to
const rtx_insn *.
2014-08-21 David Malcolm <dmalcolm@redhat.com> 2014-08-21 David Malcolm <dmalcolm@redhat.com>
* bb-reorder.c (copy_bb_p): Strengthen local "insn" from rtx to * bb-reorder.c (copy_bb_p): Strengthen local "insn" from rtx to

View File

@ -53,7 +53,7 @@ typedef struct btr_user_s
struct btr_user_s *next; struct btr_user_s *next;
basic_block bb; basic_block bb;
int luid; int luid;
rtx insn; rtx_insn *insn;
/* If INSN has a single use of a single branch register, then /* If INSN has a single use of a single branch register, then
USE points to it within INSN. If there is more than USE points to it within INSN. If there is more than
one branch register use, or the use is in some way ambiguous, one branch register use, or the use is in some way ambiguous,
@ -79,7 +79,7 @@ typedef struct btr_def_s
struct btr_def_s *next_this_group; struct btr_def_s *next_this_group;
basic_block bb; basic_block bb;
int luid; int luid;
rtx insn; rtx_insn *insn;
int btr; int btr;
int cost; int cost;
/* For a branch register setting insn that has a constant /* For a branch register setting insn that has a constant
@ -112,14 +112,14 @@ typedef struct btr_def_s
static int issue_rate; static int issue_rate;
static int basic_block_freq (const_basic_block); static int basic_block_freq (const_basic_block);
static int insn_sets_btr_p (const_rtx, int, int *); static int insn_sets_btr_p (const rtx_insn *, int, int *);
static rtx *find_btr_use (rtx); static rtx *find_btr_use (rtx);
static int btr_referenced_p (rtx, rtx *); static int btr_referenced_p (rtx, rtx *);
static int find_btr_reference (rtx *, void *); static int find_btr_reference (rtx *, void *);
static void find_btr_def_group (btr_def_group *, btr_def); static void find_btr_def_group (btr_def_group *, btr_def);
static btr_def add_btr_def (fibheap_t, basic_block, int, rtx, static btr_def add_btr_def (fibheap_t, basic_block, int, rtx_insn *,
unsigned int, int, btr_def_group *); unsigned int, int, btr_def_group *);
static btr_user new_btr_user (basic_block, int, rtx); static btr_user new_btr_user (basic_block, int, rtx_insn *);
static void dump_hard_reg_set (HARD_REG_SET); static void dump_hard_reg_set (HARD_REG_SET);
static void dump_btrs_live (int); static void dump_btrs_live (int);
static void note_other_use_this_block (unsigned int, btr_user); static void note_other_use_this_block (unsigned int, btr_user);
@ -140,7 +140,7 @@ static void btr_def_live_range (btr_def, HARD_REG_SET *);
static void move_btr_def (basic_block, int, btr_def, bitmap, HARD_REG_SET *); static void move_btr_def (basic_block, int, btr_def, bitmap, HARD_REG_SET *);
static int migrate_btr_def (btr_def, int); static int migrate_btr_def (btr_def, int);
static void migrate_btr_defs (enum reg_class, int); static void migrate_btr_defs (enum reg_class, int);
static int can_move_up (const_basic_block, const_rtx, int); static int can_move_up (const_basic_block, const rtx_insn *, int);
static void note_btr_set (rtx, const_rtx, void *); static void note_btr_set (rtx, const_rtx, void *);
/* The following code performs code motion of target load instructions /* The following code performs code motion of target load instructions
@ -222,7 +222,7 @@ btr_referenced_p (rtx x, rtx *excludep)
If such a set is found and REGNO is nonzero, assign the register number If such a set is found and REGNO is nonzero, assign the register number
of the destination register to *REGNO. */ of the destination register to *REGNO. */
static int static int
insn_sets_btr_p (const_rtx insn, int check_const, int *regno) insn_sets_btr_p (const rtx_insn *insn, int check_const, int *regno)
{ {
rtx set; rtx set;
@ -297,7 +297,8 @@ find_btr_def_group (btr_def_group *all_btr_def_groups, btr_def def)
block BB, instruction INSN, and insert it into ALL_BTR_DEFS. Return block BB, instruction INSN, and insert it into ALL_BTR_DEFS. Return
the new definition. */ the new definition. */
static btr_def static btr_def
add_btr_def (fibheap_t all_btr_defs, basic_block bb, int insn_luid, rtx insn, add_btr_def (fibheap_t all_btr_defs, basic_block bb, int insn_luid,
rtx_insn *insn,
unsigned int dest_reg, int other_btr_uses_before_def, unsigned int dest_reg, int other_btr_uses_before_def,
btr_def_group *all_btr_def_groups) btr_def_group *all_btr_def_groups)
{ {
@ -330,7 +331,7 @@ add_btr_def (fibheap_t all_btr_defs, basic_block bb, int insn_luid, rtx insn,
/* Create a new target register user structure, for a use in block BB, /* Create a new target register user structure, for a use in block BB,
instruction INSN. Return the new user. */ instruction INSN. Return the new user. */
static btr_user static btr_user
new_btr_user (basic_block bb, int insn_luid, rtx insn) new_btr_user (basic_block bb, int insn_luid, rtx_insn *insn)
{ {
/* This instruction reads target registers. We need /* This instruction reads target registers. We need
to decide whether we can replace all target register to decide whether we can replace all target register
@ -463,8 +464,8 @@ compute_defs_uses_and_gen (fibheap_t all_btr_defs, btr_def *def_array,
basic_block bb = BASIC_BLOCK_FOR_FN (cfun, i); basic_block bb = BASIC_BLOCK_FOR_FN (cfun, i);
int reg; int reg;
btr_def defs_this_bb = NULL; btr_def defs_this_bb = NULL;
rtx insn; rtx_insn *insn;
rtx last; rtx_insn *last;
int can_throw = 0; int can_throw = 0;
info.users_this_bb = NULL; info.users_this_bb = NULL;
@ -671,8 +672,8 @@ link_btr_uses (btr_def *def_array, btr_user *use_array, sbitmap *bb_out,
for (i = NUM_FIXED_BLOCKS; i < last_basic_block_for_fn (cfun); i++) for (i = NUM_FIXED_BLOCKS; i < last_basic_block_for_fn (cfun); i++)
{ {
basic_block bb = BASIC_BLOCK_FOR_FN (cfun, i); basic_block bb = BASIC_BLOCK_FOR_FN (cfun, i);
rtx insn; rtx_insn *insn;
rtx last; rtx_insn *last;
bitmap_union_of_preds (reaching_defs, bb_out, BASIC_BLOCK_FOR_FN (cfun, i)); bitmap_union_of_preds (reaching_defs, bb_out, BASIC_BLOCK_FOR_FN (cfun, i));
for (insn = BB_HEAD (bb), last = NEXT_INSN (BB_END (bb)); for (insn = BB_HEAD (bb), last = NEXT_INSN (BB_END (bb));
@ -1154,11 +1155,11 @@ move_btr_def (basic_block new_def_bb, int btr, btr_def def, bitmap live_range,
Replace all uses of the old target register definition by Replace all uses of the old target register definition by
uses of the new definition. Delete the old definition. */ uses of the new definition. Delete the old definition. */
basic_block b = new_def_bb; basic_block b = new_def_bb;
rtx insp = BB_HEAD (b); rtx_insn *insp = BB_HEAD (b);
rtx old_insn = def->insn; rtx_insn *old_insn = def->insn;
rtx src; rtx src;
rtx btr_rtx; rtx btr_rtx;
rtx new_insn; rtx_insn *new_insn;
enum machine_mode btr_mode; enum machine_mode btr_mode;
btr_user user; btr_user user;
rtx set; rtx set;
@ -1200,7 +1201,7 @@ move_btr_def (basic_block new_def_bb, int btr, btr_def def, bitmap live_range,
btr_mode = GET_MODE (SET_DEST (set)); btr_mode = GET_MODE (SET_DEST (set));
btr_rtx = gen_rtx_REG (btr_mode, btr); btr_rtx = gen_rtx_REG (btr_mode, btr);
new_insn = gen_move_insn (btr_rtx, src); new_insn = as_a <rtx_insn *> (gen_move_insn (btr_rtx, src));
/* Insert target register initialization at head of basic block. */ /* Insert target register initialization at head of basic block. */
def->insn = emit_insn_after (new_insn, insp); def->insn = emit_insn_after (new_insn, insp);
@ -1236,7 +1237,7 @@ move_btr_def (basic_block new_def_bb, int btr, btr_def def, bitmap live_range,
/* We anticipate intra-block scheduling to be done. See if INSN could move /* We anticipate intra-block scheduling to be done. See if INSN could move
up within BB by N_INSNS. */ up within BB by N_INSNS. */
static int static int
can_move_up (const_basic_block bb, const_rtx insn, int n_insns) can_move_up (const_basic_block bb, const rtx_insn *insn, int n_insns)
{ {
while (insn != BB_HEAD (bb) && n_insns > 0) while (insn != BB_HEAD (bb) && n_insns > 0)
{ {