File: flowgraph.h

package info (click to toggle)
sparse 0.6.4-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,868 kB
  • sloc: ansic: 46,050; sh: 614; python: 301; perl: 293; makefile: 279
file content (33 lines) | stat: -rw-r--r-- 842 bytes parent folder | download | duplicates (2)
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