#include <LLVMLoopAnalysis.h>
Definition at line 39 of file LLVMLoopAnalysis.h.
◆ LLVMLoopAnalysis()
SVF::LLVMLoopAnalysis::LLVMLoopAnalysis |
( |
| ) |
|
|
default |
◆ ~LLVMLoopAnalysis()
virtual SVF::LLVMLoopAnalysis::~LLVMLoopAnalysis |
( |
| ) |
|
|
virtualdefault |
◆ build()
void LLVMLoopAnalysis::build |
( |
ICFG * |
icfg | ) |
|
|
virtual |
Start from here.
We start from here
- Parameters
-
Definition at line 89 of file LLVMLoopAnalysis.cpp.
90{
93}
virtual void buildLLVMLoops(SVFModule *mod, ICFG *icfg)
Build llvm loops based on LoopInfo analysis.
static SVFIR * getPAG(bool buildFromFile=false)
Singleton design here to make sure we only have one instance during any analysis.
llvm::IRBuilder IRBuilder
◆ buildLLVMLoops()
void LLVMLoopAnalysis::buildLLVMLoops |
( |
SVFModule * |
mod, |
|
|
ICFG * |
icfg |
|
) |
| |
|
virtual |
Build llvm loops based on LoopInfo analysis.
Build llvm loops based on LoopInfo analysis
- Parameters
-
mod | SVF module |
llvmLoops | output llvm loops |
Definition at line 49 of file LLVMLoopAnalysis.cpp.
50{
53 {
54 for (Module::const_iterator
F =
M.begin(),
E =
M.end();
F !=
E; ++
F)
55 {
58 if (func->isDeclaration()) continue;
59
62 llvm::LoopInfoBase<llvm::BasicBlock, llvm::Loop>
loopInfo;
66 {
68 }
69
71 {
76 {
78 }
79 }
81 }
82 }
83}
virtual void buildSVFLoops(ICFG *icfg, std::vector< const Loop * > &llvmLoops)
Build SVF loops based on llvm loops.
static LLVMModuleSet * getLLVMModuleSet()
DominatorTree & getDomTree(const Function *fun)
SVFFunction * getSVFFunction(const Function *fun) const
bool isExtCall(const SVFFunction *fun)
llvm::Loop Loop
LLVM Loop.
◆ buildSVFLoops()
void LLVMLoopAnalysis::buildSVFLoops |
( |
ICFG * |
icfg, |
|
|
std::vector< const Loop * > & |
llvmLoops |
|
) |
| |
|
virtual |
Build SVF loops based on llvm loops.
Build SVF loops based on llvm loops
- Parameters
-
icfg | ICFG |
llvmLoops | input llvm loops |
Definition at line 100 of file LLVMLoopAnalysis.cpp.
101{
103 {
105
109 {
110 for (
const auto &
ins: *
BB)
111 {
113 continue;
116 }
117 }
119 for (
const auto &node:
nodes)
120 {
122 }
123
126
128 {
130 }
133 {
135 {
136
139 }
140 else
141 {
142
145 }
146 }
147
151 {
153 {
156 }
157 else
158 {
159 continue;
160 }
161 }
162
166 {
169
171 {
173 }
174
177 {
180 }
181 }
182 }
183}
#define DBOUT(TYPE, X)
LLVM debug macros, define type of your DBUG model of each pass.
void addNodeToSVFLoop(const ICFGNode *node, const SVFLoop *loop)
Insert (node, loop) to icfgNodeToSVFLoopVec.
ICFGNode * getICFGNode(const Instruction *inst)
Get a basic block ICFGNode.
static const Option< u32_t > LoopBound
bool isIntrinsicInst(const Instruction *inst)
Return true if it is an intrinsic instruction.
std::ostream & outs()
Overwrite llvm::outs()
llvm::BasicBlock BasicBlock
llvm::Instruction Instruction
iter_range< typename GenericGraphTraits< GraphType >::nodes_iterator > nodes(const GraphType &G)
The documentation for this class was generated from the following files: