![]() |
OTAWA
2.0
Framework to perform machine analysis and compute WCET.
|
#include <otawa/cfg/CFG.h>
Public Member Functions | |
Address | address (void) const |
CFG * | cfg (void) const |
int | id (void) const |
bool | isBasic (void) const |
bool | isCall (void) const |
bool | isEnd (void) const |
bool | isEntry (void) const |
bool | isExit (void) const |
bool | isPhony (void) const |
bool | isSynth (void) const |
bool | isUnknown (void) const |
bool | isVirtual (void) const |
operator BasicBlock * (void) | |
operator SynthBlock * (void) | |
BasicBlock * | toBasic (void) |
const BasicBlock * | toBasic (void) const |
SynthBlock * | toSynth (void) |
const SynthBlock * | toSynth (void) const |
![]() | |
void | addProp (Property *prop) |
Add property to the list without checking of duplication. More... | |
void | addProps (const PropList &props) |
Add all properties from the given property list, in a reverse order. More... | |
GetterRange | all (const AbstractIdentifier &id) const |
void | clearProps (void) |
Remove all properties from the list. More... | |
Property * | extractProp (const AbstractIdentifier &id) |
Property * | extractProp (const AbstractIdentifier *id) |
Remove a property matching the given identifier and return it. More... | |
Property * | getProp (const AbstractIdentifier *id) const |
Find a property by its identifier. More... | |
bool | hasProp (const AbstractIdentifier &id) const |
PropList & | operator= (const PropList &props) |
void | print (elm::io::Output &out) const |
Display the current property list. More... | |
PropRange | properties (void) const |
PropList (const PropList &props) | |
Initialize a property list from a sequence of (identifier, value) pairs passed as variable arguments. More... | |
PropList (void) | |
void | removeAllProp (const AbstractIdentifier *id) |
Remove all the properties matching the given identifier. More... | |
void | removeProp (const AbstractIdentifier &id) |
void | removeProp (const AbstractIdentifier *id) |
Remove a property matching the given identifier. More... | |
void | setProp (const AbstractIdentifier *id) |
void | setProp (Property *prop) |
Set the property in the property list removing any double. More... | |
void | takeProps (PropList &props) |
Take properties from props to the current property list. More... | |
~PropList (void) | |
![]() | |
EdgeCollection | inEdges (void) const |
EdgeIter | ins (void) const |
EdgeCollection | outEdges (void) const |
EdgeIter | outs (void) const |
PredCollection | preds (void) const |
SuccCollection | succs (void) const |
![]() | |
int | countIns (void) const |
int | countOuts (void) const |
int | index (void) const |
const edges_t & | inEdges (void) const |
EdgeIter | ins (void) const |
const edges_t & | outEdges (void) const |
EdgeIter | outs (void) const |
Vertex (void) | |
Static Public Attributes | |
static const t::uint16 | IS_BASIC = 1 << 0 |
static const t::uint16 | IS_CALL = 0x2 << 0 |
static const t::uint16 | IS_ENTRY = 0 << 2 |
static const t::uint16 | IS_EXIT = 1 << 2 |
static const t::uint16 | IS_PHONY = 3 << 2 |
static const t::uint16 | IS_SYNTH = 2 << 0 |
static const t::uint16 | IS_UNKN = 2 << 2 |
static const t::uint16 | IS_VIRTUAL = 0 << 0 |
static const t::uint16 | MASK1 = 0x3 |
static const t::uint16 | MASK12 = MASK1 | (0x3 << 2) |
![]() | |
static rtti::Type & | __type = prop_list_class |
static const PropList | EMPTY |
This is an empty proplist for convenience. More... | |
Protected Member Functions | |
Block (t::uint16 type=IS_BASIC) | |
Build a CFG block. More... | |
![]() | |
~Vertex (void) | |
Private Attributes | |
CFG * | _cfg |
t::uint16 | _type |
EdgeIter | ntak |
Friends | |
class | CFG |
class | CFGMaker |
Additional Inherited Members | |
![]() | |
typedef edges_t::Iter | EdgeIter |
typedef elm::List< Edge * > | edges_t |
A node in the CFG. This class is abstract and usually subclassed as BasicBlock or SynthBlock.
Referenced by otawa::BasicBlock::basicPreds(), otawa::ai::CFGCollectionGraph::callers(), otawa::CompositeCFG::callers(), otawa::Loop::cfg(), otawa::etime::EdgeTimeBuilder::contributeSplit(), otawa::etime::StandardILPGenerator::contributeTime(), otawa::oslice::DotDisplayer::displayLabel(), otawa::Dominance::dominates(), otawa::cfgio::Output::id(), otawa::Loop::isTop(), otawa::dcache::CATBuilder::join(), otawa::Loop::Loop(), otawa::Loop::of(), otawa::oslice::Slicer::processWorkingList(), otawa::oslice::LivenessChecker::processWorkingList(), otawa::ai::BlockAnalysis< D, S >::processWorkSpace(), and otawa::dynbranch::GlobalAnalysisProblem::update().
|
inline |
Returns a Block identifier that is unique to the whole program
Returns a Block identifier that is unique to the whole program. This number if positive or null and less than the countBB() of the CFG collection containing the parent CFG of this block.
Referenced by otawa::ai::CFGAnalyzer::after(), otawa::ai::CFGAnalyzer::before(), otawa::ai::CFGAnalyzer::doTrace(), otawa::ai::DefaultBlockStore< typename D::t >::get(), otawa::ai::BlockAnalysis< D, S >::get(), otawa::ai::CFGCollectionGraph::index(), otawa::CompositeCFG::index(), otawa::ai::SimpleWorkList::put(), otawa::ai::Queue::put(), otawa::ai::BlockAnalysis< D, S >::put(), and otawa::ai::DefaultBlockStore< typename D::t >::set().
|
inline |
Test if a block is basic, that is, may be subclassed to BasicBlock.
Referenced by otawa::Loop::address(), otawa::BasicBlock::basicPreds(), otawa::LoopReductor::clone(), otawa::display::CFGDecorator::decorate(), otawa::oslice::DotDisplayer::displayLabel(), otawa::operator<<(), otawa::etime::StandardILPGenerator::process(), otawa::StandardEventBuilder::processBB(), otawa::cfgio::Output::processBB(), otawa::oslice::Slicer::processWorkingList(), otawa::oslice::LivenessChecker::processWorkingList(), otawa::ai::BlockAnalysis< D, S >::processWorkSpace(), otawa::dynbranch::GlobalAnalysisProblem::update(), and otawa::BranchProblem::update().
Test if a synthetic block is subprogram call.
Referenced by otawa::CompositeCFG::isCall(), and otawa::CompositeCFG::isReturn().
|
inline |
Test if a block is an entry.
Referenced by otawa::BasicBlock::basicPreds(), otawa::CFGTransformer::clone(), otawa::oslice::DotDisplayer::displayLabel(), otawa::CompositeCFG::isCall(), otawa::CompositeCFG::isEntry(), otawa::ai::CFGCollectionGraph::isEntry(), otawa::operator<<(), otawa::oslice::Slicer::processWorkingList(), otawa::oslice::LivenessChecker::processWorkingList(), and otawa::dfa::XCFGVisitor< P >::visitPreds().
|
inline |
Test if a block is an exit.
Referenced by otawa::CFGTransformer::clone(), otawa::oslice::DotDisplayer::displayLabel(), otawa::ai::CFGCollectionGraph::isExit(), otawa::CompositeCFG::isExit(), otawa::CompositeCFG::isReturn(), otawa::operator<<(), otawa::oslice::Slicer::processWorkingList(), otawa::oslice::LivenessChecker::processWorkingList(), and otawa::ai::BlockAnalysis< D, S >::processWorkSpace().
Referenced by otawa::BasicBlock::basicPreds(), and otawa::operator<<().
|
inline |
Test if a block is synthetic, that is, may be subclassed to SynthBlock.
Referenced by otawa::CFGTransformer::clone(), otawa::display::CFGDecorator::decorate(), otawa::oslice::DotDisplayer::displayLabel(), otawa::ai::CFGCollectionGraph::isCall(), otawa::CompositeCFG::isCall(), otawa::cfgio::Output::processBB(), otawa::oslice::Slicer::processWorkingList(), otawa::oslice::LivenessChecker::processWorkingList(), otawa::ai::BlockAnalysis< D, S >::processWorkSpace(), otawa::ai::CFGCollectionGraph::sinkOf(), otawa::CompositeCFG::sinkOf(), otawa::CompositeCFG::sourceOf(), otawa::ai::CFGCollectionGraph::sourceOf(), and otawa::ConditionalRestructurer::split().
|
inline |
Test if a block is unknown.
Referenced by otawa::CFGTransformer::clone(), otawa::oslice::DotDisplayer::displayLabel(), otawa::oslice::Slicer::processWorkingList(), and otawa::oslice::LivenessChecker::processWorkingList().
Test if the block is an end, i.e. an entry, exit or unknown block.
Referenced by otawa::operator<<().
|
inline |
Convert current block to BasicBlock. An assertion failure is raised if it can't be.
|
inline |
Convert current block to SynthBlock. An assertion failure is raised if it can't be.
|
inline |
|
inline |
|
inline |
|
inline |
Referenced by otawa::BasicBlock::basicPreds(), otawa::CFGTransformer::clone(), otawa::display::CFGDecorator::decorate(), otawa::oslice::DotDisplayer::displayLabel(), otawa::CompositeCFG::entryOf(), otawa::ai::CFGCollectionGraph::entryOf(), otawa::CompositeCFG::exitOf(), otawa::ai::CFGCollectionGraph::exitOf(), otawa::CompositeCFG::isCall(), otawa::ai::CFGCollectionGraph::isCall(), otawa::cfgio::Output::processBB(), otawa::oslice::Slicer::processWorkingList(), otawa::oslice::LivenessChecker::processWorkingList(), otawa::ai::BlockAnalysis< D, S >::processWorkSpace(), otawa::ai::CFGCollectionGraph::sinkOf(), otawa::CompositeCFG::sinkOf(), otawa::CompositeCFG::sourceOf(), otawa::ai::CFGCollectionGraph::sourceOf(), and otawa::ConditionalRestructurer::split().
|
friend |
|
friend |
|
private |
Referenced by otawa::CFGMaker::add(), otawa::CFGMaker::exit(), and otawa::CFGMaker::unknown().
|
private |
|
static |
|
static |
|
static |
|
static |
Referenced by otawa::CFGMaker::exit().
|
static |
|
static |
|
static |
Referenced by otawa::CFGMaker::unknown().
|
static |
Referenced by otawa::CFGMaker::unknown().
|
static |
|
private |