GCC Middle and Back End API Reference
dominance.h
Go to the documentation of this file.
1/* Calculate (post)dominators header file.
2 Copyright (C) 2014-2024 Free Software Foundation, Inc.
3
4 This file is part of GCC.
5
6 GCC is free software; you can redistribute it and/or modify it
7 under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
9 any later version.
10
11 GCC is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
14 License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with GCC; see the file COPYING3. If not see
18 <http://www.gnu.org/licenses/>. */
19
20#ifndef GCC_DOMINANCE_H
21#define GCC_DOMINANCE_H
22
28
29/* State of dominance information. */
30
32{
33 DOM_NONE, /* Not computed at all. */
34 DOM_NO_FAST_QUERY, /* The data is OK, but the fast query data are not usable. */
35 DOM_OK /* Everything is ok. */
36};
37
38extern void calculate_dominance_info (enum cdi_direction, bool = true);
41extern void free_dominance_info (function *, enum cdi_direction);
42extern void free_dominance_info (enum cdi_direction);
44 enum cdi_direction,
52 unsigned);
54 basic_block, int);
62 bitmap);
68
69/* Verify invariants of computed dominance information, if internal consistency
70 checks are enabled. */
71
72inline void
78
81 vec<basic_block> &, bool);
87extern enum dom_state dom_info_state (enum cdi_direction);
89extern bool dom_info_available_p (function *, enum cdi_direction);
90extern bool dom_info_available_p (enum cdi_direction);
91
92
93
94#endif /* GCC_DOMINANCE_H */
Definition vec.h:1656
class bitmap_head * bitmap
Definition coretypes.h:51
basic_block get_immediate_dominator(enum cdi_direction, basic_block)
Definition dominance.cc:856
void set_dom_info_availability(enum cdi_direction, enum dom_state)
Definition dominance.cc:1631
void checking_verify_dominators(cdi_direction dir)
Definition dominance.h:73
void free_dominance_info(function *, enum cdi_direction)
Definition dominance.cc:802
void verify_dominators(enum cdi_direction)
void redirect_immediate_dominators(enum cdi_direction, basic_block, basic_block)
Definition dominance.cc:986
basic_block next_dom_son(enum cdi_direction, basic_block)
Definition dominance.cc:1602
void free_dominance_info_for_region(function *, enum cdi_direction, vec< basic_block >)
Definition dominance.cc:831
unsigned bb_dom_dfs_out(enum cdi_direction, basic_block)
Definition dominance.cc:1154
unsigned bb_dom_dfs_in(enum cdi_direction, basic_block)
Definition dominance.cc:1142
basic_block nearest_common_dominator_for_set(enum cdi_direction, bitmap)
Definition dominance.cc:1033
void calculate_dominance_info(enum cdi_direction, bool=true)
auto_vec< basic_block > get_dominated_by(enum cdi_direction, basic_block)
Definition dominance.cc:897
auto_vec< basic_block > get_dominated_by_region(enum cdi_direction, basic_block *, unsigned)
Definition dominance.cc:920
basic_block recompute_dominator(enum cdi_direction, basic_block)
Definition dominance.cc:1203
enum dom_state dom_info_state(function *, enum cdi_direction)
Definition dominance.cc:1613
basic_block first_dom_son(enum cdi_direction, basic_block)
Definition dominance.cc:1590
dom_state
Definition dominance.h:32
@ DOM_NONE
Definition dominance.h:33
@ DOM_OK
Definition dominance.h:35
@ DOM_NO_FAST_QUERY
Definition dominance.h:34
cdi_direction
Definition dominance.h:24
@ CDI_POST_DOMINATORS
Definition dominance.h:26
@ CDI_DOMINATORS
Definition dominance.h:25
void calculate_dominance_info_for_region(enum cdi_direction, vec< basic_block >)
void iterate_fix_dominators(enum cdi_direction, vec< basic_block > &, bool)
Definition dominance.cc:1392
void set_immediate_dominator(enum cdi_direction, basic_block, basic_block)
Definition dominance.cc:872
basic_block nearest_common_dominator(enum cdi_direction, basic_block, basic_block)
Definition dominance.cc:1014
void add_to_dominance_info(enum cdi_direction, basic_block)
Definition dominance.cc:1557
bool dominated_by_p(enum cdi_direction, const_basic_block, const_basic_block)
Definition dominance.cc:1125
auto_vec< basic_block > get_all_dominated_blocks(enum cdi_direction, basic_block)
Definition dominance.cc:979
bool dom_info_available_p(function *, enum cdi_direction)
Definition dominance.cc:1641
void delete_from_dominance_info(enum cdi_direction, basic_block)
Definition dominance.cc:1572
auto_vec< basic_block > get_dominated_to_depth(enum cdi_direction, basic_block, int)
Definition dominance.cc:947
T * ggc_alloc(ALONE_CXX_MEM_STAT_INFO)
Definition ggc.h:184
Definition basic-block.h:117
Definition function.h:249
Definition vec.h:450