GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
class | jump_thread_edge |
class | jump_thread_path_allocator |
class | jt_path_registry |
class | fwd_jt_path_registry |
class | back_jt_path_registry |
struct | removed_edges |
Enumerations | |
enum | jump_thread_edge_type { EDGE_START_JUMP_THREAD , EDGE_COPY_SRC_BLOCK , EDGE_COPY_SRC_JOINER_BLOCK , EDGE_NO_COPY_SRC_BLOCK } |
enum | bb_dom_status { DOMST_NONDOMINATING , DOMST_LOOP_BROKEN , DOMST_DOMINATING } |
Functions | |
unsigned int | estimate_threading_killed_stmts (basic_block) |
enum bb_dom_status | determine_bb_domination_status (class loop *, basic_block) |
void | free_dom_edge_info (edge) |
Communication between registering jump thread requests and updating the SSA/CFG for jump threading. Copyright (C) 2013-2024 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/>.
Enumerator | |
---|---|
EDGE_START_JUMP_THREAD | |
EDGE_COPY_SRC_BLOCK | |
EDGE_COPY_SRC_JOINER_BLOCK | |
EDGE_NO_COPY_SRC_BLOCK |
enum bb_dom_status determine_bb_domination_status | ( | class loop * | loop, |
basic_block | bb ) |
Evaluates the dominance relationship of latch of the LOOP and BB, and returns the state.
References dbds_ce_stop, dbds_continue_enumeration_p(), dfs_enumerate_from(), DOMST_DOMINATING, DOMST_LOOP_BROKEN, DOMST_NONDOMINATING, el::e, FOR_EACH_EDGE, free(), ggc_alloc(), loop::header, i, loop::latch, loop::num_nodes, and basic_block_def::preds.
Referenced by back_threader_profitability::profitable_path_p(), and fwd_jt_path_registry::thread_through_loop_header().
|
extern |
Starting from the final control flow stmt in BB, assuming it will be removed, follow uses in to-be-removed stmts back to their defs and count how many defs are to become dead and be removed as well.
References dump_file, EDGE_COUNT, FOR_EACH_SSA_USE_OPERAND, gcc_assert, ggc_alloc(), gimple_bb(), gimple_has_side_effects(), gimple_phi_result(), gsi_end_p(), gsi_last_bb(), gsi_next(), gsi_start_phis(), gsi_stmt(), basic_block_def::index, basic_block_def::preds, SSA_NAME_DEF_STMT, SSA_OP_USE, USE_FROM_PTR, uses_in_bb(), and virtual_operand_p().
Referenced by fwd_jt_path_registry::mark_threaded_blocks(), and jump_threader::record_temporary_equivalences_from_stmts_at_dest().
Free the edge_info data attached to E, if it exists and clear e->aux.
References edge_info::edge_info(), and NULL.
Referenced by edge_info::edge_info(), free_all_edge_infos(), record_edge_info(), and remove_ctrl_stmt_and_useless_edges().