Go to the source code of this file.
Data Structures | |
struct | expr_history_def_1 |
struct | _expr |
struct | _def |
struct | _bnd |
struct | _fence |
struct | flist_tail_def |
struct | _list_node |
struct | _list_iterator |
struct | idata_def |
struct | vinsn_def |
struct | transformed_insns |
class | _sel_insn_data |
struct | sel_global_bb_info_def |
struct | sel_region_bb_info_def |
struct | succ_iterator |
struct | succs_info |
Macros | |
#define | _LIST_NEXT(L) |
#define | _XLIST_X(L) |
#define | _XLIST_NEXT(L) |
#define | ILIST_INSN(L) |
#define | ILIST_NEXT(L) |
#define | EXPR_VINSN(EXPR) |
#define | EXPR_INSN_RTX(EXPR) |
#define | EXPR_PATTERN(EXPR) |
#define | EXPR_LHS(EXPR) |
#define | EXPR_RHS(EXPR) |
#define | EXPR_TYPE(EXPR) |
#define | EXPR_SEPARABLE_P(EXPR) |
#define | EXPR_SPEC(EXPR) |
#define | EXPR_USEFULNESS(EXPR) |
#define | EXPR_PRIORITY(EXPR) |
#define | EXPR_PRIORITY_ADJ(EXPR) |
#define | EXPR_SCHED_TIMES(EXPR) |
#define | EXPR_ORIG_BB_INDEX(EXPR) |
#define | EXPR_ORIG_SCHED_CYCLE(EXPR) |
#define | EXPR_SPEC_DONE_DS(EXPR) |
#define | EXPR_SPEC_TO_CHECK_DS(EXPR) |
#define | EXPR_HISTORY_OF_CHANGES(EXPR) |
#define | EXPR_TARGET_AVAILABLE(EXPR) |
#define | EXPR_NEEDS_SPEC_CHECK_P(EXPR) |
#define | EXPR_WAS_SUBSTITUTED(EXPR) |
#define | EXPR_WAS_RENAMED(EXPR) |
#define | EXPR_CANT_MOVE(EXPR) |
#define | _AV_SET_EXPR(L) |
#define | _AV_SET_NEXT(L) |
#define | BND_TO(B) |
#define | BND_PTR(B) |
#define | BND_AV(B) |
#define | BND_AV1(B) |
#define | BND_DC(B) |
#define | BLIST_BND(L) |
#define | BLIST_NEXT(L) |
#define | FENCE_INSN(F) |
#define | FENCE_STATE(F) |
#define | FENCE_BNDS(F) |
#define | FENCE_PROCESSED_P(F) |
#define | FENCE_SCHEDULED_P(F) |
#define | FENCE_ISSUED_INSNS(F) |
#define | FENCE_CYCLE(F) |
#define | FENCE_STARTS_CYCLE_P(F) |
#define | FENCE_AFTER_STALL_P(F) |
#define | FENCE_DC(F) |
#define | FENCE_TC(F) |
#define | FENCE_LAST_SCHEDULED_INSN(F) |
#define | FENCE_ISSUE_MORE(F) |
#define | FENCE_EXECUTING_INSNS(F) |
#define | FENCE_READY_TICKS(F) |
#define | FENCE_READY_TICKS_SIZE(F) |
#define | FENCE_SCHED_NEXT(F) |
#define | FLIST_FENCE(L) |
#define | FLIST_NEXT(L) |
#define | FLIST_TAIL_HEAD(L) |
#define | FLIST_TAIL_TAILP(L) |
#define | _FOR_EACH(TYPE, ELEM, I, L) |
#define | _FOR_EACH_1(TYPE, ELEM, I, LP) |
#define | _xlist_remove(LP) |
#define | _xlist_clear(LP) |
#define | _xlist_iter_remove(IP) |
#define | _FOR_EACH_X(X, I, L) |
#define | _FOR_EACH_X_1(X, I, LP) |
#define | ilist_remove(LP) |
#define | ilist_clear(LP) |
#define | ilist_iter_remove(IP) |
#define | FOR_EACH_INSN(INSN, I, L) |
#define | FOR_EACH_INSN_1(INSN, I, LP) |
#define | FOR_EACH_EXPR(EXPR, I, AV) |
#define | FOR_EACH_EXPR_1(EXPR, I, AV) |
#define | DEF_LIST_NEXT(L) |
#define | DEF_LIST_DEF(L) |
#define | FOR_EACH_DEF(DEF, I, DEF_LIST) |
#define | IDATA_TYPE(ID) |
#define | IDATA_LHS(ID) |
#define | IDATA_RHS(ID) |
#define | IDATA_REG_SETS(ID) |
#define | IDATA_REG_USES(ID) |
#define | IDATA_REG_CLOBBERS(ID) |
#define | VINSN_INSN_RTX(VI) |
#define | VINSN_PATTERN(VI) |
#define | VINSN_ID(VI) |
#define | VINSN_HASH(VI) |
#define | VINSN_HASH_RTX(VI) |
#define | VINSN_TYPE(VI) |
#define | VINSN_SEPARABLE_P(VI) |
#define | VINSN_CLONABLE_P(VI) |
#define | VINSN_UNIQUE_P(VI) |
#define | VINSN_LHS(VI) |
#define | VINSN_RHS(VI) |
#define | VINSN_REG_SETS(VI) |
#define | VINSN_REG_USES(VI) |
#define | VINSN_REG_CLOBBERS(VI) |
#define | VINSN_COUNT(VI) |
#define | VINSN_MAY_TRAP_P(VI) |
#define | SID(INSN) |
#define | SID_BY_UID(UID) |
#define | INSN_ASM_P(INSN) |
#define | INSN_SCHED_NEXT(INSN) |
#define | INSN_ANALYZED_DEPS(INSN) |
#define | INSN_FOUND_DEPS(INSN) |
#define | INSN_DEPS_CONTEXT(INSN) |
#define | INSN_ORIGINATORS(INSN) |
#define | INSN_ORIGINATORS_BY_UID(UID) |
#define | INSN_TRANSFORMED_INSNS(INSN) |
#define | INSN_EXPR(INSN) |
#define | INSN_LIVE(INSN) |
#define | INSN_LIVE_VALID_P(INSN) |
#define | INSN_VINSN(INSN) |
#define | INSN_TYPE(INSN) |
#define | INSN_SIMPLEJUMP_P(INSN) |
#define | INSN_LHS(INSN) |
#define | INSN_RHS(INSN) |
#define | INSN_REG_SETS(INSN) |
#define | INSN_REG_CLOBBERS(INSN) |
#define | INSN_REG_USES(INSN) |
#define | INSN_SCHED_TIMES(INSN) |
#define | INSN_SEQNO(INSN) |
#define | INSN_AFTER_STALL_P(INSN) |
#define | INSN_SCHED_CYCLE(INSN) |
#define | INSN_READY_CYCLE(INSN) |
#define | INSN_SPEC_CHECKED_DS(INSN) |
#define | INSN_WS_LEVEL(INSN) |
#define | AV_SET(INSN) |
#define | AV_LEVEL(INSN) |
#define | AV_SET_VALID_P(INSN) |
#define | INSN_INIT_TODO_LUID (1) |
#define | INSN_INIT_TODO_SSID (2) |
#define | INSN_INIT_TODO_SIMPLEJUMP (4) |
#define | INSN_NOP_P(INSN) |
#define | INSN_IN_STREAM_P(INSN) |
#define | IN_CURRENT_FENCE_P(INSN) |
#define | MARK_LOOP_FOR_PIPELINING(LOOP) |
#define | LOOP_MARKED_FOR_PIPELINING_P(LOOP) |
#define | LOOP_PREHEADER_BLOCKS(LOOP) |
#define | SET_LOOP_PREHEADER_BLOCKS(LOOP, BLOCKS) |
#define | SEL_GLOBAL_BB_INFO(BB) |
#define | BB_LV_SET(BB) |
#define | BB_LV_SET_VALID_P(BB) |
#define | SEL_REGION_BB_INFO(BB) |
#define | BB_NOTE_LIST(BB) |
#define | BB_AV_SET(BB) |
#define | BB_AV_LEVEL(BB) |
#define | BB_AV_SET_VALID_P(BB) |
#define | MAX_WS (param_selsched_max_lookahead) |
#define | SUCCS_NORMAL (1) |
#define | SUCCS_BACK (2) |
#define | SUCCS_OUT (4) |
#define | SUCCS_SKIP_TO_LOOP_EXITS (8) |
#define | SUCCS_ALL (SUCCS_NORMAL | SUCCS_BACK | SUCCS_OUT) |
#define | FOR_EACH_SUCC_1(SUCC, ITER, INSN, FLAGS) |
#define | FOR_EACH_SUCC(SUCC, ITER, INSN) |
#define | SUCC_ITER_EDGE(ITER) |
Typedefs | |
typedef void * | tc_t |
typedef struct _list_node * | _list_t |
typedef struct idata_def * | idata_t |
typedef struct vinsn_def * | vinsn_t |
typedef _list_t | _xlist_t |
typedef rtx_insn * | insn_t |
typedef _list_t | ilist_t |
typedef struct expr_history_def_1 | expr_history_def |
typedef struct _expr | expr_def |
typedef expr_def * | expr_t |
typedef struct _def * | def_t |
typedef _list_t | av_set_t |
typedef struct _bnd * | bnd_t |
typedef _list_t | blist_t |
typedef struct _fence * | fence_t |
typedef _list_t | flist_t |
typedef struct flist_tail_def * | flist_tail_t |
typedef _list_iterator | _xlist_iterator |
typedef _list_iterator | ilist_iterator |
typedef _list_iterator | av_set_iterator |
typedef _list_t | def_list_t |
typedef _list_iterator | def_list_iterator |
typedef class _sel_insn_data | sel_insn_data_def |
typedef sel_insn_data_def * | sel_insn_data_t |
typedef sel_global_bb_info_def * | sel_global_bb_info_t |
typedef sel_region_bb_info_def * | sel_region_bb_info_t |
Enumerations | |
enum | local_trans_type { TRANS_SUBSTITUTION , TRANS_SPECULATION } |
enum | deps_where_t { DEPS_IN_INSN , DEPS_IN_LHS , DEPS_IN_RHS , DEPS_IN_NOWHERE } |
#define _AV_SET_EXPR | ( | L | ) |
Referenced by _list_iter_cond_expr().
#define _AV_SET_NEXT | ( | L | ) |
#define _FOR_EACH | ( | TYPE, | |
ELEM, | |||
I, | |||
L ) |
#define _FOR_EACH_1 | ( | TYPE, | |
ELEM, | |||
I, | |||
LP ) |
#define _FOR_EACH_X | ( | X, | |
I, | |||
L ) |
#define _FOR_EACH_X_1 | ( | X, | |
I, | |||
LP ) |
#define _LIST_NEXT | ( | L | ) |
Referenced by _list_add(), _list_iter_next(), _list_remove(), and _list_remove_nofree().
#define _xlist_clear | ( | LP | ) |
#define _xlist_iter_remove | ( | IP | ) |
#define _XLIST_NEXT | ( | L | ) |
Referenced by _xlist_is_in_p().
#define _xlist_remove | ( | LP | ) |
#define _XLIST_X | ( | L | ) |
Referenced by _list_iter_cond_x(), _xlist_add(), and _xlist_is_in_p().
#define AV_LEVEL | ( | INSN | ) |
#define AV_SET | ( | INSN | ) |
#define AV_SET_VALID_P | ( | INSN | ) |
#define BB_AV_LEVEL | ( | BB | ) |
#define BB_AV_SET | ( | BB | ) |
#define BB_AV_SET_VALID_P | ( | BB | ) |
#define BB_LV_SET | ( | BB | ) |
Access macros.
#define BB_LV_SET_VALID_P | ( | BB | ) |
#define BB_NOTE_LIST | ( | BB | ) |
Get BB's note_list. A note_list is a list of various notes that was scattered across BB before scheduling, and will be appended at the beginning of BB after scheduling is finished.
#define BLIST_BND | ( | L | ) |
#define BLIST_NEXT | ( | L | ) |
#define BND_AV | ( | B | ) |
#define BND_AV1 | ( | B | ) |
#define BND_DC | ( | B | ) |
#define BND_PTR | ( | B | ) |
PTR stands not for pointer as you might think, but as a Path To Root of the current instruction group from boundary B.
#define BND_TO | ( | B | ) |
#define DEF_LIST_DEF | ( | L | ) |
Referenced by _list_iter_cond_def().
#define DEF_LIST_NEXT | ( | L | ) |
#define EXPR_CANT_MOVE | ( | EXPR | ) |
#define EXPR_HISTORY_OF_CHANGES | ( | EXPR | ) |
#define EXPR_INSN_RTX | ( | EXPR | ) |
#define EXPR_LHS | ( | EXPR | ) |
#define EXPR_NEEDS_SPEC_CHECK_P | ( | EXPR | ) |
#define EXPR_ORIG_BB_INDEX | ( | EXPR | ) |
#define EXPR_ORIG_SCHED_CYCLE | ( | EXPR | ) |
#define EXPR_PATTERN | ( | EXPR | ) |
#define EXPR_PRIORITY | ( | EXPR | ) |
#define EXPR_PRIORITY_ADJ | ( | EXPR | ) |
#define EXPR_RHS | ( | EXPR | ) |
#define EXPR_SCHED_TIMES | ( | EXPR | ) |
#define EXPR_SEPARABLE_P | ( | EXPR | ) |
#define EXPR_SPEC | ( | EXPR | ) |
#define EXPR_SPEC_DONE_DS | ( | EXPR | ) |
#define EXPR_SPEC_TO_CHECK_DS | ( | EXPR | ) |
#define EXPR_TARGET_AVAILABLE | ( | EXPR | ) |
#define EXPR_TYPE | ( | EXPR | ) |
#define EXPR_USEFULNESS | ( | EXPR | ) |
#define EXPR_VINSN | ( | EXPR | ) |
#define EXPR_WAS_RENAMED | ( | EXPR | ) |
#define EXPR_WAS_SUBSTITUTED | ( | EXPR | ) |
#define FENCE_AFTER_STALL_P | ( | F | ) |
#define FENCE_BNDS | ( | F | ) |
#define FENCE_CYCLE | ( | F | ) |
#define FENCE_DC | ( | F | ) |
#define FENCE_EXECUTING_INSNS | ( | F | ) |
#define FENCE_INSN | ( | F | ) |
#define FENCE_ISSUE_MORE | ( | F | ) |
#define FENCE_ISSUED_INSNS | ( | F | ) |
#define FENCE_LAST_SCHEDULED_INSN | ( | F | ) |
#define FENCE_PROCESSED_P | ( | F | ) |
#define FENCE_READY_TICKS | ( | F | ) |
#define FENCE_READY_TICKS_SIZE | ( | F | ) |
#define FENCE_SCHED_NEXT | ( | F | ) |
#define FENCE_SCHEDULED_P | ( | F | ) |
#define FENCE_STARTS_CYCLE_P | ( | F | ) |
#define FENCE_STATE | ( | F | ) |
#define FENCE_TC | ( | F | ) |
#define FLIST_FENCE | ( | L | ) |
#define FLIST_NEXT | ( | L | ) |
#define FLIST_TAIL_HEAD | ( | L | ) |
#define FLIST_TAIL_TAILP | ( | L | ) |
#define FOR_EACH_EXPR | ( | EXPR, | |
I, | |||
AV ) |
#define FOR_EACH_EXPR_1 | ( | EXPR, | |
I, | |||
AV ) |
#define FOR_EACH_INSN_1 | ( | INSN, | |
I, | |||
LP ) |
#define FOR_EACH_SUCC | ( | SUCC, | |
ITER, | |||
INSN ) |
#define FOR_EACH_SUCC_1 | ( | SUCC, | |
ITER, | |||
INSN, | |||
FLAGS ) |
#define ilist_clear | ( | LP | ) |
#define ILIST_INSN | ( | L | ) |
Referenced by _list_iter_cond_insn(), ilist_add(), and ilist_is_in_p().
#define ilist_iter_remove | ( | IP | ) |
#define ILIST_NEXT | ( | L | ) |
Referenced by ilist_is_in_p().
#define ilist_remove | ( | LP | ) |
#define IN_CURRENT_FENCE_P | ( | INSN | ) |
Return true if INSN is in current fence.
#define INSN_AFTER_STALL_P | ( | INSN | ) |
#define INSN_ANALYZED_DEPS | ( | INSN | ) |
#define INSN_ASM_P | ( | INSN | ) |
#define INSN_DEPS_CONTEXT | ( | INSN | ) |
#define INSN_EXPR | ( | INSN | ) |
#define INSN_FOUND_DEPS | ( | INSN | ) |
#define INSN_IN_STREAM_P | ( | INSN | ) |
Return true if INSN is linked into instruction stream. NB: It is impossible for INSN to have one field null and the other not null: gcc_assert ((PREV_INSN (INSN) == NULL_RTX) == (NEXT_INSN (INSN) == NULL_RTX)) is valid.
#define INSN_INIT_TODO_LUID (1) |
Provide a separate luid for the insn.
#define INSN_INIT_TODO_SIMPLEJUMP (4) |
Initialize data for simplejump.
#define INSN_INIT_TODO_SSID (2) |
Initialize s_s_i_d.
#define INSN_LHS | ( | INSN | ) |
#define INSN_LIVE | ( | INSN | ) |
#define INSN_LIVE_VALID_P | ( | INSN | ) |
#define INSN_NOP_P | ( | INSN | ) |
Return true if INSN is a local NOP. The nop is local in the sense that it was emitted by the scheduler as a temporary insn and will soon be deleted. These nops are identified by their pattern.
Referenced by sel_bb_empty_or_nop_p().
#define INSN_ORIGINATORS | ( | INSN | ) |
#define INSN_ORIGINATORS_BY_UID | ( | UID | ) |
#define INSN_READY_CYCLE | ( | INSN | ) |
#define INSN_REG_CLOBBERS | ( | INSN | ) |
#define INSN_REG_SETS | ( | INSN | ) |
#define INSN_REG_USES | ( | INSN | ) |
#define INSN_RHS | ( | INSN | ) |
#define INSN_SCHED_CYCLE | ( | INSN | ) |
#define INSN_SCHED_NEXT | ( | INSN | ) |
#define INSN_SCHED_TIMES | ( | INSN | ) |
#define INSN_SEQNO | ( | INSN | ) |
#define INSN_SIMPLEJUMP_P | ( | INSN | ) |
#define INSN_SPEC_CHECKED_DS | ( | INSN | ) |
#define INSN_TRANSFORMED_INSNS | ( | INSN | ) |
#define INSN_TYPE | ( | INSN | ) |
#define INSN_VINSN | ( | INSN | ) |
#define INSN_WS_LEVEL | ( | INSN | ) |
#define LOOP_MARKED_FOR_PIPELINING_P | ( | LOOP | ) |
#define LOOP_PREHEADER_BLOCKS | ( | LOOP | ) |
Saved loop preheader to transfer when scheduling the loop.
#define MARK_LOOP_FOR_PIPELINING | ( | LOOP | ) |
Marks loop as being considered for pipelining.
#define MAX_WS (param_selsched_max_lookahead) |
Software lookahead window size. According to the results in Nakatani and Ebcioglu [1993], window size of 16 is enough to extract most ILP in integer code.
#define SEL_GLOBAL_BB_INFO | ( | BB | ) |
Get data for BB.
#define SEL_REGION_BB_INFO | ( | BB | ) |
Get data for BB.
#define SET_LOOP_PREHEADER_BLOCKS | ( | LOOP, | |
BLOCKS ) |
#define SID | ( | INSN | ) |
#define SID_BY_UID | ( | UID | ) |
#define SUCC_ITER_EDGE | ( | ITER | ) |
Return the current edge along which a successor was built.
#define SUCCS_ALL (SUCCS_NORMAL | SUCCS_BACK | SUCCS_OUT) |
Include all successors.
#define SUCCS_BACK (2) |
Include back-edge successors.
Referenced by _eligible_successor_edge_p().
#define SUCCS_NORMAL (1) |
Flags to pass to compute_succs_info and FOR_EACH_SUCC. Any successor will fall into exactly one category.
Include normal successors.
Referenced by _eligible_successor_edge_p(), and _succ_iter_cond().
#define SUCCS_OUT (4) |
Include successors that are outside of the current region.
Referenced by _eligible_successor_edge_p().
#define SUCCS_SKIP_TO_LOOP_EXITS (8) |
When pipelining of the outer loops is enabled, skip innermost loops to their exits.
Referenced by _eligible_successor_edge_p(), and _succ_iter_cond().
#define VINSN_CLONABLE_P | ( | VI | ) |
#define VINSN_COUNT | ( | VI | ) |
#define VINSN_HASH | ( | VI | ) |
#define VINSN_HASH_RTX | ( | VI | ) |
#define VINSN_ID | ( | VI | ) |
#define VINSN_INSN_RTX | ( | VI | ) |
#define VINSN_LHS | ( | VI | ) |
#define VINSN_MAY_TRAP_P | ( | VI | ) |
#define VINSN_PATTERN | ( | VI | ) |
#define VINSN_REG_CLOBBERS | ( | VI | ) |
#define VINSN_REG_SETS | ( | VI | ) |
#define VINSN_REG_USES | ( | VI | ) |
#define VINSN_RHS | ( | VI | ) |
#define VINSN_SEPARABLE_P | ( | VI | ) |
#define VINSN_TYPE | ( | VI | ) |
#define VINSN_UNIQUE_P | ( | VI | ) |
typedef struct _list_node* _list_t |
List backend.
typedef _list_iterator _xlist_iterator |
typedef _list_iterator av_set_iterator |
Av set iterators.
typedef _list_iterator def_list_iterator |
typedef _list_t def_list_t |
Def list iterators.
typedef struct expr_history_def_1 expr_history_def |
typedef struct flist_tail_def* flist_tail_t |
typedef _list_iterator ilist_iterator |
typedef class _sel_insn_data sel_insn_data_def |
typedef sel_insn_data_def* sel_insn_data_t |
typedef void* tc_t |
Instruction scheduling pass. This file contains definitions used internally in the scheduler. Copyright (C) 2006-2025 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
For state_t.
For reg_note.
tc_t is a short for target context. This is a state of the target backend.
enum deps_where_t |
enum local_trans_type |
|
inline |
Returns true when E1 is an eligible successor edge, possibly skipping empty blocks. When E2P is not null, the resulting edge is written there. FLAGS are used to specify whether back edges and out-of-region edges should be considered.
References succ_iterator::bb, succ_iterator::current_flags, succ_iterator::e2, EDGE_COUNT, EDGE_SUCC, succ_iterator::flags, gcc_assert, in_current_region_p(), basic_block_def::index, basic_block_def::loop_father, pipelining_p, sel_bb_empty_or_nop_p(), sel_bb_empty_p(), basic_block_def::succs, SUCCS_BACK, SUCCS_NORMAL, SUCCS_OUT, and SUCCS_SKIP_TO_LOOP_EXITS.
|
inline |
References _list_alloc(), and _LIST_NEXT.
Referenced by _xlist_add(), and ilist_add().
|
inline |
References sched_lists_pool.
Referenced by _list_add().
|
inline |
References _list_remove().
|
inline |
References DEF_LIST_DEF.
References _AV_SET_EXPR.
Used through _FOR_EACH.
References ILIST_INSN.
|
inline |
References _LIST_NEXT, _list_iterator::lp, and _list_iterator::removed_p.
|
inline |
References _list_remove(), _list_iterator::can_remove_p, gcc_assert, _list_iterator::lp, and _list_iterator::removed_p.
|
inline |
|
inline |
References _list_iterator::can_remove_p, _list_iterator::lp, and _list_iterator::removed_p.
|
inline |
References _LIST_NEXT, and sched_lists_pool.
Referenced by _list_clear(), and _list_iter_remove().
|
inline |
References _LIST_NEXT.
Referenced by _list_iter_remove_nofree().
|
inline |
References after_recovery, succ_iterator::bb, succ_iterator::bb_end, bb_note(), BLOCK_FOR_INSN(), cfun, succ_iterator::current_exit, succ_iterator::current_flags, succ_iterator::e1, succ_iterator::e2, succ_iterator::ei, ei_cond(), ei_next(), EXIT_BLOCK_PTR_FOR_FN, exit_insn, succ_iterator::flags, gcc_assert, get_all_loop_exits(), in_current_region_p(), basic_block_def::index, succ_iterator::loop_exits, NEXT_INSN(), NULL, sel_bb_head(), SUCCS_NORMAL, and SUCCS_SKIP_TO_LOOP_EXITS.
|
inline |
|
inline |
We need to return a succ_iterator to avoid 'unitialized' warning during bootstrap.
References BB_END, BLOCK_FOR_INSN(), cfun, ei_start, EXIT_BLOCK_PTR_FOR_FN, gcc_assert, i, INSN_P, NOTE_INSN_BASIC_BLOCK_P, NULL, and basic_block_def::succs.
_xlist_t functions.
References _list_add(), and _XLIST_X.
References _XLIST_NEXT, and _XLIST_X.
|
extern |
|
extern |
|
extern |
Deps context functions.
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
inline |
Return the next block of BB not running into inconsistencies.
References EDGE_COUNT, FALLTHRU_EDGE, basic_block_def::next_bb, single_succ(), and basic_block_def::succs.
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
inline |
Collect all loop exits recursively, skipping empty BBs between them. E.g. if BB is a loop header which has several loop exits, traverse all of them and if any of them turns out to be another loop header (after skipping empty BBs), add its loop exits to the resulting vector as well.
References current_loop_nest, EDGE_COUNT, loop::exits, gcc_assert, get_all_loop_exits(), get_loop_exit_edges_unique_dests(), i, in_current_region_p(), inner_loop_header_p(), loop_depth(), basic_block_def::loop_father, loop_outer(), NULL, sel_bb_empty_or_nop_p(), single_succ(), basic_block_def::succs, and vNULL.
Referenced by _succ_iter_cond(), and get_all_loop_exits().
|
extern |
|
extern |
Return exit edges of LOOP, filtering out edges with the same dest bb.
References cfun, current_loops, loop_exit::e, EXIT_BLOCK_PTR_FOR_FN, loop::exits, gcc_assert, i, loop::latch, LOOPS_HAVE_RECORDED_EXITS, loop_exit::next, and vNULL.
Referenced by get_all_loop_exits().
|
extern |
|
extern |
Pool functions.
|
extern |
ilist_t functions.
References _list_add(), and ILIST_INSN.
References ILIST_INSN, and ILIST_NEXT.
|
extern |
Referenced by _eligible_successor_edge_p(), _succ_iter_cond(), and get_all_loop_exits().
|
extern |
Fences functions.
|
extern |
Various initialization functions.
|
inline |
True when BB is a header of the inner loop.
References cfun, current_loop_nest, EXIT_BLOCK_PTR_FOR_FN, flow_bb_inside_loop_p(), gcc_assert, loop::header, loop_depth(), and basic_block_def::loop_father.
Referenced by get_all_loop_exits().
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
inline |
References cfun, EXIT_BLOCK_PTR_FOR_FN, INSN_NOP_P, last, NULL_RTX, sel_bb_end(), and sel_bb_head().
Referenced by _eligible_successor_edge_p(), and get_all_loop_exits().
|
extern |
Referenced by _eligible_successor_edge_p().
|
extern |
Referenced by sel_bb_empty_or_nop_p().
|
extern |
Basic block and CFG functions.
Referenced by _succ_iter_cond(), and sel_bb_empty_or_nop_p().
|
extern |
Dependence analysis functions.
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
Some needed definitions.
Referenced by _succ_iter_cond().
|
extern |
Saves pipelined blocks. Bitmap is indexed by bb->index.
|
extern |
|
extern |
|
extern |
The loop nest being pipelined.
Referenced by get_all_loop_exits(), and inner_loop_header_p().
|
extern |
Various flags.
|
extern |
An insn that 'contained' in EXIT block.
Referenced by _succ_iter_cond().
|
extern |
A list of fences currently in the works.
|
extern |
Used in bb_in_ebb_p.
|
extern |
A global level shows whether an insn is valid or not.
|
extern |
|
extern |
A NOP pattern used as a placeholder for real insns.
|
extern |
Referenced by _eligible_successor_edge_p().
|
extern |
|
extern |
|
extern |
_list_t functions. All of _*list_* functions are used through accessor macros, thus we can't move them in sel-sched-ir.cc.
Referenced by _list_alloc(), and _list_remove().
|
extern |
|
extern |
Per basic block data. This array is indexed by basic block index.
|
extern |
Per basic block data. This array is indexed by basic block index.