21 #ifndef OTAWA_CFG_EDGE_H
22 #define OTAWA_CFG_EDGE_H
24 #include <elm/assert.h>
75 #define EDGE_Null Edge::NONE
76 #define EDGE_Taken Edge::TAKEN
77 #define EDGE_NotTaken Edge::NOT_TAKEN
78 #define EDGE_Call Edge::CALL
79 #define EDGE_Virtual Edge::VIRTUAL
83 #endif // OTAWA_CFG_EDGE_H
void toCall(void)
Transform this edge as a call edge.
Definition: Edge.cpp:118
dtd::Element edge(dtd::make("edge", _EDGE).attr(source).attr(target).attr(called))
Edges of this kind are only found in a virtual CFG.
Definition: Edge.h:43
Edge(BasicBlock *source, BasicBlock *target, kind_t kind=TAKEN)
Build a new edge.
Definition: Edge.cpp:94
kind_t knd
Definition: Edge.h:65
static cstring kindName(kind_t kind)
Get the name of a kind.
Definition: Edge.cpp:130
kind_t
Kind of the edge.
Definition: Edge.h:36
BasicBlock * source(void) const
Definition: Edge.h:52
kind_t kind(void) const
Definition: Edge.h:54
Kind of an edge matching a sub-program call.
Definition: Edge.h:40
~Edge(void)
Delete an edge.
Definition: Edge.cpp:108
Kind of an edge linking the virtual entry and exit basic blocks with other ones of the CFG...
Definition: Edge.h:41
No meaning.
Definition: Edge.h:37
elm::io::Output & operator<<(elm::io::Output &out, Address addr)
Definition: base.cpp:188
Control Flow Graph representation.
Definition: CFG.h:42
Edge::kind_t edge_kind_t
Definition: Edge.h:74
Edges of this kind are usually added after an analysis of the CFG to denote raise of exception (syste...
Definition: Edge.h:44
sys::SystemOutStream & out
Kind of an edge matching the natural sequential control flow between a basic block and its successor...
Definition: Edge.h:39
BasicBlock * tgt
Definition: Edge.h:66
BasicBlock * src
Definition: Edge.h:66
This class represents edges in the CFG representation.
Definition: Edge.h:33
BasicBlock * target(void) const
Definition: Edge.h:53
This is the minimal definition of a basic block.
Definition: BasicBlock.h:43
Kind of an edge matching a branch instruction.
Definition: Edge.h:38
This a list of properties.
Definition: PropList.h:63
CFG * calledCFG(void) const
Definition: Edge.h:56
Identifier< CFG * > ENTRY
Identifier used for storing and retrieving the CFG on its entry BB.
Edges of this kind are only found in a virtual CFG.
Definition: Edge.h:42