This class represents the control transfer between basic block (BB).
More...
#include <otawa/cfg/PFG.h>
This class represents the control transfer between basic block (BB).
An edge is defined by its source basic block, its sink basic block and its type:
- Edge::NONE – null edge kind (must not be found in PFG),
- Edge::SEQ – sequential control transfer between two adjacent basic blocks,
- Edge::BRANCH – transfer by a taken branch instruction,
- Edge::COND_BRANCH – transfer by a taken conditional branch instruction,
- Edge::CALL – transfer by a taken sub-program call instruction,
- Edge::COND_CALL – transfer by a taken conditional sub-program call instruction,
- Edge::RETURN – transfer a taken sub-program return instruction (notice that the sink node is ever PFG::ret).
- Edge::COND_RETURN – transfer a taken conditional sub-program return instruction (notice that the sink node is ever PFG::ret)..
Some rules applies on the outing edges of a basic block:
- Notice also that basic block that branch to unknown address have an edge with PFG::unknown as sink basic block.
Type of edges.
Look at Edge for more details.
Enumerator |
---|
NONE |
|
SEQ |
|
BRANCH |
|
COND_BRANCH |
|
CALL |
|
COND_CALL |
|
RETURN |
|
COND_RETURN |
|
otawa::pfg::Edge::Edge |
( |
BB * |
source, |
|
|
BB * |
sink, |
|
|
kind_t |
kind |
|
) |
| |
|
inline |
kind_t otawa::pfg::Edge::kind |
( |
void |
| ) |
const |
|
inline |
Get the kind of an edge.
- Returns
- Kind of edge.
template<class N, class E>
template<class N, class E>
kind_t otawa::pfg::Edge::_kind |
|
private |
The documentation for this class was generated from the following files: