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:
parent
e93768e449
commit
fd6657fbb3
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue