#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(ICFG *icfg)
Build llvm loops based on LoopInfo analysis.
 
llvm::IRBuilder IRBuilder
 
 
 
 
◆ buildLLVMLoops()
  
  
      
        
          | void LLVMLoopAnalysis::buildLLVMLoops  | 
          ( | 
          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.
 
const FunObjVar * getFunObjVar(const Function *fun) const
 
static LLVMModuleSet * getLLVMModuleSet()
 
DominatorTree & getDomTree(const Function *fun)
 
bool isExtCall(const FunObjVar *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: