#include <SVFValue.h>
|
| SVFLoopAndDomInfo () |
|
virtual | ~SVFLoopAndDomInfo () |
|
const Map< const SVFBasicBlock *, BBSet > & | getDomFrontierMap () const |
|
Map< const SVFBasicBlock *, BBSet > & | getDomFrontierMap () |
|
bool | hasLoopInfo (const SVFBasicBlock *bb) const |
|
const LoopBBs & | getLoopInfo (const SVFBasicBlock *bb) const |
|
const SVFBasicBlock * | getLoopHeader (const LoopBBs &lp) const |
|
bool | loopContainsBB (const LoopBBs &lp, const SVFBasicBlock *bb) const |
|
void | addToBB2LoopMap (const SVFBasicBlock *bb, const SVFBasicBlock *loopBB) |
|
const Map< const SVFBasicBlock *, BBSet > & | getPostDomTreeMap () const |
|
Map< const SVFBasicBlock *, BBSet > & | getPostDomTreeMap () |
|
const Map< const SVFBasicBlock *, u32_t > & | getBBPDomLevel () const |
|
Map< const SVFBasicBlock *, u32_t > & | getBBPDomLevel () |
|
const Map< const SVFBasicBlock *, const SVFBasicBlock * > & | getBB2PIdom () const |
|
Map< const SVFBasicBlock *, const SVFBasicBlock * > & | getBB2PIdom () |
|
Map< const SVFBasicBlock *, BBSet > & | getDomTreeMap () |
|
const Map< const SVFBasicBlock *, BBSet > & | getDomTreeMap () const |
|
bool | isUnreachable (const SVFBasicBlock *bb) const |
|
const BBList & | getReachableBBs () const |
|
void | setReachableBBs (BBList &bbs) |
|
void | getExitBlocksOfLoop (const SVFBasicBlock *bb, BBList &exitbbs) const |
|
bool | isLoopHeader (const SVFBasicBlock *bb) const |
|
bool | dominate (const SVFBasicBlock *bbKey, const SVFBasicBlock *bbValue) const |
|
bool | postDominate (const SVFBasicBlock *bbKey, const SVFBasicBlock *bbValue) const |
|
const SVFBasicBlock * | findNearestCommonPDominator (const SVFBasicBlock *A, const SVFBasicBlock *B) const |
| find nearest common post dominator of two basic blocks More...
|
|
Definition at line 50 of file SVFValue.h.
◆ BBList
◆ BBSet
◆ LoopBBs
◆ SVFLoopAndDomInfo()
SVF::SVFLoopAndDomInfo::SVFLoopAndDomInfo |
( |
| ) |
|
|
inline |
◆ ~SVFLoopAndDomInfo()
virtual SVF::SVFLoopAndDomInfo::~SVFLoopAndDomInfo |
( |
| ) |
|
|
inlinevirtual |
◆ addToBB2LoopMap()
Definition at line 103 of file SVFValue.h.
Map< const SVFBasicBlock *, LoopBBs > bb2LoopMap
map a BasicBlock (if it is in a loop) to all the BasicBlocks in this loop
◆ dominate()
Definition at line 54 of file SVFValue.cpp.
75 const BBSet & dtBBs = mapIter->second;
76 if (dtBBs.find(bbValue) != dtBBs.end())
Map< const SVFBasicBlock *, BBSet > & getDomTreeMap()
Map< const SVFBasicBlock *, BBSet > dtBBsMap
map a BasicBlock to BasicBlocks it Dominates
bool isUnreachable(const SVFBasicBlock *bb) const
Set< const SVFBasicBlock * > BBSet
std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map
◆ findNearestCommonPDominator()
find nearest common post dominator of two basic blocks
Definition at line 115 of file SVFValue.cpp.
117 assert(A && B &&
"Pointers are not valid");
119 "Two blocks are not in same function");
131 if (lvA->second < lvB->second) std::swap(A, B);
const SVFFunction * getParent() const
const Map< const SVFBasicBlock *, u32_t > & getBBPDomLevel() const
const Map< const SVFBasicBlock *, const SVFBasicBlock * > & getBB2PIdom() const
◆ getBB2PIdom() [1/2]
Definition at line 133 of file SVFValue.h.
Map< const SVFBasicBlock *, const SVFBasicBlock * > bb2PIdom
map a BasicBlock to its immediate dominator in pdom tree, used in findNearestCommonPDominator
◆ getBB2PIdom() [2/2]
◆ getBBPDomLevel() [1/2]
Definition at line 123 of file SVFValue.h.
Map< const SVFBasicBlock *, u32_t > bb2PdomLevel
map a BasicBlock to its level in pdom tree, used in findNearestCommonPDominator
◆ getBBPDomLevel() [2/2]
◆ getDomFrontierMap() [1/2]
Definition at line 80 of file SVFValue.h.
Map< const SVFBasicBlock *, BBSet > dfBBsMap
map a BasicBlock to its Dominate Frontier BasicBlocks
◆ getDomFrontierMap() [2/2]
◆ getDomTreeMap() [1/2]
◆ getDomTreeMap() [2/2]
◆ getExitBlocksOfLoop()
void SVFLoopAndDomInfo::getExitBlocksOfLoop |
( |
const SVFBasicBlock * |
bb, |
|
|
BBList & |
exitbbs |
|
) |
| const |
Definition at line 35 of file SVFValue.cpp.
46 if ((std::find(blocks.begin(), blocks.end(), succ)==blocks.end()))
47 exitbbs.push_back(succ);
const std::vector< const SVFBasicBlock * > & getSuccessors() const
const LoopBBs & getLoopInfo(const SVFBasicBlock *bb) const
bool hasLoopInfo(const SVFBasicBlock *bb) const
◆ getLoopHeader()
Definition at line 92 of file SVFValue.h.
94 assert(!lp.empty() &&
"this is not a loop, empty basic block");
◆ getLoopInfo()
Definition at line 28 of file SVFValue.cpp.
30 assert(
hasLoopInfo(bb) &&
"loopinfo does not exist (bb not in a loop)");
32 return mapIter->second;
◆ getPostDomTreeMap() [1/2]
Definition at line 113 of file SVFValue.h.
Map< const SVFBasicBlock *, BBSet > pdtBBsMap
map a BasicBlock to BasicBlocks it PostDominates
◆ getPostDomTreeMap() [2/2]
◆ getReachableBBs()
const BBList& SVF::SVFLoopAndDomInfo::getReachableBBs |
( |
| ) |
const |
|
inline |
Definition at line 155 of file SVFValue.h.
BBList reachableBBs
reachable BasicBlocks from the function entry.
◆ hasLoopInfo()
bool SVF::SVFLoopAndDomInfo::hasLoopInfo |
( |
const SVFBasicBlock * |
bb | ) |
const |
|
inline |
◆ isLoopHeader()
bool SVFLoopAndDomInfo::isLoopHeader |
( |
const SVFBasicBlock * |
bb | ) |
const |
Definition at line 141 of file SVFValue.cpp.
146 assert(!blocks.empty() &&
"no available loop info?");
147 return blocks.front() == bb;
◆ isUnreachable()
bool SVF::SVFLoopAndDomInfo::isUnreachable |
( |
const SVFBasicBlock * |
bb | ) |
const |
|
inline |
◆ loopContainsBB()
Definition at line 98 of file SVFValue.h.
100 return std::find(lp.begin(), lp.end(), bb) != lp.end();
◆ postDominate()
Definition at line 85 of file SVFValue.cpp.
106 const BBSet & dtBBs = mapIter->second;
107 if (dtBBs.find(bbValue) != dtBBs.end())
const Map< const SVFBasicBlock *, BBSet > & getPostDomTreeMap() const
◆ setReachableBBs()
void SVF::SVFLoopAndDomInfo::setReachableBBs |
( |
BBList & |
bbs | ) |
|
|
inline |
◆ SVFIRReader
◆ SVFIRWriter
◆ bb2LoopMap
map a BasicBlock (if it is in a loop) to all the BasicBlocks in this loop
Definition at line 64 of file SVFValue.h.
◆ bb2PdomLevel
map a BasicBlock to its level in pdom tree, used in findNearestCommonPDominator
Definition at line 65 of file SVFValue.h.
◆ bb2PIdom
map a BasicBlock to its immediate dominator in pdom tree, used in findNearestCommonPDominator
Definition at line 66 of file SVFValue.h.
◆ dfBBsMap
map a BasicBlock to its Dominate Frontier BasicBlocks
Definition at line 63 of file SVFValue.h.
◆ dtBBsMap
map a BasicBlock to BasicBlocks it Dominates
Definition at line 61 of file SVFValue.h.
◆ pdtBBsMap
map a BasicBlock to BasicBlocks it PostDominates
Definition at line 62 of file SVFValue.h.
◆ reachableBBs
BBList SVF::SVFLoopAndDomInfo::reachableBBs |
|
private |
reachable BasicBlocks from the function entry.
Definition at line 60 of file SVFValue.h.
The documentation for this class was generated from the following files: