50 for(FunToLoopInfoMap::iterator it = funToLoopInfoMap.begin(), eit = funToLoopInfoMap.end(); it!=eit; ++it)
52 if(it->second !=
nullptr)
57 for(FunToDTMap::iterator it = funToDTMap.begin(), eit = funToDTMap.end(); it!=eit; ++it)
59 if(it->second !=
nullptr)
64 for(FunToPostDTMap::iterator it = funToPDTMap.begin(), eit = funToPDTMap.end(); it!=eit; ++it)
66 if(it->second !=
nullptr)
76 assert(f->isDeclaration()==
false &&
"external function (without body) does not have a loopInfo");
78 FunToLoopInfoMap::iterator it = funToLoopInfoMap.find(fun);
79 if(it==funToLoopInfoMap.end())
83 funToLoopInfoMap[fun] = loopInfo;
93 assert(f->isDeclaration()==
false &&
"external function (without body) does not have a PostDominatorTree");
96 if(f->isDeclaration())
98 FunToPostDTMap::iterator it = funToPDTMap.find(fun);
99 if(it==funToPDTMap.end())
102 funToPDTMap[fun] = PDT;
113 FunToDTMap::iterator it = funToDTMap.find(fun);
114 if(it==funToDTMap.end())
117 funToDTMap[fun] = dt;
134 worklist.insert(it->second.begin(), it->second.end());
135 while (!worklist.empty())
138 worklist.erase(worklist.begin());
139 if (Frontiers[bb].find(item) == Frontiers[bb].end())
141 Frontiers[bb].insert(item);
142 const_iterator parent = DF.find(item);
143 assert(parent != DF.end());
144 worklist.insert(parent->second.begin(), parent->second.end());
void calculate(BasicBlock *, const DominanceFrontier &DF)
llvm::BasicBlock BasicBlock
llvm::DominanceFrontier DominanceFrontier
LLVM Dominators.
PostDominatorTree * getPostDT(const Function *f)
Get post dominator tree of a function.
llvm::PostDominatorTree PostDominatorTree
LoopInfo * getLoopInfo(const Function *f)
Get loop info of a function.
llvm::DominanceFrontierBase< BasicBlock, false > DominanceFrontierBase
llvm::DominatorTree DominatorTree
DominatorTree * getDT(const Function *f)
Get dominator tree of a function.
PTACFInfoBuilder()
Constructor.