|
GCC Middle and Back End API Reference
|
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 | 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 | 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 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 | 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 _LIST_NEXT | ( | L | ) |
Referenced by _list_add(), _list_iter_next(), _list_remove(), and _list_remove_nofree().
| #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 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-2026 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/>.
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 _eligible_successor_edge_p(), 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.
Referenced by _eligible_successor_edge_p().
|
inline |
References _list_add(), _list_alloc(), and _LIST_NEXT.
Referenced by _list_add(), and ilist_add().
|
inline |
References _list_alloc(), and sched_lists_pool.
Referenced by _list_add(), and _list_alloc().
|
inline |
References _list_clear(), and _list_remove().
Referenced by _list_clear().
|
inline |
References _list_iter_cond_def(), and DEF_LIST_DEF.
Referenced by _list_iter_cond_def().
References _AV_SET_EXPR, and _list_iter_cond_expr().
Referenced by _list_iter_cond_expr().
Used through _FOR_EACH.
References _list_iter_cond_insn(), and ILIST_INSN.
Referenced by _list_iter_cond_insn().
|
inline |
References _list_iter_next(), _LIST_NEXT, _list_iterator::lp, and _list_iterator::removed_p.
Referenced by _list_iter_next().
|
inline |
References _list_iter_remove(), _list_remove(), _list_iterator::can_remove_p, gcc_assert, _list_iterator::lp, and _list_iterator::removed_p.
Referenced by _list_iter_remove().
|
inline |
References _list_iter_remove_nofree(), _list_remove_nofree(), _list_iterator::can_remove_p, gcc_assert, _list_iterator::lp, and _list_iterator::removed_p.
Referenced by _list_iter_remove_nofree().
|
inline |
References _list_iter_start(), _list_iterator::can_remove_p, _list_iterator::lp, and _list_iterator::removed_p.
Referenced by _list_iter_start().
|
inline |
References _LIST_NEXT, _list_remove(), and sched_lists_pool.
Referenced by _list_clear(), _list_iter_remove(), and _list_remove().
|
inline |
References _LIST_NEXT, and _list_remove_nofree().
Referenced by _list_iter_remove_nofree(), and _list_remove_nofree().
|
inline |
References _succ_iter_cond(), 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.
Referenced by _succ_iter_cond().
|
inline |
References _succ_iter_next(), succ_iterator::bb_end, succ_iterator::e1, succ_iterator::e2, succ_iterator::ei, ei_next(), gcc_assert, and succ_iterator::loop_exits.
Referenced by _succ_iter_next().
|
inline |
We need to return a succ_iterator to avoid 'uninitialized' warning during bootstrap.
References _succ_iter_start(), 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.
Referenced by _succ_iter_start().
|
extern |
References add_clean_fence_to_fences().
Referenced by add_clean_fence_to_fences().
|
extern |
References add_dirty_fence_to_fences().
Referenced by add_dirty_fence_to_fences().
|
extern |
|
extern |
References alloc_sched_pools().
Referenced by alloc_sched_pools().
|
extern |
References av_set_clear().
Referenced by av_set_clear().
References av_set_code_motion_filter().
Referenced by av_set_code_motion_filter().
References av_set_copy().
Referenced by av_set_copy().
References av_set_element().
Referenced by av_set_element().
References av_set_is_in_p().
Referenced by av_set_is_in_p().
|
extern |
References av_set_iter_remove().
Referenced by av_set_iter_remove().
|
extern |
References av_set_leave_one_nonspec().
Referenced by av_set_leave_one_nonspec().
References av_set_lookup().
Referenced by av_set_lookup().
|
extern |
References av_set_split_usefulness().
Referenced by av_set_split_usefulness().
|
extern |
References av_set_substract_cond_branches().
Referenced by av_set_substract_cond_branches().
References av_set_union_and_clear().
Referenced by av_set_union_and_clear().
References av_set_union_and_live().
Referenced by av_set_union_and_live().
|
extern |
References bb_ends_ebb_p().
Referenced by bb_ends_ebb_p().
References bb_header_p(), and sel_bb_head().
Referenced by bb_header_p().
|
inline |
Return the next block of BB not running into inconsistencies.
References bb_next_bb(), EDGE_COUNT, FALLTHRU_EDGE, basic_block_def::next_bb, single_succ(), and basic_block_def::succs.
Referenced by bb_next_bb().
References blist_add().
Referenced by blist_add().
|
extern |
References blist_remove().
Referenced by blist_remove().
References bookkeeping_can_be_created_if_moved_through_p().
Referenced by bookkeeping_can_be_created_if_moved_through_p().
References change_vinsn_in_expr().
Referenced by change_vinsn_in_expr().
|
extern |
References clear_expr().
Referenced by clear_expr().
|
extern |
References clear_outdated_rtx_info().
Referenced by clear_outdated_rtx_info().
References compute_live().
Referenced by compute_live().
|
extern |
References compute_succs_info().
Referenced by compute_succs_info().
References considered_for_pipelining_p().
Referenced by considered_for_pipelining_p().
References copy_expr_onside().
Referenced by copy_expr_onside().
References create_copy_of_insn_rtx().
Referenced by create_copy_of_insn_rtx().
Expression transformation routines.
References create_insn_rtx_from_pattern().
Referenced by create_insn_rtx_from_pattern().
Target context functions.
References create_target_context().
Referenced by create_target_context().
References create_vinsn_from_insn_rtx().
Referenced by create_vinsn_from_insn_rtx().
|
extern |
References def_list_add().
Referenced by def_list_add().
|
extern |
References exchange_data_sets().
Referenced by exchange_data_sets().
References expr_dest_reg().
Referenced by expr_dest_reg().
|
extern |
References expr_dest_regno().
Referenced by expr_dest_regno().
|
extern |
References fallthru_bb_of_jump().
Referenced by fallthru_bb_of_jump().
|
extern |
References find_in_history_vect().
Referenced by find_in_history_vect().
|
extern |
References flist_clear().
Referenced by flist_clear().
References flist_lookup().
Referenced by flist_lookup().
|
extern |
References flist_tail_init().
Referenced by flist_tail_init().
|
extern |
References free_bb_note_pool().
Referenced by free_bb_note_pool().
|
extern |
References free_data_for_scheduled_insn().
Referenced by free_data_for_scheduled_insn().
|
extern |
References free_data_sets().
Referenced by free_data_sets().
|
extern |
References free_lv_sets().
Referenced by free_lv_sets().
|
extern |
References free_nop_and_exit_insns().
Referenced by free_nop_and_exit_insns().
|
extern |
References free_nop_pool().
Referenced by free_nop_pool().
|
extern |
References free_nop_vinsn().
Referenced by free_nop_vinsn().
|
extern |
References free_regset_pool().
Referenced by free_regset_pool().
|
extern |
References free_sched_pools().
Referenced by free_sched_pools().
|
extern |
References free_succs_info().
Referenced by free_succs_info().
|
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 |
References get_av_level().
Referenced by get_av_level().
References get_av_set().
Referenced by get_av_set().
|
extern |
References get_clear_regset_from_pool().
Referenced by get_clear_regset_from_pool().
References get_dest_and_mode().
Referenced by get_dest_and_mode().
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, get_loop_exit_edges_unique_dests(), i, loop::latch, LOOPS_HAVE_RECORDED_EXITS, loop_exit::next, and vNULL.
Referenced by get_all_loop_exits(), and get_loop_exit_edges_unique_dests().
|
extern |
References get_loop_nest_for_rgn().
Referenced by get_loop_nest_for_rgn().
References get_nop_from_pool().
Referenced by get_nop_from_pool().
|
extern |
|
extern |
References get_seqno_by_preds().
Referenced by get_seqno_by_preds().
References has_dependence_p().
Referenced by has_dependence_p().
Functions that are used in sel-sched.cc.
List functions.
References ilist_copy().
Referenced by ilist_copy().
References ilist_invert().
Referenced by ilist_invert().
References ILIST_INSN, ilist_is_in_p(), and ILIST_NEXT.
Referenced by ilist_is_in_p().
|
extern |
References in_current_region_p().
Referenced by _eligible_successor_edge_p(), _succ_iter_cond(), get_all_loop_exits(), in_current_region_p(), and sel_bb_end_p().
References in_same_ebb_p().
Referenced by in_same_ebb_p().
|
extern |
|
extern |
|
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, inner_loop_header_p(), loop_depth(), and basic_block_def::loop_father.
Referenced by get_all_loop_exits(), and inner_loop_header_p().
|
extern |
References insert_in_history_vect().
Referenced by insert_in_history_vect().
|
extern |
References insn_sid().
Referenced by insn_sid().
Functions to work with insns.
References lhs_of_insn_equals_to_dest_p().
Referenced by lhs_of_insn_equals_to_dest_p().
|
extern |
References make_region_from_loop_preheader().
Referenced by make_region_from_loop_preheader().
References mark_unavailable_targets().
Referenced by mark_unavailable_targets().
References merge_expr().
Referenced by merge_expr().
References merge_expr_data().
Referenced by merge_expr_data().
|
extern |
References merge_with_other_exprs().
Referenced by merge_with_other_exprs().
|
extern |
References move_fence_to_fences().
Referenced by move_fence_to_fences().
|
extern |
References purge_empty_blocks().
Referenced by purge_empty_blocks().
|
extern |
References recompute_vinsn_lhs_rhs().
Referenced by recompute_vinsn_lhs_rhs().
References register_unavailable_p().
Referenced by register_unavailable_p().
References reset_target_context().
Referenced by reset_target_context().
References return_nop_to_pool().
Referenced by return_nop_to_pool().
|
extern |
References return_regset_to_pool().
Referenced by return_regset_to_pool().
|
extern |
References sel_add_loop_preheaders().
Referenced by sel_add_loop_preheaders().
|
inline |
References cfun, EXIT_BLOCK_PTR_FOR_FN, INSN_NOP_P, NULL_RTX, sel_bb_empty_or_nop_p(), sel_bb_end(), and sel_bb_head().
Referenced by _eligible_successor_edge_p(), get_all_loop_exits(), and sel_bb_empty_or_nop_p().
|
extern |
References sel_bb_empty_p().
Referenced by _eligible_successor_edge_p(), sel_bb_empty_p(), and sel_bb_end_p().
|
extern |
References sel_bb_end().
Referenced by sel_bb_empty_or_nop_p(), sel_bb_end(), and sel_bb_head_p().
References in_current_region_p(), sel_bb_empty_p(), and sel_bb_end_p().
Referenced by sel_bb_end_p().
|
extern |
Basic block and CFG functions.
References sel_bb_head().
Referenced by _succ_iter_cond(), bb_header_p(), sel_bb_empty_or_nop_p(), and sel_bb_head().
References sel_bb_end(), and sel_bb_head_p().
Referenced by sel_bb_head_p().
|
extern |
Dependence analysis functions.
References sel_clear_has_dependence().
Referenced by sel_clear_has_dependence().
|
extern |
References sel_create_recovery_block().
Referenced by sel_create_recovery_block().
|
extern |
References sel_extend_global_bb_info().
Referenced by sel_extend_global_bb_info().
|
extern |
References sel_finish_bbs().
Referenced by sel_finish_bbs().
|
extern |
References sel_finish_global_and_expr().
Referenced by sel_finish_global_and_expr().
|
extern |
References sel_finish_global_bb_info().
Referenced by sel_finish_global_bb_info().
|
extern |
References sel_finish_pipelining().
Referenced by sel_finish_pipelining().
References sel_gen_insn_from_expr_after().
Referenced by sel_gen_insn_from_expr_after().
References sel_gen_insn_from_rtx_after().
Referenced by sel_gen_insn_from_rtx_after().
References sel_gen_recovery_insn_from_rtx_after().
Referenced by sel_gen_recovery_insn_from_rtx_after().
|
extern |
References sel_init_bbs().
Referenced by sel_init_bbs().
|
extern |
References sel_init_global_and_expr().
Referenced by sel_init_global_and_expr().
|
extern |
References sel_init_pipelining().
Referenced by sel_init_pipelining().
References sel_insn_has_single_succ_p().
Referenced by sel_insn_has_single_succ_p().
|
extern |
References sel_is_loop_preheader_p().
Referenced by sel_is_loop_preheader_p().
References sel_move_insn().
Referenced by sel_move_insn().
References sel_num_cfg_preds_gt_1().
Referenced by sel_num_cfg_preds_gt_1().
|
extern |
References sel_redirect_edge_and_branch().
Referenced by sel_redirect_edge_and_branch().
|
extern |
References sel_redirect_edge_and_branch_force().
Referenced by sel_redirect_edge_and_branch_force().
|
extern |
References sel_register_cfg_hooks().
Referenced by sel_register_cfg_hooks().
References sel_remove_insn().
Referenced by sel_remove_insn().
|
extern |
References sel_sched_region().
Referenced by sel_sched_region().
|
extern |
References sel_set_sched_flags().
Referenced by sel_set_sched_flags().
|
extern |
References sel_setup_sched_infos().
Referenced by sel_setup_sched_infos().
|
extern |
References sel_split_edge().
Referenced by sel_split_edge().
|
extern |
References sel_unregister_cfg_hooks().
Referenced by sel_unregister_cfg_hooks().
|
extern |
References sel_vinsn_cost().
Referenced by sel_vinsn_cost().
|
extern |
References set_target_context().
Referenced by set_target_context().
|
extern |
References setup_nop_and_exit_insns().
Referenced by setup_nop_and_exit_insns().
|
extern |
References setup_nop_vinsn().
Referenced by setup_nop_vinsn().
|
extern |
References speculate_expr().
Referenced by speculate_expr().
References tick_check_p().
Referenced by tick_check_p().
|
extern |
References tidy_control_flow().
Referenced by tidy_control_flow().
|
extern |
References vinsn_attach().
Referenced by vinsn_attach().
References vinsn_cond_branch_p().
Referenced by vinsn_cond_branch_p().
References vinsn_copy().
Referenced by vinsn_copy().
|
extern |
References vinsn_detach().
Referenced by vinsn_detach().
References vinsn_equal_p().
Referenced by vinsn_equal_p().
|
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.