-
Notifications
You must be signed in to change notification settings - Fork 10
/
flowgraph.h
33 lines (26 loc) · 842 Bytes
/
flowgraph.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef FLOWGRAPH_H
#define FLOWGRAPH_H
///
// Utilities for flowgraphs
// ------------------------
#include <stdbool.h>
struct entrypoint;
struct basic_block;
///
// Set the BB's reverse postorder links
// Each BB will also have its 'order number' set.
int cfg_postorder(struct entrypoint *ep);
///
// Build the dominance tree.
// Each BB will then have:
// - a link to its immediate dominator (::idom)
// - the list of BB it immediately dominates (::doms)
// - its level in the dominance tree (::dom_level)
void domtree_build(struct entrypoint *ep);
///
// Test the dominance between two basic blocks.
// @a: the basic block expected to dominate
// @b: the basic block expected to be dominated
// @return: ``true`` if @a dominates @b, ``false`` otherwise.
bool domtree_dominates(struct basic_block *a, struct basic_block *b);
#endif