GCC Middle and Back End API Reference
Go to the documentation of this file.
1/* Define control flow data structures for the CFG.
2 Copyright (C) 2014-2024 Free Software Foundation, Inc.
4This file is part of GCC.
6GCC is free software; you can redistribute it and/or modify it under
7the terms of the GNU General Public License as published by the Free
8Software Foundation; either version 3, or (at your option) any later
11GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12WARRANTY; without even the implied warranty of MERCHANTABILITY or
13FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14for more details.
16You should have received a copy of the GNU General Public License
17along with GCC; see the file COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
20#ifndef GCC_CFGRTL_H
21#define GCC_CFGRTL_H
23extern void delete_insn (rtx_insn *);
24extern bool delete_insn_and_edges (rtx_insn *);
25extern void delete_insn_chain (rtx, rtx_insn *, bool);
28extern void compute_bb_for_insn (void);
29extern void free_bb_for_insn (void);
30extern rtx_insn *entry_of_function (void);
38extern void emit_barrier_after_bb (basic_block bb);
40extern void insert_insn_on_edge (rtx, edge);
41extern void prepend_insn_to_edge (rtx, edge);
42extern void commit_one_edge_insertion (edge e);
43extern void commit_edge_insertions (void);
44extern void print_rtl_with_bb (FILE *, const rtx_insn *, dump_flags_t);
47extern void fixup_partitions (void);
48extern bool purge_dead_edges (basic_block);
49extern bool purge_all_dead_edges (void);
50extern bool fixup_abnormal_edges (void);
53extern void relink_block_chain (bool);
55 class loop *, class copy_bb_data *);
56extern void cfg_layout_initialize (int);
57extern void cfg_layout_finalize (void);
58extern void break_superblocks (void);
59extern void init_rtl_bb_info (basic_block);
62#endif /* GCC_CFGRTL_H */
rtx_insn * unlink_insn_chain(rtx_insn *, rtx_insn *)
Definition cfgrtl.cc:3567
void find_bbs_reachable_by_hot_paths(hash_set< basic_block > *)
Definition cfgrtl.cc:2397
void emit_barrier_after_bb(basic_block bb)
Definition cfgrtl.cc:1475
void compute_bb_for_insn(void)
Definition cfgrtl.cc:433
void break_superblocks(void)
Definition cfgrtl.cc:4582
void insert_insn_on_edge(rtx, edge)
Definition cfgrtl.cc:1973
rtx_insn * get_last_bb_insn(basic_block)
Definition cfgrtl.cc:2373
basic_block force_nonfallthru_and_redirect(edge, basic_block, rtx)
Definition cfgrtl.cc:1508
void delete_insn(rtx_insn *)
Definition cfgrtl.cc:137
void prepend_insn_to_edge(rtx, edge)
Definition cfgrtl.cc:1994
void relink_block_chain(bool)
Definition cfgrtl.cc:3829
void commit_one_edge_insertion(edge e)
Definition cfgrtl.cc:2012
bool delete_insn_and_edges(rtx_insn *)
Definition cfgrtl.cc:234
void init_rtl_bb_info(basic_block)
Definition cfgrtl.cc:5301
bool forwarder_block_p(const_basic_block)
Definition cfgrtl.cc:615
void update_cfg_for_uncondjump(rtx_insn *)
Definition cfgrtl.cc:3523
void delete_insn_chain(rtx, rtx_insn *, bool)
Definition cfgrtl.cc:263
void print_rtl_with_bb(FILE *, const rtx_insn *, dump_flags_t)
Definition cfgrtl.cc:2225
void cfg_layout_initialize(int)
Definition cfgrtl.cc:4551
void commit_edge_insertions(void)
Definition cfgrtl.cc:2142
void fixup_partitions(void)
Definition cfgrtl.cc:2455
void update_bb_for_insn(basic_block)
Definition cfgrtl.cc:556
rtx_insn * duplicate_insn_chain(rtx_insn *, rtx_insn *, class loop *, class copy_bb_data *)
Definition cfgrtl.cc:4369
bool purge_dead_edges(basic_block)
Definition cfgrtl.cc:3192
rtx_code_label * block_label(basic_block)
Definition cfgrtl.cc:1009
bool fixup_abnormal_edges(void)
Definition cfgrtl.cc:3431
bool purge_all_dead_edges(void)
Definition cfgrtl.cc:3409
bool can_fallthru(basic_block, basic_block)
Definition cfgrtl.cc:638
basic_block create_basic_block_structure(rtx_insn *, rtx_insn *, rtx_note *, basic_block)
Definition cfgrtl.cc:295
void free_bb_for_insn(void)
Definition cfgrtl.cc:454
void update_br_prob_note(basic_block)
Definition cfgrtl.cc:2344
rtx_note * bb_note(basic_block)
Definition cfgrtl.cc:686
bool contains_no_active_insn_p(const_basic_block)
Definition cfgrtl.cc:592
void cfg_layout_finalize(void)
Definition cfgrtl.cc:4609
edge try_redirect_by_replacing_jump(edge, basic_block, bool)
Definition cfgrtl.cc:1053
rtx_insn * entry_of_function(void)
Definition cfgrtl.cc:517
Definition cfghooks.h:65
Definition cfgloop.h:120
class edge_def * edge
Definition coretypes.h:342
enum dump_flag dump_flags_t
Definition dumpfile.h:209
Definition ggc.h:184
Definition basic-block.h:117
Definition rtl.h:678
Definition rtl.h:311
Definition rtl.h:545
Definition rtl.h:689