haifa-sched.c (sched_scan_info): Remove.

* haifa-sched.c (sched_scan_info): Remove.
	(schedule_block): Call sched_extend_luids rather than sched_init_luids
	with NULL args.
	(extend_bb, init_bb, extend_insn, init_insn, init_insns_in_bb):
	Remove functions.
	(sched_scan): Remove.
	(sched_extend_luids): Renamed from luids_extend_insn and no longer
	static.  All callers changed.
	(sched_init_insn_luid): Renamed from luids_init_insn and no longer
	static.  All callers changed.
	(sched_init_luids): Remove all arguments except the first.  All
	callers changed.  Don't use sched_scan.
	(haifa_init_h_i_d): Likewise.
	(haifa_init_insn): Call sched_extend_luids and sched_init_insn_luid
	manually rather than using sched_init_luids.  Likewise with
	extend_h_i_d, init_h_i_d and haifa_init_h_i_d.
	* sel-sched.c (sel_region_target_finish): Call sched_extend_luids
	rather than sched_init_luids with NULL args.
	* sel-sched-ir.c (new_insns): Remove variable.
	(sched_scan): New static function, previously in haifa-sched.c.  Remove
	all arguments but the first two; all callers changed.
	(sel_init_new_insn): Call sched_extend_luids and sched_init_insn_luid
	rather than sched_init_luids.
	(sel_init_bbs): Remove second argument.  All callers changed.
	(sel_add_bb): Call sched_extend_luids rather than sched_init_luids
	with NULL arguments.
	(create_insn_rtx_from_pattern): Likewise.
	* sel-sched-ir.h (sel_init_bbs): Adjust declaration.
	* sched-int.h (sched_init_luids, haifa_init_h_i_d): Likewise.
	(sched_init_insn_luid, sched_extend_luids): Declare.
	(sched_scan_info_def, sched_scan_info, sched_scan): Remove
	declarations.

From-SVN: r174327
This commit is contained in:
Bernd Schmidt 2011-05-27 10:47:48 +00:00 committed by Bernd Schmidt
parent f8f972fc7e
commit a95b23b429
6 changed files with 139 additions and 172 deletions

View File

@ -1,3 +1,38 @@
2011-05-27 Bernd Schmidt <bernds@codesourcery.com>
* haifa-sched.c (sched_scan_info): Remove.
(schedule_block): Call sched_extend_luids rather than sched_init_luids
with NULL args.
(extend_bb, init_bb, extend_insn, init_insn, init_insns_in_bb):
Remove functions.
(sched_scan): Remove.
(sched_extend_luids): Renamed from luids_extend_insn and no longer
static. All callers changed.
(sched_init_insn_luid): Renamed from luids_init_insn and no longer
static. All callers changed.
(sched_init_luids): Remove all arguments except the first. All
callers changed. Don't use sched_scan.
(haifa_init_h_i_d): Likewise.
(haifa_init_insn): Call sched_extend_luids and sched_init_insn_luid
manually rather than using sched_init_luids. Likewise with
extend_h_i_d, init_h_i_d and haifa_init_h_i_d.
* sel-sched.c (sel_region_target_finish): Call sched_extend_luids
rather than sched_init_luids with NULL args.
* sel-sched-ir.c (new_insns): Remove variable.
(sched_scan): New static function, previously in haifa-sched.c. Remove
all arguments but the first two; all callers changed.
(sel_init_new_insn): Call sched_extend_luids and sched_init_insn_luid
rather than sched_init_luids.
(sel_init_bbs): Remove second argument. All callers changed.
(sel_add_bb): Call sched_extend_luids rather than sched_init_luids
with NULL arguments.
(create_insn_rtx_from_pattern): Likewise.
* sel-sched-ir.h (sel_init_bbs): Adjust declaration.
* sched-int.h (sched_init_luids, haifa_init_h_i_d): Likewise.
(sched_init_insn_luid, sched_extend_luids): Declare.
(sched_scan_info_def, sched_scan_info, sched_scan): Remove
declarations.
2011-05-27 Richard Guenther <rguenther@suse.de>
PR middle-end/49177

View File

@ -332,8 +332,6 @@ const struct common_sched_info_def haifa_common_sched_info =
SCHED_PASS_UNKNOWN /* sched_pass_id */
};
const struct sched_scan_info_def *sched_scan_info;
/* Mapping from instruction UID to its Logical UID. */
VEC (int, heap) *sched_luids = NULL;
@ -3336,7 +3334,7 @@ schedule_block (basic_block *target_bb)
in its md_finish () hook. These new insns don't have any data
initialized and to identify them we extend h_i_d so that they'll
get zero luids. */
sched_init_luids (NULL, NULL, NULL, NULL);
sched_extend_luids ();
}
if (sched_verbose)
@ -3544,10 +3542,10 @@ haifa_sched_init (void)
FOR_EACH_BB (bb)
VEC_quick_push (basic_block, bbs, bb);
sched_init_luids (bbs, NULL, NULL, NULL);
sched_init_luids (bbs);
sched_deps_init (true);
sched_extend_target ();
haifa_init_h_i_d (bbs, NULL, NULL, NULL);
haifa_init_h_i_d (bbs);
VEC_free (basic_block, heap, bbs);
}
@ -5335,105 +5333,9 @@ check_cfg (rtx head, rtx tail)
#endif /* ENABLE_CHECKING */
/* Extend per basic block data structures. */
static void
extend_bb (void)
{
if (sched_scan_info->extend_bb)
sched_scan_info->extend_bb ();
}
/* Init data for BB. */
static void
init_bb (basic_block bb)
{
if (sched_scan_info->init_bb)
sched_scan_info->init_bb (bb);
}
/* Extend per insn data structures. */
static void
extend_insn (void)
{
if (sched_scan_info->extend_insn)
sched_scan_info->extend_insn ();
}
/* Init data structures for INSN. */
static void
init_insn (rtx insn)
{
if (sched_scan_info->init_insn)
sched_scan_info->init_insn (insn);
}
/* Init all insns in BB. */
static void
init_insns_in_bb (basic_block bb)
{
rtx insn;
FOR_BB_INSNS (bb, insn)
init_insn (insn);
}
/* A driver function to add a set of basic blocks (BBS),
a single basic block (BB), a set of insns (INSNS) or a single insn (INSN)
to the scheduling region. */
void
sched_scan (const struct sched_scan_info_def *ssi,
bb_vec_t bbs, basic_block bb, insn_vec_t insns, rtx insn)
{
sched_scan_info = ssi;
if (bbs != NULL || bb != NULL)
{
extend_bb ();
if (bbs != NULL)
{
unsigned i;
basic_block x;
FOR_EACH_VEC_ELT (basic_block, bbs, i, x)
init_bb (x);
}
if (bb != NULL)
init_bb (bb);
}
extend_insn ();
if (bbs != NULL)
{
unsigned i;
basic_block x;
FOR_EACH_VEC_ELT (basic_block, bbs, i, x)
init_insns_in_bb (x);
}
if (bb != NULL)
init_insns_in_bb (bb);
if (insns != NULL)
{
unsigned i;
rtx x;
FOR_EACH_VEC_ELT (rtx, insns, i, x)
init_insn (x);
}
if (insn != NULL)
init_insn (insn);
}
/* Extend data structures for logical insn UID. */
static void
luids_extend_insn (void)
void
sched_extend_luids (void)
{
int new_luids_max_uid = get_max_uid () + 1;
@ -5441,8 +5343,8 @@ luids_extend_insn (void)
}
/* Initialize LUID for INSN. */
static void
luids_init_insn (rtx insn)
void
sched_init_insn_luid (rtx insn)
{
int i = INSN_P (insn) ? 1 : common_sched_info->luid_for_non_insn (insn);
int luid;
@ -5458,21 +5360,23 @@ luids_init_insn (rtx insn)
SET_INSN_LUID (insn, luid);
}
/* Initialize luids for BBS, BB, INSNS and INSN.
/* Initialize luids for BBS.
The hook common_sched_info->luid_for_non_insn () is used to determine
if notes, labels, etc. need luids. */
void
sched_init_luids (bb_vec_t bbs, basic_block bb, insn_vec_t insns, rtx insn)
sched_init_luids (bb_vec_t bbs)
{
const struct sched_scan_info_def ssi =
{
NULL, /* extend_bb */
NULL, /* init_bb */
luids_extend_insn, /* extend_insn */
luids_init_insn /* init_insn */
};
int i;
basic_block bb;
sched_scan (&ssi, bbs, bb, insns, insn);
sched_extend_luids ();
FOR_EACH_VEC_ELT (basic_block, bbs, i, bb)
{
rtx insn;
FOR_BB_INSNS (bb, insn)
sched_init_insn_luid (insn);
}
}
/* Free LUIDs. */
@ -5529,19 +5433,21 @@ init_h_i_d (rtx insn)
}
}
/* Initialize haifa_insn_data for BBS, BB, INSNS and INSN. */
/* Initialize haifa_insn_data for BBS. */
void
haifa_init_h_i_d (bb_vec_t bbs, basic_block bb, insn_vec_t insns, rtx insn)
haifa_init_h_i_d (bb_vec_t bbs)
{
const struct sched_scan_info_def ssi =
{
NULL, /* extend_bb */
NULL, /* init_bb */
extend_h_i_d, /* extend_insn */
init_h_i_d /* init_insn */
};
int i;
basic_block bb;
sched_scan (&ssi, bbs, bb, insns, insn);
extend_h_i_d ();
FOR_EACH_VEC_ELT (basic_block, bbs, i, bb)
{
rtx insn;
FOR_BB_INSNS (bb, insn)
init_h_i_d (insn);
}
}
/* Finalize haifa_insn_data. */
@ -5570,10 +5476,12 @@ haifa_init_insn (rtx insn)
{
gcc_assert (insn != NULL);
sched_init_luids (NULL, NULL, NULL, insn);
sched_extend_luids ();
sched_init_insn_luid (insn);
sched_extend_target ();
sched_deps_init (false);
haifa_init_h_i_d (NULL, NULL, NULL, insn);
extend_h_i_d ();
init_h_i_d (insn);
if (adding_bb_to_current_region_p)
{

View File

@ -39,42 +39,18 @@ enum sched_pass_id_t { SCHED_PASS_UNKNOWN, SCHED_RGN_PASS, SCHED_EBB_PASS,
typedef VEC (basic_block, heap) *bb_vec_t;
typedef VEC (rtx, heap) *insn_vec_t;
typedef VEC(rtx, heap) *rtx_vec_t;
struct sched_scan_info_def
{
/* This hook notifies scheduler frontend to extend its internal per basic
block data structures. This hook should be called once before a series of
calls to bb_init (). */
void (*extend_bb) (void);
/* This hook makes scheduler frontend to initialize its internal data
structures for the passed basic block. */
void (*init_bb) (basic_block);
/* This hook notifies scheduler frontend to extend its internal per insn data
structures. This hook should be called once before a series of calls to
insn_init (). */
void (*extend_insn) (void);
/* This hook makes scheduler frontend to initialize its internal data
structures for the passed insn. */
void (*init_insn) (rtx);
};
extern const struct sched_scan_info_def *sched_scan_info;
extern void sched_scan (const struct sched_scan_info_def *,
bb_vec_t, basic_block, insn_vec_t, rtx);
typedef VEC (rtx, heap) *rtx_vec_t;
extern void sched_init_bbs (void);
extern void sched_init_luids (bb_vec_t, basic_block, insn_vec_t, rtx);
extern void sched_extend_luids (void);
extern void sched_init_insn_luid (rtx);
extern void sched_init_luids (bb_vec_t);
extern void sched_finish_luids (void);
extern void sched_extend_target (void);
extern void haifa_init_h_i_d (bb_vec_t, basic_block, insn_vec_t, rtx);
extern void haifa_init_h_i_d (bb_vec_t);
extern void haifa_finish_h_i_d (void);
/* Hooks that are common to all the schedulers. */

View File

@ -2720,6 +2720,54 @@ deps_init_id (idata_t id, insn_t insn, bool force_unique_p)
}
struct sched_scan_info_def
{
/* This hook notifies scheduler frontend to extend its internal per basic
block data structures. This hook should be called once before a series of
calls to bb_init (). */
void (*extend_bb) (void);
/* This hook makes scheduler frontend to initialize its internal data
structures for the passed basic block. */
void (*init_bb) (basic_block);
/* This hook notifies scheduler frontend to extend its internal per insn data
structures. This hook should be called once before a series of calls to
insn_init (). */
void (*extend_insn) (void);
/* This hook makes scheduler frontend to initialize its internal data
structures for the passed insn. */
void (*init_insn) (rtx);
};
/* A driver function to add a set of basic blocks (BBS) to the
scheduling region. */
static void
sched_scan (const struct sched_scan_info_def *ssi, bb_vec_t bbs)
{
unsigned i;
basic_block bb;
if (ssi->extend_bb)
ssi->extend_bb ();
if (ssi->init_bb)
FOR_EACH_VEC_ELT (basic_block, bbs, i, bb)
ssi->init_bb (bb);
if (ssi->extend_insn)
ssi->extend_insn ();
if (ssi->init_insn)
FOR_EACH_VEC_ELT (basic_block, bbs, i, bb)
{
rtx insn;
FOR_BB_INSNS (bb, insn)
ssi->init_insn (insn);
}
}
/* Implement hooks for collecting fundamental insn properties like if insn is
an ASM or is within a SCHED_GROUP. */
@ -2944,7 +2992,7 @@ sel_init_global_and_expr (bb_vec_t bbs)
init_global_and_expr_for_insn /* init_insn */
};
sched_scan (&ssi, bbs, NULL, NULL, NULL);
sched_scan (&ssi, bbs);
}
/* Finalize region-scope data structures for basic blocks. */
@ -3001,7 +3049,7 @@ sel_finish_global_and_expr (void)
finish_global_and_expr_insn /* init_insn */
};
sched_scan (&ssi, bbs, NULL, NULL, NULL);
sched_scan (&ssi, bbs);
}
VEC_free (basic_block, heap, bbs);
@ -3990,9 +4038,6 @@ finish_region_bb_info (void)
/* Data for each insn in current region. */
VEC (sel_insn_data_def, heap) *s_i_d = NULL;
/* A vector for the insns we've emitted. */
static insn_vec_t new_insns = NULL;
/* Extend data structures for insns from current region. */
static void
extend_insn_data (void)
@ -4131,7 +4176,10 @@ sel_init_new_insn (insn_t insn, int flags)
}
if (flags & INSN_INIT_TODO_LUID)
sched_init_luids (NULL, NULL, NULL, insn);
{
sched_extend_luids ();
sched_init_insn_luid (insn);
}
if (flags & INSN_INIT_TODO_SSID)
{
@ -4473,7 +4521,7 @@ init_bb (basic_block bb)
}
void
sel_init_bbs (bb_vec_t bbs, basic_block bb)
sel_init_bbs (bb_vec_t bbs)
{
const struct sched_scan_info_def ssi =
{
@ -4483,7 +4531,7 @@ sel_init_bbs (bb_vec_t bbs, basic_block bb)
NULL /* init_insn */
};
sched_scan (&ssi, bbs, bb, new_insns, NULL);
sched_scan (&ssi, bbs);
}
/* Restore notes for the whole region. */
@ -5040,9 +5088,9 @@ static void
sel_add_bb (basic_block bb)
{
/* Extend luids so that new notes will receive zero luids. */
sched_init_luids (NULL, NULL, NULL, NULL);
sched_extend_luids ();
sched_init_bbs ();
sel_init_bbs (last_added_blocks, NULL);
sel_init_bbs (last_added_blocks);
/* When bb is passed explicitly, the vector should contain
the only element that equals to bb; otherwise, the vector
@ -5583,7 +5631,7 @@ create_insn_rtx_from_pattern (rtx pattern, rtx label)
end_sequence ();
sched_init_luids (NULL, NULL, NULL, NULL);
sched_extend_luids ();
sched_extend_target ();
sched_deps_init (false);

View File

@ -1602,7 +1602,7 @@ extern bool sel_bb_empty_p (basic_block);
extern bool in_current_region_p (basic_block);
extern basic_block fallthru_bb_of_jump (rtx);
extern void sel_init_bbs (bb_vec_t, basic_block);
extern void sel_init_bbs (bb_vec_t);
extern void sel_finish_bbs (void);
extern struct succs_info * compute_succs_info (insn_t, short);

View File

@ -6868,7 +6868,7 @@ sel_region_init (int rgn)
for (i = 0; i < current_nr_blocks; i++)
VEC_quick_push (basic_block, bbs, BASIC_BLOCK (BB_TO_BLOCK (i)));
sel_init_bbs (bbs, NULL);
sel_init_bbs (bbs);
if (flag_sel_sched_pipelining)
setup_current_loop_nest (rgn, &bbs);
@ -6877,13 +6877,13 @@ sel_region_init (int rgn)
/* Initialize luids and dependence analysis which both sel-sched and haifa
need. */
sched_init_luids (bbs, NULL, NULL, NULL);
sched_init_luids (bbs);
sched_deps_init (false);
/* Initialize haifa data. */
rgn_setup_sched_infos ();
sel_set_sched_flags ();
haifa_init_h_i_d (bbs, NULL, NULL, NULL);
haifa_init_h_i_d (bbs);
sel_compute_priorities (rgn);
init_deps_global ();
@ -7215,7 +7215,7 @@ sel_region_target_finish (bool reset_sched_cycles_p)
/* Extend luids so that insns generated by the target will
get zero luid. */
sched_init_luids (NULL, NULL, NULL, NULL);
sched_extend_luids ();
}
}