23 #ifndef CACHE_PSTBUILDER_H_
24 #define CACHE_PSTBUILDER_H_
26 #include <elm/assert.h>
27 #include <elm/util/Pair.h>
28 #include <elm/genstruct/DLList.h>
29 #include <elm/genstruct/Tree.h>
57 inline void inc(
void) {
69 inline void dec(
void) {
117 inline SESERegion(
CFG *_cfg,
Edge *_entry,
PSTree *_parent,
bool _first,
CEClass *_class) :
entry(_entry),
exit(NULL),
cfg(_cfg),
parent(_parent),
first(_first),
last(false),
classe (_class) {
133 return(
bbs.length());
145 }
else cout <<
" to ???";
const Vector< BasicBlock * > & getBBs()
Definition: PSTBuilder.h:162
CFG * cfg(void) const
Get the current CFG.
Definition: CFGProcessor.h:56
void assignClasses(CFG *cfg)
Using the DFS number on each BB and the backedge identification, assign Cycle-Equivalent Classes to t...
Definition: cfg_PSTBuilder.cpp:262
CEClass(void)
Definition: PSTBuilder.h:53
bool first
Definition: PSTBuilder.h:46
BasicBlock * source(void) const
Definition: Edge.h:52
static VirtualCFG * getVCFG(PSTree *tree, HashTable< BasicBlock *, BasicBlock * > &map)
Return a VCFG of the basic blocks represented by the region.
Definition: cfg_PSTBuilder.cpp:426
bool isFirst(void)
Definition: PSTBuilder.h:78
void setLast()
Definition: PSTBuilder.h:153
static Identifier< int > PST_HI
Definition: PSTBuilder.h:190
static int displayTree(PSTree *node, int col=0, bool ending=false)
Display the PST.
Definition: cfg_PSTBuilder.cpp:143
static Identifier< int > PST_DFSNUM
Definition: PSTBuilder.h:189
PSTBuilder(void)
Definition: cfg_PSTBuilder.cpp:105
static Identifier< CEClass * > PST_RECENTCLASS
Definition: PSTBuilder.h:195
bool isLast(void)
Definition: PSTBuilder.h:74
Edge * entry
Definition: PSTBuilder.h:96
void inc(Edge *bracket)
Definition: PSTBuilder.h:62
Vector< BasicBlock * > bbs
Definition: PSTBuilder.h:100
void print()
Definition: PSTBuilder.h:141
CEClass * classe
Definition: PSTBuilder.h:102
BasicBlock * entry(void)
Get the entry basic block of the CFG.
Definition: CFG.h:63
void buildTree(CFG *cfg, BasicBlock *bb, PSTree *subtree)
Using the Cycle-Equivalent informations on the edges, recursively build the PST.
Definition: cfg_PSTBuilder.cpp:173
dtd::Element bb(dtd::make("bb", _BB).attr(id).attr(address).attr(size))
Definition: PSTBuilder.h:106
Control Flow Graph representation.
Definition: CFG.h:42
CFG * cfg
Definition: PSTBuilder.h:98
CFG * getCFG()
Definition: PSTBuilder.h:159
BasicBlock * exit(void)
Get the exit basic block of the CFG.
Definition: CFG.h:65
Edge * fakeEdge
Definition: PSTBuilder.h:204
void dec(void)
Definition: PSTBuilder.h:69
SESERegion(CFG *_cfg, Edge *_entry, PSTree *_parent, bool _first, CEClass *_class)
Definition: PSTBuilder.h:117
bool last
Definition: PSTBuilder.h:101
static Identifier< bool > DFS_IS_BACKEDGE
Definition: PSTBuilder.h:198
Definition: PSTBuilder.h:92
A workspace represents a program, its run-time and all information about WCET computation or any othe...
Definition: WorkSpace.h:67
Edge * backEdge
Definition: PSTBuilder.h:48
BBIterator(Vector< BasicBlock * > &_vec)
Definition: PSTBuilder.h:110
This is a specialization of the processor class dedicated to CFG processing.
Definition: CFGProcessor.h:35
Definition: BasicBlock.h:165
int number(void) const
Get the number hooked on this basic block, that is, value of ID_Index property.
Definition: BasicBlock.h:146
void inc(void)
Definition: PSTBuilder.h:57
Edge * getEntry()
Definition: PSTBuilder.h:147
int countBB()
Definition: PSTBuilder.h:132
PSTree * parent
Definition: PSTBuilder.h:99
Definition: PSTBuilder.h:43
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
Definition: BasicBlock.h:160
BBIterator(SESERegion *region)
Definition: PSTBuilder.h:113
static Identifier< BracketSet * > PST_BSET
Definition: PSTBuilder.h:191
bool isFirst()
Definition: PSTBuilder.h:156
This class represents edges in the CFG representation.
Definition: Edge.h:33
BasicBlock * target(void) const
Definition: Edge.h:53
virtual void processCFG(WorkSpace *, CFG *)
Definition: cfg_PSTBuilder.cpp:112
This is the minimal definition of a basic block.
Definition: BasicBlock.h:43
CEClass * getClass()
Definition: PSTBuilder.h:171
This processor computes the Program Structure Tree of the CFG.
Definition: PSTBuilder.h:179
static Identifier< int > PST_RECENTSIZE
Definition: PSTBuilder.h:194
Edge * getExit()
Definition: PSTBuilder.h:150
void depthFirstSearch(BasicBlock *bb)
Do a depth-first search on the undirected version of the CFG assign the DFS number on each basic bloc...
Definition: cfg_PSTBuilder.cpp:235
PSTree * pst
Definition: PSTBuilder.h:206
int getCount(void)
Definition: PSTBuilder.h:82
This a list of properties.
Definition: PropList.h:63
Edge * exit
Definition: PSTBuilder.h:97
elm::Pair< Edge *, int > BSCName
Definition: PSTBuilder.h:182
elm::genstruct::DLList< Edge * > BracketSet
Definition: PSTBuilder.h:183
void setExit(Edge *_exit)
Definition: PSTBuilder.h:138
Iterator(const Vector &vec)
void addBB(BasicBlock *_bb)
Definition: PSTBuilder.h:135
bool first
Definition: PSTBuilder.h:101
static Identifier< bool > PST_IS_CAPPING
Definition: PSTBuilder.h:197
bool isLast()
Definition: PSTBuilder.h:165
bool isRoot()
Definition: PSTBuilder.h:168
int cur_dfsnum
Definition: PSTBuilder.h:202
PSTree * getParent()
Definition: PSTBuilder.h:128
SESERegion(CFG *_cfg)
Definition: PSTBuilder.h:120
static Identifier< CEClass * > PST_CLASS
Definition: PSTBuilder.h:193
int count
Definition: PSTBuilder.h:45
BasicBlock ** node
Definition: PSTBuilder.h:203
Definition: features.h:29