GCC Middle and Back End API Reference
|
Go to the source code of this file.
Functions | |
bool | inside_basic_block_p (const rtx_insn *) |
bool | control_flow_insn_p (const rtx_insn *) |
void | rtl_make_eh_edge (sbitmap, basic_block, rtx) |
void | find_many_sub_basic_blocks (sbitmap) |
void | find_sub_basic_blocks (basic_block) |
Return true if INSN may cause control flow transfer, so it should be last in the basic block.
References can_nonlocal_goto(), can_throw_internal(), cfun, const1_rtx, find_reg_note(), gcc_unreachable, GET_CODE, PATTERN(), SIBLING_CALL_P, and XEXP.
Referenced by add_labels_and_missing_jumps(), dce_process_block(), decompose_multiword_subregs(), emit_common_tails_for_components(), emit_moves(), find_bb_boundaries(), find_moveable_pseudos(), reload_combine(), rtl_verify_bb_insns(), try_head_merge_bb(), unify_moves(), and word_dce_process_block().
|
extern |
Assume that some pass has inserted labels or control flow instructions within a basic block. Split basic blocks as needed and create edges.
References any_condjump_p(), BB_END, bitmap_bit_p, BLOCK_NEW, BLOCK_ORIGINAL, BLOCK_TO_SPLIT, cfun, compute_outgoing_frequencies(), EDGE_COUNT, EXIT_BLOCK_PTR_FOR_FN, find_bb_boundaries(), FOR_BB_BETWEEN, FOR_EACH_BB_FN, basic_block_def::index, JUMP_P, last_basic_block_for_fn, make_edges(), basic_block_def::next_bb, PROFILE_ABSENT, profile_status_for_fn, SET_STATE, STATE, basic_block_def::succs, update_br_prob_note(), and update_profile_for_new_sub_basic_block().
Referenced by break_superblocks(), lra(), reload(), split_all_insns(), and thread_prologue_and_epilogue_insns().
|
extern |
Like find_many_sub_basic_blocks, but look only within BB.
References cfun, compute_outgoing_frequencies(), find_bb_boundaries(), make_edges(), basic_block_def::next_bb, basic_block_def::prev_bb, PROFILE_ABSENT, profile_status_for_fn, and update_profile_for_new_sub_basic_block().
Referenced by commit_one_edge_insertion(), and thread_prologue_and_epilogue_insns().
Control flow graph building header file. Copyright (C) 2014-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/>.
Return true if insn is something that should be contained inside basic block.
References gcc_unreachable, GET_CODE, JUMP_TABLE_DATA_P, and NEXT_INSN().
Referenced by find_bb_boundaries(), save_point_p(), and scan_trace().
|
extern |
Create the edges generated by INSN in REGION.
References CALL_P, gcc_assert, get_eh_landing_pad_from_rtx(), label_rtx(), eh_landing_pad_d::landing_pad, make_label_edge(), NULL, and eh_landing_pad_d::post_landing_pad.
Referenced by decompose_multiword_subregs(), and make_edges().