22 #ifndef OTAWA_DELAYEDBUILDER_H_
23 #define OTAWA_DELAYEDBUILDER_H_
25 #include <elm/genstruct/SLList.h>
struct otawa::sem::inst inst
dtd::RefAttr< BasicBlock * > source("source", dtd::STRICT|dtd::REQUIRED)
CFG * cfg(void) const
Get the current CFG.
Definition: CFGProcessor.h:56
dtd::Element edge(dtd::make("edge", _EDGE).attr(source).attr(target).attr(called))
BasicBlock * makeNOp(Inst *inst, int n=1)
Build a block made of NOPs matching the given instructions.
Definition: cfg_DelayedBuilder.cpp:142
virtual void setup(WorkSpace *ws)
This method is called before an anlysis to let the processor do some initialization.
Definition: cfg_DelayedBuilder.cpp:217
kind_t
Kind of the edge.
Definition: Edge.h:36
Definition: Registration.h:138
void buildEdges(CFG *cfg)
Build the edges.
Definition: cfg_DelayedBuilder.cpp:499
void insert(Edge *edge, BasicBlock *ibb)
Insert a basic block into an edge.
Definition: cfg_DelayedBuilder.cpp:381
DelayedInfo * info
Definition: DelayedBuilder.h:69
DelayedBuilder(void)
Definition: cfg_DelayedBuilder.cpp:211
virtual void processCFG(WorkSpace *ws, CFG *cfg)
Definition: cfg_DelayedBuilder.cpp:572
virtual void processWorkSpace(WorkSpace *ws)
Process the given framework.
Definition: cfg_DelayedBuilder.cpp:278
void cloneEdge(Edge *edge, BasicBlock *source, Edge::kind_t kind)
Clone an existing edge.
Definition: cfg_DelayedBuilder.cpp:351
WorkSpace * ws
Definition: Processor.h:185
Inst * next(Inst *inst, int n=1)
Get the instruction following the n next instruction.
Definition: cfg_DelayedBuilder.cpp:635
Control Flow Graph representation.
Definition: CFG.h:42
Inst::kind_t kind
Definition: odisasm.cpp:106
delayed_t
Enumeration giving the type of delayed modes used by control instruction.
Definition: features.h:30
t::uint32 size
Definition: base.h:46
delayed_t type(Inst *inst)
Define the type of delayed branch.
Definition: cfg_DelayedBuilder.cpp:586
A workspace represents a program, its run-time and all information about WCET computation or any othe...
Definition: WorkSpace.h:67
virtual void cleanup(WorkSpace *ws)
This method is called after the end of the processor analysis to let it do some clean up...
Definition: cfg_DelayedBuilder.cpp:235
Contains a collection of CFGs (used with INVOLVED_CFGS property).
Definition: features.h:45
BasicBlock * makeBB(Inst *inst, int n=1)
Build a single BB containing the instruction following the given instruction.
Definition: cfg_DelayedBuilder.cpp:128
map_t map
Definition: DelayedBuilder.h:67
This is a specialization of the processor class dedicated to CFG processing.
Definition: CFGProcessor.h:35
genstruct::HashTable< CFG *, VirtualCFG * > cfg_map
Definition: DelayedBuilder.h:66
VirtualCFG * vcfg
Definition: DelayedBuilder.h:68
Edge * makeEdge(BasicBlock *src, BasicBlock *tgt, Edge::kind_t kind)
Build a new virtual edge.
Definition: cfg_DelayedBuilder.cpp:655
A virtual CFG is a CFG not-mapped to real code, that is, it may contains virtual nodes for inlining f...
Definition: VirtualCFG.h:29
DelayedCleaner * cleaner
Definition: DelayedBuilder.h:65
This class represents edges in the CFG representation.
Definition: Edge.h:33
This is the minimal definition of a basic block.
Definition: BasicBlock.h:43
static Registration< DelayedBuilder > reg
Definition: DelayedBuilder.h:39
This class represents assembly instruction of a piece of code.
Definition: Inst.h:62
void buildBB(CFG *cfg)
Build the BB.
Definition: cfg_DelayedBuilder.cpp:418
int count(Inst *inst)
Define the count of instructions before the given delayed branch be effective.
Definition: cfg_DelayedBuilder.cpp:599
void fix(Edge *oedge, Edge *nedge)
Definition: cfg_DelayedBuilder.cpp:308
CFGCollection * coll
Definition: DelayedBuilder.h:64
void mark(CFG *cfg)
Mark the instructions with actions.
Definition: cfg_DelayedBuilder.cpp:255
ot::size size(Inst *inst, int n=1)
Compute the size of the delayed instruction.
Definition: cfg_DelayedBuilder.cpp:613
genstruct::HashTable< BasicBlock *, BasicBlock * > map_t
Definition: DelayedBuilder.h:49
This processor handle the delayed branch information provided by otawa::DELAYED_FEATURE to transform ...
Definition: DelayedBuilder.h:37
Provide information on delayed branches.
Definition: features.h:37