GCC Middle and Back End API Reference
cfgrtl.h
Go to the documentation of this file.
1/* Define control flow data structures for the CFG.
2 Copyright (C) 2014-2026 Free Software Foundation, Inc.
3
4This file is part of GCC.
5
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
9version.
10
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.
15
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/>. */
19
20#ifndef GCC_CFGRTL_H
21#define GCC_CFGRTL_H
22
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);
39extern void emit_barrier_after_bb (basic_block bb);
41extern void insert_insn_on_edge (rtx, edge);
42extern void prepend_insn_to_edge (rtx, edge);
43extern void commit_one_edge_insertion (edge e);
44extern void commit_edge_insertions (void);
45extern void print_rtl_with_bb (FILE *, const rtx_insn *, dump_flags_t);
48extern void fixup_partitions (void);
49extern bool purge_dead_edges (basic_block);
50extern bool purge_all_dead_edges (void);
51extern bool fixup_abnormal_edges (void);
54extern void relink_block_chain (bool);
56 class loop *, class copy_bb_data *);
57extern void cfg_layout_initialize (int);
58extern void cfg_layout_finalize (void);
59extern void break_superblocks (void);
60extern void init_rtl_bb_info (basic_block);
61extern void find_bbs_reachable_by_hot_paths (hash_set <basic_block> *);
62
63#endif /* GCC_CFGRTL_H */
bool can_fallthru(basic_block src, basic_block target)
Definition cfgrtl.cc:650
void relink_block_chain(bool stay_in_cfglayout_mode)
Definition cfgrtl.cc:3844
void emit_barrier_after_bb(basic_block bb)
Definition cfgrtl.cc:1487
void compute_bb_for_insn(void)
Definition cfgrtl.cc:432
void cfg_layout_initialize(int flags)
Definition cfgrtl.cc:4567
void update_cfg_for_uncondjump(rtx_insn *insn)
Definition cfgrtl.cc:3538
rtx_insn * get_last_bb_insn(basic_block bb)
Definition cfgrtl.cc:2378
bool purge_dead_edges(basic_block bb)
Definition cfgrtl.cc:3197
rtx_insn * unlink_insn_chain(rtx_insn *first, rtx_insn *last)
Definition cfgrtl.cc:3582
void break_superblocks(void)
Definition cfgrtl.cc:4598
void init_rtl_bb_info(basic_block bb)
Definition cfgrtl.cc:5316
void find_bbs_reachable_by_hot_paths(hash_set< basic_block > *set)
Definition cfgrtl.cc:2402
void commit_one_edge_insertion(edge e)
Definition cfgrtl.cc:2017
void update_br_prob_note(basic_block bb)
Definition cfgrtl.cc:2349
void delete_insn_chain(rtx start, rtx_insn *finish, bool clear_bb)
Definition cfgrtl.cc:262
basic_block create_basic_block_structure(rtx_insn *head, rtx_insn *end, rtx_note *bb_note, basic_block after)
Definition cfgrtl.cc:294
void commit_edge_insertions(void)
Definition cfgrtl.cc:2147
bool contains_no_active_insn_p(const_basic_block bb)
Definition cfgrtl.cc:604
void fixup_partitions(void)
Definition cfgrtl.cc:2460
void update_bb_for_insn_chain(rtx_insn *begin, rtx_insn *end, basic_block bb)
Definition cfgrtl.cc:541
void print_rtl_with_bb(FILE *outf, const rtx_insn *rtx_first, dump_flags_t flags)
Definition cfgrtl.cc:2230
bool delete_insn_and_edges(rtx_insn *insn)
Definition cfgrtl.cc:233
bool fixup_abnormal_edges(void)
Definition cfgrtl.cc:3446
bool purge_all_dead_edges(void)
Definition cfgrtl.cc:3424
rtx_note * bb_note(basic_block bb)
Definition cfgrtl.cc:698
void update_bb_for_insn(basic_block bb)
Definition cfgrtl.cc:555
edge try_redirect_by_replacing_jump(edge e, basic_block target, bool in_cfglayout)
Definition cfgrtl.cc:1065
void insert_insn_on_edge(rtx pattern, edge e)
Definition cfgrtl.cc:1980
void free_bb_for_insn(void)
Definition cfgrtl.cc:453
void prepend_insn_to_edge(rtx pattern, edge e)
Definition cfgrtl.cc:2000
rtx_code_label * block_label(basic_block block)
Definition cfgrtl.cc:1021
bool forwarder_block_p(const_basic_block bb)
Definition cfgrtl.cc:627
void cfg_layout_finalize(void)
Definition cfgrtl.cc:4625
void delete_insn(rtx_insn *insn)
Definition cfgrtl.cc:136
basic_block force_nonfallthru_and_redirect(edge e, basic_block target, rtx jump_label)
Definition cfgrtl.cc:1520
rtx_insn * entry_of_function(void)
Definition cfgrtl.cc:516
rtx_insn * duplicate_insn_chain(rtx_insn *from, rtx_insn *to, class loop *loop, copy_bb_data *id)
Definition cfgrtl.cc:4384
Definition cfghooks.h:68
Definition cfgloop.h:120
struct basic_block_def * basic_block
Definition coretypes.h:351
struct rtx_def * rtx
Definition coretypes.h:57
class edge_def * edge
Definition coretypes.h:348
const struct basic_block_def * const_basic_block
Definition coretypes.h:352
enum dump_flag dump_flags_t
Definition dumpfile.h:209
Definition rtl.h:682
Definition rtl.h:549
Definition rtl.h:693