svf-tools 1.0.464 → 1.0.467
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Annotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/BDDExpr_8h_source.html +1 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +6 -6
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +21 -20
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +4 -4
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/DCHG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +8 -8
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ICFG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +9 -9
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +24 -23
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +2 -0
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +61 -60
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +7 -6
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +4 -4
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MHP_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MSSAMuChi_8h.html +7 -1
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +4 -3
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +18 -9
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +4 -4
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +50 -48
- package/SVF-doxygen/html/html/Options_8h_source.html +51 -49
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +7 -7
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +15 -14
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp.html +86 -0
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +125 -0
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +53 -48
- package/SVF-doxygen/html/html/SVFG_8h_source.html +42 -39
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +53 -52
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +13 -13
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +9 -9
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +35 -34
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +14 -13
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +6 -6
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/TCT_8h_source.html +10 -10
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +77 -77
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BDDExprManager.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +10 -8
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +28 -26
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +101 -49
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +14 -13
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +21 -20
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +91 -88
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +302 -116
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +100 -97
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +18 -12
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +110 -107
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +44 -42
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +19 -18
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
- package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
- package/SVF-doxygen/html/html/dir_1870ebf480d659cc38d2dd7ac3aa8993.html +2 -0
- package/SVF-doxygen/html/html/files.html +4 -3
- package/SVF-doxygen/html/html/functions_c.html +5 -9
- package/SVF-doxygen/html/html/functions_func_g.html +7 -4
- package/SVF-doxygen/html/html/functions_func_r.html +7 -4
- package/SVF-doxygen/html/html/functions_func_w.html +1 -0
- package/SVF-doxygen/html/html/functions_g.html +9 -6
- package/SVF-doxygen/html/html/functions_i.html +3 -3
- package/SVF-doxygen/html/html/functions_l.html +8 -8
- package/SVF-doxygen/html/html/functions_o.html +14 -14
- package/SVF-doxygen/html/html/functions_p.html +10 -14
- package/SVF-doxygen/html/html/functions_r.html +11 -7
- package/SVF-doxygen/html/html/functions_s.html +14 -12
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_r.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_w.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +4 -0
- package/SVF-doxygen/html/html/globals_s.html +7 -3
- package/SVF-doxygen/html/html/namespaceSVF.html +80 -41
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +233 -199
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +38 -36
- package/SVF-doxygen/html/html/namespacemembers_func.html +4 -1
- package/SVF-doxygen/html/html/namespacemembers_g.html +8 -5
- package/SVF-doxygen/html/html/namespacemembers_o.html +1 -1
- package/SVF-doxygen/html/html/search/all_10.js +3 -3
- package/SVF-doxygen/html/html/search/all_12.js +4 -2
- package/SVF-doxygen/html/html/search/all_13.js +10 -9
- package/SVF-doxygen/html/html/search/all_14.js +3 -3
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_17.js +2 -1
- package/SVF-doxygen/html/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +2 -0
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +3 -3
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/files_d.js +1 -0
- package/SVF-doxygen/html/html/search/functions_14.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +2 -0
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/functions_f.js +1 -0
- package/SVF-doxygen/html/html/search/variables_12.js +1 -0
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_17.js +2 -1
- package/SVF-doxygen/html/html/search/variables_e.js +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +24 -24
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +4 -4
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
- package/include/Graphs/SVFG.h +4 -0
- package/include/MSSA/MSSAMuChi.h +1 -0
- package/include/SVF-FE/LLVMUtil.h +11 -1
- package/include/Util/BasicTypes.h +4 -0
- package/include/Util/Options.h +3 -0
- package/lib/Graphs/SVFG.cpp +31 -27
- package/lib/Graphs/SVFGReadWrite.cpp +478 -0
- package/lib/MSSA/MemRegion.cpp +7 -0
- package/lib/MemoryModel/LocationSet.cpp +2 -2
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
- package/lib/MemoryModel/SymbolTableInfo.cpp +1 -1
- package/lib/SVF-FE/BreakConstantExpr.cpp +3 -1
- package/lib/SVF-FE/CPPUtil.cpp +2 -2
- package/lib/SVF-FE/LLVMUtil.cpp +2 -2
- package/lib/SVF-FE/SVFIRBuilder.cpp +3 -3
- package/lib/SVF-FE/SymbolTableBuilder.cpp +2 -2
- package/lib/Util/Options.cpp +11 -0
- package/lib/Util/PTAStat.cpp +1 -0
- package/package.json +1 -1
|
@@ -720,7 +720,7 @@ Private Attributes</h2></td></tr>
|
|
|
720
720
|
<div class="fragment"><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> {</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(D && S);</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(D), vnS= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(S);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordflow">if</span>(!vnD || !vnS)</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> </div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  std::vector<LocationSet> fields;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> </div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="comment">//Get the max possible size of the copy, unless it was provided.</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  std::vector<LocationSet> srcFields;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  std::vector<LocationSet> dstFields;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *stype = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4cb5ac4a19002023683c4ee47aabb802">getBaseTypeAndFlattenedFields</a>(S, srcFields, szValue);</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *dtype = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4cb5ac4a19002023683c4ee47aabb802">getBaseTypeAndFlattenedFields</a>(D, dstFields, szValue);</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">if</span>(srcFields.size() > dstFields.size())</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  fields = dstFields;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  fields = srcFields;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> </div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sz = fields.size();</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> </div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  <span class="keywordflow">if</span> (fields.size() == 1 && (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">isConstantData</a>(D) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">isConstantData</a>(S)))</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  {</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dummy = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>();</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">addLoadEdge</a>(vnD,dummy);</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(dummy,vnS);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  }</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> </div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="comment">//For each field (i), add (Ti = *S + i) and (*D + i = Ti).</span></div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> index = 0; index < sz; index++)</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  {</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* dElementType = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">getFlatternedElemType</a>(dtype, fields[index].accumulateConstantFieldIdx());</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* sElementType = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">getFlatternedElemType</a>(stype, fields[index].accumulateConstantFieldIdx());</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dField = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a74cff1c31f2fd1d23709b34ae988c29a">getGepValVar</a>(D,fields[index],dElementType);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> sField = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a74cff1c31f2fd1d23709b34ae988c29a">getGepValVar</a>(S,fields[index],sElementType);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dummy = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>();</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">addLoadEdge</a>(sField,dummy);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(dummy,dField);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  }</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> }</div><div class="ttc" id="classSVF_1_1SVFIR_html_aa7e98cd2fd599aedefa4c2e6fb659da0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">SVF::SVFIR::addDummyValNode</a></div><div class="ttdeci">NodeID addDummyValNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00428">SVFIR.h:428</a></div></div>
|
|
721
721
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00086">SVFIRBuilder.h:86</a></div></div>
|
|
722
722
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
723
|
-
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
723
|
+
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
724
724
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4469ae4c52c162d3fbbd559420045243"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">SVF::SVFIRBuilder::addLoadEdge</a></div><div class="ttdeci">void addLoadEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00352">SVFIRBuilder.h:352</a></div></div>
|
|
725
725
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
726
726
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a30f043eeca79259d84b97e265110f018"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">SVF::SVFIRBuilder::addStoreEdge</a></div><div class="ttdeci">void addStoreEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00358">SVFIRBuilder.h:358</a></div></div>
|
|
@@ -728,7 +728,7 @@ Private Attributes</h2></td></tr>
|
|
|
728
728
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
729
729
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00108">SymbolTableInfo.cpp:108</a></div></div>
|
|
730
730
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a87ee08e81de307eb9c02889b6ed98dd5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">SVF::SymbolTableInfo::getFlatternedElemType</a></div><div class="ttdeci">const Type * getFlatternedElemType(const Type *baseType, u32_t flatten_idx)</div><div class="ttdoc">Return the type of a flattened element given a flattened index. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00435">SymbolTableInfo.cpp:435</a></div></div>
|
|
731
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
731
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00417">LLVMUtil.h:417</a></div></div>
|
|
732
732
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
|
|
733
733
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4cb5ac4a19002023683c4ee47aabb802"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4cb5ac4a19002023683c4ee47aabb802">SVF::SVFIRBuilder::getBaseTypeAndFlattenedFields</a></div><div class="ttdeci">const Type * getBaseTypeAndFlattenedFields(const Value *V, std::vector< LocationSet > &fields, const Value *sz)</div><div class="ttdoc">Get the base type and max offset. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01010">SVFIRBuilder.cpp:1010</a></div></div>
|
|
734
734
|
</div><!-- fragment -->
|
|
@@ -916,10 +916,10 @@ Private Attributes</h2></td></tr>
|
|
|
916
916
|
|
|
917
917
|
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00263">263</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
|
|
918
918
|
<div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">getCurrentValue</a>();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">getCurrentBB</a>();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(int2Ptrce,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(node);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval,cbb);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a724198dcaf43730e1df814f15fe4e1e0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">SVF::SVFIRBuilder::getCurrentBB</a></div><div class="ttdeci">const BasicBlock * getCurrentBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00257">SVFIRBuilder.h:257</a></div></div>
|
|
919
|
-
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
919
|
+
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
920
920
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a8bf1847f31ff90937ce76cd0c0af7edb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">SVF::SVFIRBuilder::addBlackHoleAddrEdge</a></div><div class="ttdeci">void addBlackHoleAddrEdge(NodeID node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00288">SVFIRBuilder.h:288</a></div></div>
|
|
921
921
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a15105737c91d01ba9daf2161fad220ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">SVF::SVFIRBuilder::setCurrentLocation</a></div><div class="ttdeci">void setCurrentLocation(const Value *val, const BasicBlock *bb)</div><div class="ttdoc">Set current basic block in order to keep track of control flow information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00248">SVFIRBuilder.h:248</a></div></div>
|
|
922
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
922
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
923
923
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a7bf5d4d18f74f70b61955810e4f01d8c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">SVF::SVFIRBuilder::getCurrentValue</a></div><div class="ttdeci">const Value * getCurrentValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00253">SVFIRBuilder.h:253</a></div></div>
|
|
924
924
|
</div><!-- fragment -->
|
|
925
925
|
</div>
|
|
@@ -1050,7 +1050,7 @@ Private Attributes</h2></td></tr>
|
|
|
1050
1050
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a8bf1847f31ff90937ce76cd0c0af7edb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">SVF::SVFIRBuilder::addBlackHoleAddrEdge</a></div><div class="ttdeci">void addBlackHoleAddrEdge(NodeID node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00288">SVFIRBuilder.h:288</a></div></div>
|
|
1051
1051
|
<div class="ttc" id="classSVF_1_1IRGraph_html_a3b417ee79560fd00f4cf80906044c198"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">SVF::IRGraph::getBlkPtr</a></div><div class="ttdeci">NodeID getBlkPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00156">IRGraph.h:156</a></div></div>
|
|
1052
1052
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a15105737c91d01ba9daf2161fad220ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">SVF::SVFIRBuilder::setCurrentLocation</a></div><div class="ttdeci">void setCurrentLocation(const Value *val, const BasicBlock *bb)</div><div class="ttdoc">Set current basic block in order to keep track of control flow information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00248">SVFIRBuilder.h:248</a></div></div>
|
|
1053
|
-
<div class="ttc" id="namespaceSVF_html_a90f6c91ba7a3c31c84b5c25277d83fca"><div class="ttname"><a href="namespaceSVF.html#a90f6c91ba7a3c31c84b5c25277d83fca">SVF::ConstantPointerNull</a></div><div class="ttdeci">llvm::ConstantPointerNull ConstantPointerNull</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1053
|
+
<div class="ttc" id="namespaceSVF_html_a90f6c91ba7a3c31c84b5c25277d83fca"><div class="ttname"><a href="namespaceSVF.html#a90f6c91ba7a3c31c84b5c25277d83fca">SVF::ConstantPointerNull</a></div><div class="ttdeci">llvm::ConstantPointerNull ConstantPointerNull</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
|
|
1054
1054
|
<div class="ttc" id="classSVF_1_1IRGraph_html_a3de9a2a565c303f68a90c32dc59febd5"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">SVF::IRGraph::getNullPtr</a></div><div class="ttdeci">NodeID getNullPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00160">IRGraph.h:160</a></div></div>
|
|
1055
1055
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
|
|
1056
1056
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
|
|
@@ -1256,7 +1256,7 @@ Private Attributes</h2></td></tr>
|
|
|
1256
1256
|
|
|
1257
1257
|
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00358">358</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
|
|
1258
1258
|
<div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  IntraICFGNode* node;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast<Instruction>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>))</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a2b3a5a9c3c4c623a6d45ab1eac3c6a8b">getIntraICFGNode</a>(inst);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  node = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">if</span>(StoreStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#af9804d78e4158d3c8961e1f84bbef91e">addStoreStmt</a>(src, dst, node))</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="ttc" id="classSVF_1_1ICFG_html_a2b3a5a9c3c4c623a6d45ab1eac3c6a8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a2b3a5a9c3c4c623a6d45ab1eac3c6a8b">SVF::ICFG::getIntraICFGNode</a></div><div class="ttdeci">IntraICFGNode * getIntraICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00247">ICFG.cpp:247</a></div></div>
|
|
1259
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1259
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
1260
1260
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5afb07f2cf8d76f8db334250e0c96cc0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">SVF::SVFIRBuilder::curVal</a></div><div class="ttdeci">const Value * curVal</div><div class="ttdoc">Current Value during SVFIR construction when visiting the module. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00052">SVFIRBuilder.h:52</a></div></div>
|
|
1261
1261
|
<div class="ttc" id="classSVF_1_1SVFIR_html_af9804d78e4158d3c8961e1f84bbef91e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af9804d78e4158d3c8961e1f84bbef91e">SVF::SVFIR::addStoreStmt</a></div><div class="ttdeci">StoreStmt * addStoreStmt(NodeID src, NodeID dst, const IntraICFGNode *val)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00228">SVFIR.cpp:228</a></div></div>
|
|
1262
1262
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01618">SVFIRBuilder.cpp:1618</a></div></div>
|
|
@@ -1510,12 +1510,12 @@ Private Attributes</h2></td></tr>
|
|
|
1510
1510
|
|
|
1511
1511
|
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00048">48</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
1512
1512
|
<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="classSVF_1_1PAGBuilderFromFile.html">PAGBuilderFromFile</a> fileBuilder(<a class="code" href="classSVF_1_1SVFModule.html#a54c2bc2cb7cda0d74f4cadc676461b60">SVFModule::pagFileName</a>());</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> fileBuilder.build();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// If the SVFIR has been built before, then we return the unique SVFIR of the program</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a0a18bca50f7cd3a1882754f19303d257">getNodeNumAfterPAGBuild</a>() > 1)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#aa67bbd366b93fb1ec7a540c83566c977">svfMod</a> = svfModule;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#af4b18e8e1fdfb117cb5dd1a81cea4b71">initialiseNodes</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4c6cd51def26ebd8e839df9fdc4b64b8">visitGlobal</a>(svfModule);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> fit = svfModule-><a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), efit = svfModule-><a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  fit != efit; ++fit)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>& fun = **fit;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>(!fun.<a class="code" href="classSVF_1_1SVFFunction.html#ab672f0255ec8e42d5e414bc8c72b7c76">isDeclaration</a>())</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->doesNotReturn() == <span class="keyword">false</span> && fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->getReturnType()->isVoidTy() == <span class="keyword">false</span>)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69">addFunRet</a>(&fun,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a96010999a4e5013beb1c37ef753ff910">getReturnNode</a>(&fun)));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">for</span> (Function::arg_iterator I = fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->arg_begin(), E = fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->arg_end();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  I != E; ++I)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(&*I,&fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->getEntryBlock());</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> argValNodeId = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(&*I);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// if this is the function does not have caller (e.g. main)</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// or a dead function, shall we create a black hole address edge for it?</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// it is (1) too conservative, and (2) make FormalParmVFGNode defined at blackhole address PAGEdge.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// if(SVFUtil::ArgInNoCallerFunction(&*I)) {</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// if(I->getType()->isPointerTy())</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// addBlackHoleAddrEdge(argValNodeId);</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">//}</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#ac27b9eedd489f13175c010a32203abae">addFunArgs</a>(&fun,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(argValNodeId));</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">for</span> (Function::iterator bit = fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->begin(), ebit = fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->end();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  bit != ebit; ++bit)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb = *bit;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">for</span> (BasicBlock::iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  it != eit; ++it)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>& inst = *it;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(&inst,&bb);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  visit(inst);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60">sanityCheck</a>();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">initialiseCandidatePointers</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a5fe12445ed0528183775747dec356db0">setNodeNumAfterPAGBuild</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>());</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// dump SVFIR</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">Options::PAGDotGraph</a>)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">"svfir_initial"</span>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// print to command line of the SVFIR graph</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a98df022c5da54ea30b3f0ce008d3ca80">Options::PAGPrint</a>)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">print</a>();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// dump ICFG</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#aea29a835c54fab800117e57de00e0b1e">Options::DumpICFG</a>)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">dump</a>(<span class="stringliteral">"icfg_initial"</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00418">GenericGraph.h:418</a></div></div>
|
|
1513
|
-
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1513
|
+
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1514
1514
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1515
1515
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
|
|
1516
1516
|
<div class="ttc" id="classSVF_1_1IRGraph_html_a1cb32461439c4dc8d044c2bfadb11307"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">SVF::IRGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00102">IRGraph.cpp:102</a></div></div>
|
|
1517
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ab672f0255ec8e42d5e414bc8c72b7c76"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ab672f0255ec8e42d5e414bc8c72b7c76">SVF::SVFFunction::isDeclaration</a></div><div class="ttdeci">bool isDeclaration() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1518
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1517
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ab672f0255ec8e42d5e414bc8c72b7c76"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ab672f0255ec8e42d5e414bc8c72b7c76">SVF::SVFFunction::isDeclaration</a></div><div class="ttdeci">bool isDeclaration() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00150">BasicTypes.h:150</a></div></div>
|
|
1518
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
|
|
1519
1519
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_af4b18e8e1fdfb117cb5dd1a81cea4b71"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#af4b18e8e1fdfb117cb5dd1a81cea4b71">SVF::SVFIRBuilder::initialiseNodes</a></div><div class="ttdeci">void initialiseNodes()</div><div class="ttdoc">Initialize nodes and edges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00143">SVFIRBuilder.cpp:143</a></div></div>
|
|
1520
1520
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a09baa8c7246853c3faaed85b38f0da60"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60">SVF::SVFIRBuilder::sanityCheck</a></div><div class="ttdeci">void sanityCheck()</div><div class="ttdoc">Sanity check for SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01547">SVFIRBuilder.cpp:1547</a></div></div>
|
|
1521
1521
|
<div class="ttc" id="classSVF_1_1Options_html_a3a20311c732fb391332ae0ee1cb450a0"><div class="ttname"><a href="classSVF_1_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">SVF::Options::PAGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PAGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00133">Options.h:133</a></div></div>
|
|
@@ -1527,11 +1527,11 @@ Private Attributes</h2></td></tr>
|
|
|
1527
1527
|
<div class="ttc" id="classSVF_1_1IRGraph_html_a0a18bca50f7cd3a1882754f19303d257"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a0a18bca50f7cd3a1882754f19303d257">SVF::IRGraph::getNodeNumAfterPAGBuild</a></div><div class="ttdeci">u32_t getNodeNumAfterPAGBuild() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00181">IRGraph.h:181</a></div></div>
|
|
1528
1528
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a54c2bc2cb7cda0d74f4cadc676461b60"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a54c2bc2cb7cda0d74f4cadc676461b60">SVF::SVFModule::pagFileName</a></div><div class="ttdeci">static std::string pagFileName()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00088">SVFModule.h:88</a></div></div>
|
|
1529
1529
|
<div class="ttc" id="classSVF_1_1PAGBuilderFromFile_html"><div class="ttname"><a href="classSVF_1_1PAGBuilderFromFile.html">SVF::PAGBuilderFromFile</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGBuilderFromFile_8h_source.html#l00041">PAGBuilderFromFile.h:41</a></div></div>
|
|
1530
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1530
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
1531
1531
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a236b4fefd16e9c793c5bd6d576290841"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">SVF::SVFIR::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00573">SVFIR.cpp:573</a></div></div>
|
|
1532
1532
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa67bbd366b93fb1ec7a540c83566c977"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa67bbd366b93fb1ec7a540c83566c977">SVF::SVFIRBuilder::svfMod</a></div><div class="ttdeci">SVFModule * svfMod</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00050">SVFIRBuilder.h:50</a></div></div>
|
|
1533
1533
|
<div class="ttc" id="classSVF_1_1ICFG_html_a999956500bbd605326531480546db9ba"><div class="ttname"><a href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">SVF::ICFG::dump</a></div><div class="ttdeci">void dump(const std::string &file, bool simple=false)</div><div class="ttdoc">Dump graph into dot file. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00425">ICFG.cpp:425</a></div></div>
|
|
1534
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1534
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
1535
1535
|
<div class="ttc" id="classSVF_1_1Options_html_aea29a835c54fab800117e57de00e0b1e"><div class="ttname"><a href="classSVF_1_1Options.html#aea29a835c54fab800117e57de00e0b1e">SVF::Options::DumpICFG</a></div><div class="ttdeci">static const llvm::cl::opt< bool > DumpICFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00135">Options.h:135</a></div></div>
|
|
1536
1536
|
<div class="ttc" id="classSVF_1_1Options_html_a98df022c5da54ea30b3f0ce008d3ca80"><div class="ttname"><a href="classSVF_1_1Options.html#a98df022c5da54ea30b3f0ce008d3ca80">SVF::Options::PAGPrint</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PAGPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00137">Options.h:137</a></div></div>
|
|
1537
1537
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00155">SVFModule.h:155</a></div></div>
|
|
@@ -1584,24 +1584,25 @@ Private Attributes</h2></td></tr>
|
|
|
1584
1584
|
<p>Return the object node offset according to GEP insn (V). Given a gep edge p = q + i, if "i" is a constant then we return its offset size otherwise if "i" is a variable determined by runtime, then it is a variant offset Return TRUE if the offset of this GEP insn is a constant. </p>
|
|
1585
1585
|
|
|
1586
1586
|
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00234">234</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
1587
|
-
<div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(V);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keyword">const</span> llvm::GEPOperator *gepOp = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<span class="keyword">const</span> llvm::GEPOperator>(V);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a> * dataLayout = <a class="code" href="namespaceSVF_1_1SVFUtil.html#abe0dde753f9f79e30296208eb4d97eed">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getMainLLVMModule());</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  llvm::APInt byteOffset(dataLayout->getIndexSizeInBits(gepOp->getPointerAddressSpace()),0,<span class="keyword">true</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">if</span>(gepOp && dataLayout && gepOp->accumulateConstantOffset(*dataLayout,byteOffset))</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">//s32_t bo = byteOffset.getSExtValue();</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1generic__bridge__gep__type__iterator.html">bridge_gep_iterator</a> gi = <a class="code" href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">bridge_gep_begin</a>(*V), ge = <a class="code" href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">bridge_gep_end</a>(*V);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  gi != ge; ++gi)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* gepTy = *gi;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* offsetVal = gi.getOperand();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  ls.<a class="code" href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b">addOffsetValue</a>(offsetVal, gepTy);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">//The int value of the current index operand</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *op = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>>(offsetVal);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// if Options::ModelConsts is disabled. We will treat whole array as one,</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="comment">// but we can distinguish different field of an array of struct, e.g. s[1].f1 is differet from s[0].f2</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ArrayType>(gepTy))</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span>(!op)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx = op->getSExtValue();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> offset = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">getFlattenedElemIdx</a>(gepTy, idx);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  ls.<a class="code" href="classSVF_1_1LocationSet.html#abe990543374ebd8c1b3ee0d37c83eb8f">setFldIdx</a>(ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>() + offset);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *ST = SVFUtil::dyn_cast<StructType>(gepTy))</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(op && <span class="stringliteral">"non-const offset accessing a struct"</span>);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="comment">//The actual index</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx = op->getSExtValue();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> offset = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">getFlattenedElemIdx</a>(ST, idx);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  ls.<a class="code" href="classSVF_1_1LocationSet.html#abe990543374ebd8c1b3ee0d37c83eb8f">setFldIdx</a>(ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>() + offset);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (gepTy->isSingleValueType())</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">// If it's a non-constant offset access</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// If its point-to target is struct or array, it's likely an array accessing (%result = gep %struct.A* %a, i32 %non-const-index)</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// If its point-to target is single value (pointer arithmetic), then it's a variant gep (%result = gep i8* %p, i32 %non-const-index)</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span>(!op && gepTy->isPointerTy() && gepTy->getPointerElementType()->isSingleValueType())</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">// The actual index</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">//s32_t idx = op->getSExtValue();</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">// For pointer arithmetic we ignore the byte offset</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// consider using inferFieldIdxFromByteOffset(geopOp,dataLayout,ls,idx)?</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">// ls.setFldIdx(ls.accumulateConstantFieldIdx() + inferFieldIdxFromByteOffset(geopOp,idx));</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_aa81a27b9c6b2a354437417162220fb14"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a></div><div class="ttdeci">llvm::DataLayout DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00051">BasicTypes.h:51</a></div></div>
|
|
1588
|
-
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1587
|
+
<div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(V);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keyword">const</span> llvm::GEPOperator *gepOp = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<span class="keyword">const</span> llvm::GEPOperator>(V);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a> * dataLayout = <a class="code" href="namespaceSVF_1_1SVFUtil.html#abe0dde753f9f79e30296208eb4d97eed">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getMainLLVMModule());</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  llvm::APInt byteOffset(dataLayout->getIndexSizeInBits(gepOp->getPointerAddressSpace()),0,<span class="keyword">true</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">if</span>(gepOp && dataLayout && gepOp->accumulateConstantOffset(*dataLayout,byteOffset))</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">//s32_t bo = byteOffset.getSExtValue();</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1generic__bridge__gep__type__iterator.html">bridge_gep_iterator</a> gi = <a class="code" href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">bridge_gep_begin</a>(*V), ge = <a class="code" href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">bridge_gep_end</a>(*V);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  gi != ge; ++gi)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* gepTy = *gi;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* offsetVal = gi.getOperand();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  ls.<a class="code" href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b">addOffsetValue</a>(offsetVal, gepTy);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">//The int value of the current index operand</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *op = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>>(offsetVal);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// if Options::ModelConsts is disabled. We will treat whole array as one,</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="comment">// but we can distinguish different field of an array of struct, e.g. s[1].f1 is differet from s[0].f2</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ArrayType>(gepTy))</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span>(!op)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx = op->getSExtValue();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> offset = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">getFlattenedElemIdx</a>(gepTy, idx);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  ls.<a class="code" href="classSVF_1_1LocationSet.html#abe990543374ebd8c1b3ee0d37c83eb8f">setFldIdx</a>(ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>() + offset);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *ST = SVFUtil::dyn_cast<StructType>(gepTy))</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(op && <span class="stringliteral">"non-const offset accessing a struct"</span>);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="comment">//The actual index</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx = op->getSExtValue();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> offset = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">getFlattenedElemIdx</a>(ST, idx);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  ls.<a class="code" href="classSVF_1_1LocationSet.html#abe990543374ebd8c1b3ee0d37c83eb8f">setFldIdx</a>(ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>() + offset);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (gepTy->isSingleValueType())</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">// If it's a non-constant offset access</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// If its point-to target is struct or array, it's likely an array accessing (%result = gep %struct.A* %a, i32 %non-const-index)</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// If its point-to target is single value (pointer arithmetic), then it's a variant gep (%result = gep i8* %p, i32 %non-const-index)</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span>(!op && gepTy->isPointerTy() && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">getPtrElementType</a>(SVFUtil::dyn_cast<PointerType>(gepTy))->isSingleValueType())</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">// The actual index</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">//s32_t idx = op->getSExtValue();</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">// For pointer arithmetic we ignore the byte offset</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// consider using inferFieldIdxFromByteOffset(geopOp,dataLayout,ls,idx)?</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">// ls.setFldIdx(ls.accumulateConstantFieldIdx() + inferFieldIdxFromByteOffset(geopOp,idx));</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_aa81a27b9c6b2a354437417162220fb14"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a></div><div class="ttdeci">llvm::DataLayout DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00051">BasicTypes.h:51</a></div></div>
|
|
1588
|
+
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
1589
1589
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1590
1590
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a8fc42c2b02317621d6aeb3c5f52d3ee8"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">SVF::SymbolTableInfo::getFlattenedElemIdx</a></div><div class="ttdeci">u32_t getFlattenedElemIdx(const Type *T, u32_t origId)</div><div class="ttdoc">Flatterned element idx of an array or struct by considering stride. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00404">SymbolTableInfo.cpp:404</a></div></div>
|
|
1591
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_abe0dde753f9f79e30296208eb4d97eed"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#abe0dde753f9f79e30296208eb4d97eed">SVF::SVFUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
1591
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_abe0dde753f9f79e30296208eb4d97eed"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#abe0dde753f9f79e30296208eb4d97eed">SVF::SVFUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00643">LLVMUtil.h:643</a></div></div>
|
|
1592
1592
|
<div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
1593
|
-
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1593
|
+
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
|
|
1594
1594
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
1595
1595
|
<div class="ttc" id="classSVF_1_1LocationSet_html_aa2682a73f1ab2c32326fb4e0d5b3586b"><div class="ttname"><a href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b">SVF::LocationSet::addOffsetValue</a></div><div class="ttdeci">bool addOffsetValue(const Value *offsetValue, const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00043">LocationSet.cpp:43</a></div></div>
|
|
1596
1596
|
<div class="ttc" id="namespacellvm_html_acfe99e9d441434240c79f6d76b73fe0a"><div class="ttname"><a href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">llvm::bridge_gep_begin</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_begin(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00149">GEPTypeBridgeIterator.h:149</a></div></div>
|
|
1597
|
-
<div class="ttc" id="namespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1597
|
+
<div class="ttc" id="namespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00087">BasicTypes.h:87</a></div></div>
|
|
1598
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8e7f56fa15cea924a09cd6903de2606c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">SVF::SVFUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00107">LLVMUtil.h:107</a></div></div>
|
|
1598
1599
|
<div class="ttc" id="classSVF_1_1LocationSet_html_abe990543374ebd8c1b3ee0d37c83eb8f"><div class="ttname"><a href="classSVF_1_1LocationSet.html#abe990543374ebd8c1b3ee0d37c83eb8f">SVF::LocationSet::setFldIdx</a></div><div class="ttdeci">void setFldIdx(s32_t idx)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00094">LocationSet.h:94</a></div></div>
|
|
1599
1600
|
<div class="ttc" id="classSVF_1_1LocationSet_html_a63c5c8e03b35e0d0cea94137d309c853"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">SVF::LocationSet::accumulateConstantFieldIdx</a></div><div class="ttdeci">s32_t accumulateConstantFieldIdx() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00090">LocationSet.h:90</a></div></div>
|
|
1600
1601
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00108">SymbolTableInfo.cpp:108</a></div></div>
|
|
1601
1602
|
<div class="ttc" id="namespacellvm_html_a7cfc92a12082d69711c97bb3d1b99c48"><div class="ttname"><a href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">llvm::bridge_gep_end</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_end(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00157">GEPTypeBridgeIterator.h:157</a></div></div>
|
|
1602
1603
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
|
|
1603
1604
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
1604
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1605
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
1605
1606
|
<div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html">llvm::generic_bridge_gep_type_iterator</a></div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00017">GEPTypeBridgeIterator.h:17</a></div></div>
|
|
1606
1607
|
</div><!-- fragment -->
|
|
1607
1608
|
</div>
|
|
@@ -1651,19 +1652,20 @@ Private Attributes</h2></td></tr>
|
|
|
1651
1652
|
<p>use user-specified size for this copy operation if the size is a constaint int </p>
|
|
1652
1653
|
|
|
1653
1654
|
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01010">1010</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
1654
|
-
<div class="fragment"><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> {</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(V);</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a892ab8cad098e9e9d8425e7f05e35c59">getBaseValueForExtArg</a>(V);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T = value->getType();</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *ptype = SVFUtil::dyn_cast<PointerType>(T))</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  T = ptype
|
|
1655
|
-
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1655
|
+
<div class="fragment"><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> {</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(V);</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a892ab8cad098e9e9d8425e7f05e35c59">getBaseValueForExtArg</a>(V);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T = value->getType();</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *ptype = SVFUtil::dyn_cast<PointerType>(T))</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  T = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">getPtrElementType</a>(ptype);</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> </div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfElems = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(T);</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <span class="keywordflow">if</span>(szValue && SVFUtil::isa<ConstantInt>(szValue))</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  {</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  numOfElems = (numOfElems > SVFUtil::cast<ConstantInt>(szValue)->getSExtValue()) ? SVFUtil::cast<ConstantInt>(szValue)->getSExtValue() : numOfElems;</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  }</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  <a class="code" href="SVF-FE_2BasicTypes_8h.html#a9f19a521d06397d1b6dc52c0388513d9">LLVMContext</a>& context = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>();</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> ei = 0; ei < numOfElems; ei++)</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  {</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls(ei);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="comment">// make a ConstantInt and create char for the content type due to byte-wise copy</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* offset = ConstantInt::get(context, llvm::APInt(32, ei));</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  ls.addOffsetValue(offset, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  fields.push_back(ls);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  }</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  <span class="keywordflow">return</span> T;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a9f19a521d06397d1b6dc52c0388513d9"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a9f19a521d06397d1b6dc52c0388513d9">LLVMContext</a></div><div class="ttdeci">llvm::LLVMContext LLVMContext</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00027">BasicTypes.h:27</a></div></div>
|
|
1656
|
+
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
1656
1657
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1657
|
-
<div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1658
|
+
<div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
|
|
1658
1659
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ac1a9d20d62066ec4e181fad223669e32"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">SVF::LLVMModuleSet::getContext</a></div><div class="ttdeci">LLVMContext & getContext() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00200">LLVMModule.h:200</a></div></div>
|
|
1659
|
-
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1660
|
+
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
|
|
1660
1661
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
1661
1662
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a892ab8cad098e9e9d8425e7f05e35c59"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a892ab8cad098e9e9d8425e7f05e35c59">SVF::SVFIRBuilder::getBaseValueForExtArg</a></div><div class="ttdeci">const Value * getBaseValueForExtArg(const Value *V)</div><div class="ttdoc">Get the base value of (i8* src and i8* dst) for external argument (e.g. memcpy(i8* dst...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00989">SVFIRBuilder.cpp:989</a></div></div>
|
|
1663
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8e7f56fa15cea924a09cd6903de2606c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">SVF::SVFUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00107">LLVMUtil.h:107</a></div></div>
|
|
1662
1664
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00108">SymbolTableInfo.cpp:108</a></div></div>
|
|
1663
1665
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
|
|
1664
1666
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aec579894eed558ea89740b68360187aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">SVF::SymbolTableInfo::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements(const Type *T)</div><div class="ttdoc">Number of flattenned elements of an array or struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00395">SymbolTableInfo.cpp:395</a></div></div>
|
|
1665
1667
|
<div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
|
|
1666
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1668
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
1667
1669
|
</div><!-- fragment -->
|
|
1668
1670
|
</div>
|
|
1669
1671
|
</div>
|
|
@@ -1697,11 +1699,11 @@ Private Attributes</h2></td></tr>
|
|
|
1697
1699
|
<div class="fragment"><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> {</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * value = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a69991ab4e9a7705202c1357079ab5fa8">stripAllCasts</a>(V);</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(value && <span class="stringliteral">"null ptr?"</span>);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a255d310b1b573ca5c69fd715d7815d79">GetElementPtrInst</a>* gep = SVFUtil::dyn_cast<GetElementPtrInst>(value))</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  {</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> totalidx = 0;</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1generic__bridge__gep__type__iterator.html">bridge_gep_iterator</a> gi = <a class="code" href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">bridge_gep_begin</a>(gep), ge = <a class="code" href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">bridge_gep_end</a>(gep); gi != ge; ++gi)</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  {</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *op = SVFUtil::dyn_cast<ConstantInt>(gi.getOperand()))</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  totalidx += op->getSExtValue();</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  }</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordflow">if</span>(totalidx == 0 && !SVFUtil::isa<StructType>(value->getType()))</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  value = gep->getPointerOperand();</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="keywordflow">return</span> value;</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a255d310b1b573ca5c69fd715d7815d79"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a255d310b1b573ca5c69fd715d7815d79">GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
1698
1700
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1699
1701
|
<div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
1700
|
-
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1702
|
+
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
|
|
1701
1703
|
<div class="ttc" id="namespacellvm_html_acfe99e9d441434240c79f6d76b73fe0a"><div class="ttname"><a href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">llvm::bridge_gep_begin</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_begin(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00149">GEPTypeBridgeIterator.h:149</a></div></div>
|
|
1702
1704
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a69991ab4e9a7705202c1357079ab5fa8"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a69991ab4e9a7705202c1357079ab5fa8">SVF::SVFUtil::stripAllCasts</a></div><div class="ttdeci">const Value * stripAllCasts(const Value *val)</div><div class="ttdoc">Strip off the all casts. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00192">LLVMUtil.cpp:192</a></div></div>
|
|
1703
1705
|
<div class="ttc" id="namespacellvm_html_a7cfc92a12082d69711c97bb3d1b99c48"><div class="ttname"><a href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">llvm::bridge_gep_end</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_end(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00157">GEPTypeBridgeIterator.h:157</a></div></div>
|
|
1704
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1706
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
1705
1707
|
<div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html">llvm::generic_bridge_gep_type_iterator</a></div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00017">GEPTypeBridgeIterator.h:17</a></div></div>
|
|
1706
1708
|
</div><!-- fragment -->
|
|
1707
1709
|
</div>
|
|
@@ -1805,7 +1807,7 @@ Private Attributes</h2></td></tr>
|
|
|
1805
1807
|
|
|
1806
1808
|
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01573">1573</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
1807
1809
|
<div class="fragment"><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span> {</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(val));</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#af17643b59ad9aa277b6e8f90a47c76b0">getGepValVar</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>, base, ls);</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  <span class="keywordflow">if</span> (gepval==UINT_MAX)</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  {</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(((<span class="keywordtype">int</span>) UINT_MAX)==-1 && <span class="stringliteral">"maximum limit of unsigned int is not -1?"</span>);</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  <span class="comment">/*</span></div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span> <span class="comment"> * getGepValVar can only be called from two places:</span></div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span> <span class="comment"> * 1. SVFIRBuilder::addComplexConsForExt to handle external calls</span></div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> <span class="comment"> * 2. SVFIRBuilder::getGlobalVarField to initialize global variable</span></div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span> <span class="comment"> * so curVal can only be</span></div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span> <span class="comment"> * 1. Instruction</span></div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span> <span class="comment"> * 2. GlobalVariable</span></div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span> <span class="comment"> */</span></div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((SVFUtil::isa<Instruction>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>) || SVFUtil::isa<GlobalVariable>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>)) && <span class="stringliteral">"curVal not an instruction or a globalvariable?"</span>);</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span> </div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  <span class="comment">// We assume every GepValNode and its GepEdge to the baseNode are unique across the whole program</span></div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  <span class="comment">// We preserve the current BB information to restore it after creating the gepNode</span></div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">getCurrentValue</a>();</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">getCurrentBB</a>();</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepNode= <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a781ffc0194fd501dcb34f1892a393c33">addGepValNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>, val,ls, <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()->allocateValueId(),elementType->getPointerTo());</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ac70a2368d5e0d3fe4dff94fecb2455ef">addGepEdge</a>(base, gepNode, ls, <span class="keyword">true</span>);</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>  <span class="keywordflow">return</span> gepNode;</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>  }</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>  <span class="keywordflow">return</span> gepval;</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span> }</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a724198dcaf43730e1df814f15fe4e1e0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">SVF::SVFIRBuilder::getCurrentBB</a></div><div class="ttdeci">const BasicBlock * getCurrentBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00257">SVFIRBuilder.h:257</a></div></div>
|
|
1808
|
-
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1810
|
+
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1809
1811
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00086">SVFIRBuilder.h:86</a></div></div>
|
|
1810
1812
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1811
1813
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
@@ -1817,7 +1819,7 @@ Private Attributes</h2></td></tr>
|
|
|
1817
1819
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5afb07f2cf8d76f8db334250e0c96cc0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">SVF::SVFIRBuilder::curVal</a></div><div class="ttdeci">const Value * curVal</div><div class="ttdoc">Current Value during SVFIR construction when visiting the module. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00052">SVFIRBuilder.h:52</a></div></div>
|
|
1818
1820
|
<div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
|
|
1819
1821
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
|
|
1820
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1822
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
1821
1823
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a7bf5d4d18f74f70b61955810e4f01d8c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">SVF::SVFIRBuilder::getCurrentValue</a></div><div class="ttdeci">const Value * getCurrentValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00253">SVFIRBuilder.h:253</a></div></div>
|
|
1822
1824
|
</div><!-- fragment -->
|
|
1823
1825
|
</div>
|
|
@@ -2116,30 +2118,30 @@ Private Attributes</h2></td></tr>
|
|
|
2116
2118
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aff99c8de4acf4eeaf01803dadf459b92"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">SVF::SVFIRBuilder::getReturnNode</a></div><div class="ttdeci">NodeID getReturnNode(const SVFFunction *func)</div><div class="ttdoc">getReturnNode - Return the node representing the unique return value of a function. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00102">SVFIRBuilder.h:102</a></div></div>
|
|
2117
2119
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2118
2120
|
<div class="ttc" id="classSVF_1_1ICFG_html_af1b2d2839f811a00103df87342dfc919"><div class="ttname"><a href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitICFGNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00265">ICFG.cpp:265</a></div></div>
|
|
2119
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2121
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00211">BasicTypes.h:211</a></div></div>
|
|
2120
2122
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
|
|
2121
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_a46e8ffe430bb2711abaafc9d7864909e"><div class="ttname"><a href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">SVF::CallSite::arg_end</a></div><div class="ttdeci">User::const_op_iterator arg_end() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2123
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_a46e8ffe430bb2711abaafc9d7864909e"><div class="ttname"><a href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">SVF::CallSite::arg_end</a></div><div class="ttdeci">User::const_op_iterator arg_end() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00228">BasicTypes.h:228</a></div></div>
|
|
2122
2124
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00069">SVFUtil.cpp:69</a></div></div>
|
|
2123
2125
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a3fe99644b2bf5f0f9b2b21a56a400ad4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a3fe99644b2bf5f0f9b2b21a56a400ad4">SVF::SVFIRBuilder::getVarargNode</a></div><div class="ttdeci">NodeID getVarargNode(const SVFFunction *func)</div><div class="ttdoc">getVarargNode - Return the node representing the unique variadic argument of a function. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00108">SVFIRBuilder.h:108</a></div></div>
|
|
2124
2126
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abaf03c3031ef3940c73e3cd8e8ca17b6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abaf03c3031ef3940c73e3cd8e8ca17b6">SVF::SVFIRBuilder::addCallEdge</a></div><div class="ttdeci">void addCallEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Call edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00369">SVFIRBuilder.h:369</a></div></div>
|
|
2125
2127
|
<div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00223">ICFG.cpp:223</a></div></div>
|
|
2126
2128
|
<div class="ttc" id="classSVF_1_1FunEntryICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html">SVF::FunEntryICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00251">ICFGNode.h:251</a></div></div>
|
|
2127
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_aabc0054b7f4e06b7ca0b6072746984e6"><div class="ttname"><a href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">SVF::CallSite::arg_begin</a></div><div class="ttdeci">User::const_op_iterator arg_begin() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2129
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_aabc0054b7f4e06b7ca0b6072746984e6"><div class="ttname"><a href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">SVF::CallSite::arg_begin</a></div><div class="ttdeci">User::const_op_iterator arg_begin() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00224">BasicTypes.h:224</a></div></div>
|
|
2128
2130
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
2129
2131
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00392">SVFUtil.cpp:392</a></div></div>
|
|
2130
2132
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
2131
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2132
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_a9b7d53a345875e4e6c72eb23ac6475de"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9b7d53a345875e4e6c72eb23ac6475de">SVF::CallSite::getType</a></div><div class="ttdeci">Type * getType() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2133
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
2134
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_a9b7d53a345875e4e6c72eb23ac6475de"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9b7d53a345875e4e6c72eb23ac6475de">SVF::CallSite::getType</a></div><div class="ttdeci">Type * getType() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00220">BasicTypes.h:220</a></div></div>
|
|
2133
2135
|
<div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00161">SVFBasicTypes.h:161</a></div></div>
|
|
2134
2136
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a89e8cc23aad23d2c326b4a5ff12535ca"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a89e8cc23aad23d2c326b4a5ff12535ca">SVF::SVFIRBuilder::addRetEdge</a></div><div class="ttdeci">void addRetEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Return edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00375">SVFIRBuilder.h:375</a></div></div>
|
|
2135
2137
|
<div class="ttc" id="classSVF_1_1ICFG_html_a0dca4655c2f6112a5be1f921b8e81076"><div class="ttname"><a href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">SVF::ICFG::getFunEntryICFGNode</a></div><div class="ttdeci">FunEntryICFGNode * getFunEntryICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function entry node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00256">ICFG.cpp:256</a></div></div>
|
|
2136
2138
|
<div class="ttc" id="classSVF_1_1FunExitICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html">SVF::FunExitICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00308">ICFGNode.h:308</a></div></div>
|
|
2137
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_ac1cdfe5e54026960a23142e26b3150ff"><div class="ttname"><a href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">SVF::CallSite::arg_iterator</a></div><div class="ttdeci">User::const_op_iterator arg_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2139
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_ac1cdfe5e54026960a23142e26b3150ff"><div class="ttname"><a href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">SVF::CallSite::arg_iterator</a></div><div class="ttdeci">User::const_op_iterator arg_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00215">BasicTypes.h:215</a></div></div>
|
|
2138
2140
|
<div class="ttc" id="cuddInt_8c_html_a936a27e51e66afb57c2b3a12d78a238e"><div class="ttname"><a href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a></div><div class="ttdeci">static int * entry</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l08422">cuddInt.c:8422</a></div></div>
|
|
2139
2141
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
|
|
2140
2142
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
|
|
2141
2143
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
2142
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2144
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
2143
2145
|
</div><!-- fragment -->
|
|
2144
2146
|
</div>
|
|
2145
2147
|
</div>
|
|
@@ -2193,7 +2195,7 @@ Private Attributes</h2></td></tr>
|
|
|
2193
2195
|
<p>TODO: inter-procedural <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> edges for thread joins </p>
|
|
2194
2196
|
|
|
2195
2197
|
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01088">1088</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2196
|
-
<div class="fragment"><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> {</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>();</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a61ed4bb80d88b0f8dbc02535c224fdfb">isHeapAllocOrStaticExtCall</a>(cs))</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  {</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <span class="comment">// case 1: ret = new obj</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">isHeapAllocExtCallViaRet</a>(cs) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">isStaticExtCall</a>(cs))</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  {</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> val = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst);</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(inst);</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(obj, val);</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  }</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="comment">// case 2: *arg = new obj</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  {</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">isHeapAllocExtCallViaArg</a>(cs) && <span class="stringliteral">"Must be heap alloc call via arg."</span>);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="keywordtype">int</span> arg_pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">getHeapAllocHoldingArgPosition</a>(callee);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *arg = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(arg_pos);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <span class="keywordflow">if</span> (arg->getType()->isPointerTy())</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  {</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnArg = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(arg);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dummy = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>();</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a905b16c9fe739c4e95902b2729951b5b">addDummyObjNode</a>(arg->getType());</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <span class="keywordflow">if</span> (vnArg && dummy && obj)</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  {</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(obj, dummy);</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(dummy, vnArg);</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  }</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  }</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  {</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">"Arg receiving new object must be pointer type"</span>);</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  }</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  }</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  }</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee))</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  {</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094">ExtAPI::extf_t</a> tF= <a class="code" href="namespaceSVF_1_1SVFUtil.html#ac3e7507fb376b1625bc1573132ab9f06">extCallTy</a>(callee);</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="keywordflow">switch</span>(tF)</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  {</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a1f23e7b8cdd103943f515e807bf36b1c">ExtAPI::EFT_REALLOC</a>:</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  {</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="keywordflow">if</span>(!SVFUtil::isa<PointerType>(inst->getType()))</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  <span class="comment">// e.g. void *realloc(void *ptr, size_t size)</span></div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="comment">// if ptr is null then we will treat it as a malloc</span></div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <span class="comment">// if ptr is not null, then we assume a new data memory will be attached to</span></div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="comment">// the tail of old allocated memory block.</span></div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ConstantPointerNull>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0)))</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> val = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst);</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(inst);</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(obj, val);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  }</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  }</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a6363df51947cab85ec4ae04b4e056f96">ExtAPI::EFT_L_A0</a>:</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  {</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst);</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *src= cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0);</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(src);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(srcNode, dstNode);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  }</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> </div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aec63c85b24133af679d60dda42ab44ab">ExtAPI::EFT_L_A1</a>:</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ac078d0307bec384b6df3da561045ff7d">ExtAPI::EFT_L_A2</a>:</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a1e119ad93f66dbbf8014917febad843c">ExtAPI::EFT_L_A8</a>:</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  {</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  <span class="keywordflow">if</span>(!SVFUtil::isa<PointerType>(inst->getType()))</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> arg_pos;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <span class="keywordflow">switch</span>(tF)</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  {</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aec63c85b24133af679d60dda42ab44ab">ExtAPI::EFT_L_A1</a>:</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  arg_pos= 1;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ac078d0307bec384b6df3da561045ff7d">ExtAPI::EFT_L_A2</a>:</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  arg_pos= 2;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a1e119ad93f66dbbf8014917febad843c">ExtAPI::EFT_L_A8</a>:</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  arg_pos= 8;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  arg_pos= 0;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  }</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *src= cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(arg_pos);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(src->getType()))</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  {</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(src);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(srcNode, dstNode);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  }</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dstNode);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  }</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aa0cecd43037de38c00ec6017b03bbb3f">ExtAPI::EFT_L_A0__A0R_A1</a>:</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  {</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  <span class="comment">// this is for memset(void *str, int c, size_t n)</span></div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  <span class="comment">// which copies the character c (an unsigned char) to the first n characters of the string pointed to, by the argument str</span></div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  std::vector<LocationSet> dstFields;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *dtype = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4cb5ac4a19002023683c4ee47aabb802">getBaseTypeAndFlattenedFields</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0), dstFields, cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(2));</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sz = dstFields.size();</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <span class="comment">//For each field (i), add store edge *(arg0 + i) = arg1</span></div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> index = 0; index < sz; index++)</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  {</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* dElementType = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">getFlatternedElemType</a>(dtype, dstFields[index].accumulateConstantFieldIdx());</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dField = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a74cff1c31f2fd1d23709b34ae988c29a">getGepValVar</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0), dstFields[index], dElementType);</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1)),dField);</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  }</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(inst->getType()))</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst));</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  }</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a54aa3d7051aab7d65ee1154538bfbb48">ExtAPI::EFT_L_A0__A0R_A1R</a>:</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  {</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ad0e9f1dd1cba235a699c2b710a888d06">addComplexConsForExt</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(2));</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  <span class="comment">//memcpy returns the dest.</span></div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst));</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  }</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ae7e7e0702f480304f4afefa96f6c5002">ExtAPI::EFT_A1R_A0R</a>:</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ad0e9f1dd1cba235a699c2b710a888d06">addComplexConsForExt</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(2));</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a80ea82d0181911894919c181eb1f4e35">ExtAPI::EFT_L_A1__FunPtr</a>:</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  {</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *src = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1);</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a255d310b1b573ca5c69fd715d7815d79">GetElementPtrInst</a>* gep = SVFUtil::dyn_cast<GetElementPtrInst>(src))</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  src = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86763e6a3606598580cd0172aecb5bc7">stripConstantCasts</a>(gep->getPointerOperand());</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* glob = SVFUtil::dyn_cast<GlobalVariable>(src))</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  {</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a7d8006ceeea7c796af22da70c5cb93a0">ConstantDataArray</a>* constarray = SVFUtil::dyn_cast<ConstantDataArray>(glob->getInitializer()))</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6f82e03d880257527bd9cb5978e05604">getProgFunction</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa67bbd366b93fb1ec7a540c83566c977">svfMod</a>,constarray->getAsCString().str()))</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  {</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(fun->getLLVMFun());</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(srcNode, <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst));</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  }</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  }</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  }</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  }</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a4ba81144ee1a70785fbf83ca5f0d4573">ExtAPI::EFT_A3R_A1R_NS</a>:</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="comment">//These func. are never used to copy structs, so the size is 1.</span></div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ad0e9f1dd1cba235a699c2b710a888d06">addComplexConsForExt</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(3), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1), <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a4c1361546aa103c26b11b0b89dc8d482">ExtAPI::EFT_A1R_A0</a>:</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  {</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1));</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0));</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="keywordflow">if</span>(vnD && vnS)</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS,vnD);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  }</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ab8814290c2362cd812a7783802eb209a">ExtAPI::EFT_A2R_A1</a>:</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  {</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(2));</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1));</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  <span class="keywordflow">if</span>(vnD && vnS)</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS,vnD);</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  }</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ac631e9cc3bb430a9c12d0c004d2ca97d">ExtAPI::EFT_A4R_A1</a>:</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  {</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(4));</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1));</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <span class="keywordflow">if</span>(vnD && vnS)</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS,vnD);</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  }</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aac3eaaf0865895ce144c035e429166be">ExtAPI::EFT_L_A0__A1_A0</a>:</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  {</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  <span class="keywordflow">if</span>(cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>()>=3)</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ad0e9f1dd1cba235a699c2b710a888d06">addComplexConsForExt</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(2));</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ad0e9f1dd1cba235a699c2b710a888d06">addComplexConsForExt</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1), <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  <span class="comment">//strcpy returns the dest.</span></div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst));</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  }</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ae8423cc29f4de0225e30de6982e6a3a4">ExtAPI::EFT_L_A0__A2R_A0</a>:</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  {</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(inst->getType()))</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  {</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <span class="comment">//Do the L_A0 part if the retval is used.</span></div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst);</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *src= cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0);</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(src->getType()))</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(src);</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  <span class="keywordflow">if</span>(vnS)</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(vnS,vnD);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  }</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(vnD);</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  }</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  <span class="comment">//Do the A2R_A0 part.</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(2));</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0));</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  <span class="keywordflow">if</span>(vnD && vnS)</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS,vnD);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  }</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a035cf8a39c192608ec0e91d48e479899">ExtAPI::EFT_A0R_NEW</a>:</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a4353ad2b443e7f7ce2151869eed9c097">ExtAPI::EFT_A1R_NEW</a>:</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a27b8dfa0742daa17c3e1a520d03dbd14">ExtAPI::EFT_A2R_NEW</a>:</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094afe69efc20e29f95e0e333d1a462576a2">ExtAPI::EFT_A4R_NEW</a>:</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a8b59b6966952577361826d09b95b76be">ExtAPI::EFT_A11R_NEW</a>:</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  {</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<span class="stringliteral">"Alloc via arg cases are not handled here."</span>);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  }</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ac57ade96d1d18b9f2d4d36bc6928c5c4">ExtAPI::EFT_ALLOC</a>:</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a8782293305260b1500a09b473439d3b0">ExtAPI::EFT_NOSTRUCT_ALLOC</a>:</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a94f514e925fdb422632840ca44343af0">ExtAPI::EFT_STAT</a>:</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a515c2184a7461fc1788a514432a7ec22">ExtAPI::EFT_STAT2</a>:</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(inst->getType()))</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<span class="stringliteral">"alloc type func. are not handled here"</span>);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  {</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  <span class="comment">// fdopen will return an integer in LLVM IR.</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">"alloc type func do not return pointer type"</span>);</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  }</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a87c4ba17ac3567a0673d6516995e06ef">ExtAPI::EFT_NOOP</a>:</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a9b98279d1926e4ebfb237a43536c7b73">ExtAPI::EFT_FREE</a>:</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a66bcd64afcfaf09c49d2f445cd112f1d">ExtAPI::EFT_FREE_MULTILEVEL</a>:</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  {</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  <span class="comment">// For any argument with 2-level pointer passing too a free function e.g., XFree(void** p),</span></div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  <span class="comment">// we will need to add a load edge (dummy = *p) and a store edge (*dummy = nullptr).</span></div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>(); i++)</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  {</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *arg = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(i);</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pty = SVFUtil::dyn_cast<PointerType>(arg->getType()))</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  {</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  <span class="keywordflow">if</span>(pty->getElementType()->isPointerTy())</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  {</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dummy = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>();</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">addLoadEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(arg),dummy);</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>(),dummy);</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  }</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  }</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  }</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  }</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094afedd2f66497ed9404b8b3cb1d16a3f0b">ExtAPI::EFT_STD_RB_TREE_INSERT_AND_REBALANCE</a>:</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  {</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>() == 4 && <span class="stringliteral">"_Rb_tree_insert_and_rebalance should have 4 arguments.\n"</span>);</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span> </div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vArg1 = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vArg3 = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(3);</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> </div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  <span class="comment">// We have vArg3 points to the entry of _Rb_tree_node_base { color; parent; left; right; }.</span></div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  <span class="comment">// Now we calculate the offset from base to vArg3</span></div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnArg3 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vArg3);</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> offset = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acdb0cc97c0a0df00a6bf73cdb5cab5ba">getLocationSetFromBaseNode</a>(vnArg3).<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span> </div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  <span class="comment">// We get all flattened fields of base</span></div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  vector<LocationSet> fields;</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4cb5ac4a19002023683c4ee47aabb802">getBaseTypeAndFlattenedFields</a>(vArg3, fields, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span> </div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  <span class="comment">// We summarize the side effects: arg3->parent = arg1, arg3->left = arg1, arg3->right = arg1</span></div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  <span class="comment">// Note that arg0 is aligned with "offset".</span></div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> i = offset + 1; i <= offset + 3; ++i)</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  {</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  <span class="keywordflow">if</span>((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)i >= fields.size())</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elementType = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">getFlatternedElemType</a>(type, fields[i].accumulateConstantFieldIdx());</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a74cff1c31f2fd1d23709b34ae988c29a">getGepValVar</a>(vArg3, fields[i], elementType);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(vArg1);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  <span class="keywordflow">if</span>(vnD && vnS)</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS,vnD);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  }</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>  }</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a31d0b620d3344c68ecfd71c9faf1d598">ExtAPI::EFT_STD_RB_TREE_INCREMENT</a>:</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  {</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>() == 1 && <span class="stringliteral">"_Rb_tree_decrement should have one argument.\n"</span>);</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(inst);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vArg = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0);</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnArg = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vArg);</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> offset = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acdb0cc97c0a0df00a6bf73cdb5cab5ba">getLocationSetFromBaseNode</a>(vnArg).<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> </div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  <span class="comment">// We get all fields</span></div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  vector<LocationSet> fields;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4cb5ac4a19002023683c4ee47aabb802">getBaseTypeAndFlattenedFields</a>(vArg,fields,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span> </div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  <span class="comment">// We summarize the side effects: ret = arg->parent, ret = arg->left, ret = arg->right</span></div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  <span class="comment">// Note that arg0 is aligned with "offset".</span></div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> i = offset + 1; i <= offset + 3; ++i)</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  {</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  <span class="keywordflow">if</span>((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)i >= fields.size())</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elementType = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">getFlatternedElemType</a>(type, fields[i].accumulateConstantFieldIdx());</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a74cff1c31f2fd1d23709b34ae988c29a">getGepValVar</a>(vArg, fields[i], elementType);</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  <span class="keywordflow">if</span>(vnD && vnS)</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS,vnD);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  }</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>  }</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aed5f4c75cc5016c61f441abf06a2bf21">ExtAPI::EFT_STD_LIST_HOOK</a>:</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  {</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vSrc = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0);</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vDst = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1);</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vSrc);</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vDst);</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, dst);</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  }</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ae3e90095a170aa15d9b6c305469e32af">ExtAPI::CPP_EFT_A0R_A1</a>:</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  {</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a>* symTable = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>();</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  <span class="keywordflow">if</span> (symTable-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</a>())</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  {</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0));</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1));</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS, vnD);</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  }</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  }</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a7f75d2265448acf50cd59151a1241054">ExtAPI::CPP_EFT_A0R_A1R</a>:</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  {</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a>* symTable = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>();</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  <span class="keywordflow">if</span> (symTable-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</a>())</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>  {</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0));</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1));</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(vnD && vnS && <span class="stringliteral">"dst or src not exist?"</span>);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dummy = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>();</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">addLoadEdge</a>(vnS,dummy);</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(dummy,vnD);</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>  }</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  }</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a3eb7d75552ce138f55c840b6635d32ed">ExtAPI::CPP_EFT_A1R</a>:</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>  {</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a>* symTable = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>();</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>  <span class="keywordflow">if</span> (symTable-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</a>())</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>  {</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1));</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(vnS && <span class="stringliteral">"src not exist?"</span>);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dummy = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>();</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">addLoadEdge</a>(vnS,dummy);</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  }</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  }</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a6c9b3a6987d311c61156dab96e5ad3b9">ExtAPI::CPP_EFT_DYNAMIC_CAST</a>:</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>  {</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vArg0 = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0);</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *retVal = cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>();</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(vArg0);</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(src && <span class="stringliteral">"src not exist?"</span>);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(retVal);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(dst && <span class="stringliteral">"dst not exist?"</span>);</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src, dst);</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  }</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a9d9ec33eb5ecf285ccf2aa575bcba31a">ExtAPI::EFT_CXA_BEGIN_CATCH</a>:</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  {</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>  }</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  <span class="comment">//default:</span></div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ac8af5ecc06abccdbcba873e2be3f11f9">ExtAPI::EFT_OTHER</a>:</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  {</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(inst->getType()))</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>  {</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  std::string str;</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>  rawstr << <span class="stringliteral">"function "</span> << callee-><a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() << <span class="stringliteral">" not in the external function summary list"</span>;</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(rawstr.str());</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  <span class="comment">//assert("unknown ext.func type");</span></div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>  }</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  }</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>  }</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>  }</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> </div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c2abeb363081381c3dc939ab511e3f0">isThreadForkCall</a>(inst))</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  {</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* forkedFun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">getLLVMFunction</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ac840e43fa58a90099de99a1953f091ac">getForkedFun</a>(inst)) )</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>  {</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  forkedFun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(forkedFun)-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* actualParm = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aaeeb386d80b51d729322317065606454">getActualParmAtForkSite</a>(inst);</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((forkedFun->arg_size() <= 2) && <span class="stringliteral">"Size of formal parameter of start routine should be one"</span>);</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>  <span class="keywordflow">if</span>(forkedFun->arg_size() <= 2 && forkedFun->arg_size() >= 1)</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  {</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* formalParm = &(*forkedFun->arg_begin());</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(actualParm->getType()) && SVFUtil::isa<PointerType>(formalParm->getType()) )</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>  {</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(inst);</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a> = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFFunction(forkedFun));</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a54636413fd3ed7e634ac7428139966a4">addThreadForkEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(actualParm), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(formalParm),icfgNode, <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>);</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>  }</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>  }</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>  }</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  {</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  }</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>  }</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span> </div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a28fbb7cc51eb7e25d88f43e3eb1f30fb">isHareParForCall</a>(inst))</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  {</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* taskFunc = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">getLLVMFunction</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab048cbce6e4f5a3d6ff90da3565220ff">getTaskFuncAtHareParForSite</a>(inst)) )</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>  {</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((taskFunc->arg_size() == 3) && <span class="stringliteral">"Size of formal parameter of hare_parallel_for's task routine should be 3"</span>);</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* actualParm = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad3471260b66bdd7e6b790ad2a94fe7ce">getTaskDataAtHareParForSite</a>(inst);</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* formalParm = &(*taskFunc->arg_begin());</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(actualParm->getType()) && SVFUtil::isa<PointerType>(formalParm->getType()) )</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>  {</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(inst);</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFFunction(taskFunc));</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a54636413fd3ed7e634ac7428139966a4">addThreadForkEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(actualParm), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(formalParm),icfgNode, <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>);</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>  }</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>  }</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  {</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>  }</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>  }</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> </div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>  }</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span> }</div><div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a6363df51947cab85ec4ae04b4e056f96"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a6363df51947cab85ec4ae04b4e056f96">SVF::ExtAPI::EFT_L_A0</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00060">ExtAPI.h:60</a></div></div>
|
|
2198
|
+
<div class="fragment"><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> {</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>();</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a61ed4bb80d88b0f8dbc02535c224fdfb">isHeapAllocOrStaticExtCall</a>(cs))</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  {</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <span class="comment">// case 1: ret = new obj</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">isHeapAllocExtCallViaRet</a>(cs) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">isStaticExtCall</a>(cs))</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  {</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> val = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst);</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(inst);</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(obj, val);</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  }</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="comment">// case 2: *arg = new obj</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  {</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">isHeapAllocExtCallViaArg</a>(cs) && <span class="stringliteral">"Must be heap alloc call via arg."</span>);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="keywordtype">int</span> arg_pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">getHeapAllocHoldingArgPosition</a>(callee);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *arg = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(arg_pos);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <span class="keywordflow">if</span> (arg->getType()->isPointerTy())</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  {</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnArg = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(arg);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dummy = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>();</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a905b16c9fe739c4e95902b2729951b5b">addDummyObjNode</a>(arg->getType());</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <span class="keywordflow">if</span> (vnArg && dummy && obj)</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  {</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(obj, dummy);</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(dummy, vnArg);</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  }</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  }</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  {</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">"Arg receiving new object must be pointer type"</span>);</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  }</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  }</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  }</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee))</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  {</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094">ExtAPI::extf_t</a> tF= <a class="code" href="namespaceSVF_1_1SVFUtil.html#ac3e7507fb376b1625bc1573132ab9f06">extCallTy</a>(callee);</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="keywordflow">switch</span>(tF)</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  {</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a1f23e7b8cdd103943f515e807bf36b1c">ExtAPI::EFT_REALLOC</a>:</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  {</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="keywordflow">if</span>(!SVFUtil::isa<PointerType>(inst->getType()))</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  <span class="comment">// e.g. void *realloc(void *ptr, size_t size)</span></div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="comment">// if ptr is null then we will treat it as a malloc</span></div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <span class="comment">// if ptr is not null, then we assume a new data memory will be attached to</span></div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="comment">// the tail of old allocated memory block.</span></div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ConstantPointerNull>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0)))</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> val = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst);</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(inst);</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(obj, val);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  }</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  }</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a6363df51947cab85ec4ae04b4e056f96">ExtAPI::EFT_L_A0</a>:</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  {</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst);</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *src= cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0);</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(src);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(srcNode, dstNode);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  }</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> </div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aec63c85b24133af679d60dda42ab44ab">ExtAPI::EFT_L_A1</a>:</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ac078d0307bec384b6df3da561045ff7d">ExtAPI::EFT_L_A2</a>:</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a1e119ad93f66dbbf8014917febad843c">ExtAPI::EFT_L_A8</a>:</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  {</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  <span class="keywordflow">if</span>(!SVFUtil::isa<PointerType>(inst->getType()))</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> arg_pos;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <span class="keywordflow">switch</span>(tF)</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  {</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aec63c85b24133af679d60dda42ab44ab">ExtAPI::EFT_L_A1</a>:</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  arg_pos= 1;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ac078d0307bec384b6df3da561045ff7d">ExtAPI::EFT_L_A2</a>:</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  arg_pos= 2;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a1e119ad93f66dbbf8014917febad843c">ExtAPI::EFT_L_A8</a>:</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  arg_pos= 8;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  arg_pos= 0;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  }</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *src= cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(arg_pos);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(src->getType()))</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  {</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(src);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(srcNode, dstNode);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  }</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dstNode);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  }</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aa0cecd43037de38c00ec6017b03bbb3f">ExtAPI::EFT_L_A0__A0R_A1</a>:</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  {</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  <span class="comment">// this is for memset(void *str, int c, size_t n)</span></div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  <span class="comment">// which copies the character c (an unsigned char) to the first n characters of the string pointed to, by the argument str</span></div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  std::vector<LocationSet> dstFields;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *dtype = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4cb5ac4a19002023683c4ee47aabb802">getBaseTypeAndFlattenedFields</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0), dstFields, cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(2));</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sz = dstFields.size();</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <span class="comment">//For each field (i), add store edge *(arg0 + i) = arg1</span></div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> index = 0; index < sz; index++)</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  {</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* dElementType = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">getFlatternedElemType</a>(dtype, dstFields[index].accumulateConstantFieldIdx());</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dField = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a74cff1c31f2fd1d23709b34ae988c29a">getGepValVar</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0), dstFields[index], dElementType);</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1)),dField);</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  }</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(inst->getType()))</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst));</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  }</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a54aa3d7051aab7d65ee1154538bfbb48">ExtAPI::EFT_L_A0__A0R_A1R</a>:</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  {</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ad0e9f1dd1cba235a699c2b710a888d06">addComplexConsForExt</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(2));</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  <span class="comment">//memcpy returns the dest.</span></div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst));</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  }</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ae7e7e0702f480304f4afefa96f6c5002">ExtAPI::EFT_A1R_A0R</a>:</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ad0e9f1dd1cba235a699c2b710a888d06">addComplexConsForExt</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(2));</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a80ea82d0181911894919c181eb1f4e35">ExtAPI::EFT_L_A1__FunPtr</a>:</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  {</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *src = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1);</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a255d310b1b573ca5c69fd715d7815d79">GetElementPtrInst</a>* gep = SVFUtil::dyn_cast<GetElementPtrInst>(src))</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  src = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86763e6a3606598580cd0172aecb5bc7">stripConstantCasts</a>(gep->getPointerOperand());</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* glob = SVFUtil::dyn_cast<GlobalVariable>(src))</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  {</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a7d8006ceeea7c796af22da70c5cb93a0">ConstantDataArray</a>* constarray = SVFUtil::dyn_cast<ConstantDataArray>(glob->getInitializer()))</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6f82e03d880257527bd9cb5978e05604">getProgFunction</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa67bbd366b93fb1ec7a540c83566c977">svfMod</a>,constarray->getAsCString().str()))</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  {</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(fun->getLLVMFun());</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(srcNode, <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst));</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  }</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  }</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  }</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  }</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a4ba81144ee1a70785fbf83ca5f0d4573">ExtAPI::EFT_A3R_A1R_NS</a>:</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="comment">//These func. are never used to copy structs, so the size is 1.</span></div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ad0e9f1dd1cba235a699c2b710a888d06">addComplexConsForExt</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(3), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1), <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a4c1361546aa103c26b11b0b89dc8d482">ExtAPI::EFT_A1R_A0</a>:</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  {</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1));</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0));</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="keywordflow">if</span>(vnD && vnS)</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS,vnD);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  }</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ab8814290c2362cd812a7783802eb209a">ExtAPI::EFT_A2R_A1</a>:</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  {</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(2));</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1));</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  <span class="keywordflow">if</span>(vnD && vnS)</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS,vnD);</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  }</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ac631e9cc3bb430a9c12d0c004d2ca97d">ExtAPI::EFT_A4R_A1</a>:</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  {</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(4));</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1));</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <span class="keywordflow">if</span>(vnD && vnS)</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS,vnD);</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  }</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aac3eaaf0865895ce144c035e429166be">ExtAPI::EFT_L_A0__A1_A0</a>:</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  {</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  <span class="keywordflow">if</span>(cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>()>=3)</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ad0e9f1dd1cba235a699c2b710a888d06">addComplexConsForExt</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(2));</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ad0e9f1dd1cba235a699c2b710a888d06">addComplexConsForExt</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0), cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1), <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  <span class="comment">//strcpy returns the dest.</span></div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst));</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  }</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ae8423cc29f4de0225e30de6982e6a3a4">ExtAPI::EFT_L_A0__A2R_A0</a>:</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  {</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(inst->getType()))</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  {</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <span class="comment">//Do the L_A0 part if the retval is used.</span></div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst);</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *src= cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0);</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(src->getType()))</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(src);</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  <span class="keywordflow">if</span>(vnS)</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(vnS,vnD);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  }</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(vnD);</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  }</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  <span class="comment">//Do the A2R_A0 part.</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(2));</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS= <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0));</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  <span class="keywordflow">if</span>(vnD && vnS)</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS,vnD);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  }</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a035cf8a39c192608ec0e91d48e479899">ExtAPI::EFT_A0R_NEW</a>:</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a4353ad2b443e7f7ce2151869eed9c097">ExtAPI::EFT_A1R_NEW</a>:</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a27b8dfa0742daa17c3e1a520d03dbd14">ExtAPI::EFT_A2R_NEW</a>:</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094afe69efc20e29f95e0e333d1a462576a2">ExtAPI::EFT_A4R_NEW</a>:</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a8b59b6966952577361826d09b95b76be">ExtAPI::EFT_A11R_NEW</a>:</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  {</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<span class="stringliteral">"Alloc via arg cases are not handled here."</span>);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  }</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ac57ade96d1d18b9f2d4d36bc6928c5c4">ExtAPI::EFT_ALLOC</a>:</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a8782293305260b1500a09b473439d3b0">ExtAPI::EFT_NOSTRUCT_ALLOC</a>:</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a94f514e925fdb422632840ca44343af0">ExtAPI::EFT_STAT</a>:</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a515c2184a7461fc1788a514432a7ec22">ExtAPI::EFT_STAT2</a>:</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(inst->getType()))</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<span class="stringliteral">"alloc type func. are not handled here"</span>);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  {</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  <span class="comment">// fdopen will return an integer in LLVM IR.</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">"alloc type func do not return pointer type"</span>);</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  }</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a87c4ba17ac3567a0673d6516995e06ef">ExtAPI::EFT_NOOP</a>:</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a9b98279d1926e4ebfb237a43536c7b73">ExtAPI::EFT_FREE</a>:</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a66bcd64afcfaf09c49d2f445cd112f1d">ExtAPI::EFT_FREE_MULTILEVEL</a>:</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  {</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  <span class="comment">// For any argument with 2-level pointer passing too a free function e.g., XFree(void** p),</span></div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  <span class="comment">// we will need to add a load edge (dummy = *p) and a store edge (*dummy = nullptr).</span></div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>(); i++)</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  {</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *arg = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(i);</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pty = SVFUtil::dyn_cast<PointerType>(arg->getType()))</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  {</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">getPtrElementType</a>(pty)->isPointerTy())</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  {</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dummy = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>();</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">addLoadEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(arg),dummy);</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>(),dummy);</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  }</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  }</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  }</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  }</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094afedd2f66497ed9404b8b3cb1d16a3f0b">ExtAPI::EFT_STD_RB_TREE_INSERT_AND_REBALANCE</a>:</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  {</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>() == 4 && <span class="stringliteral">"_Rb_tree_insert_and_rebalance should have 4 arguments.\n"</span>);</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span> </div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vArg1 = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vArg3 = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(3);</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> </div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  <span class="comment">// We have vArg3 points to the entry of _Rb_tree_node_base { color; parent; left; right; }.</span></div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  <span class="comment">// Now we calculate the offset from base to vArg3</span></div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnArg3 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vArg3);</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> offset = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acdb0cc97c0a0df00a6bf73cdb5cab5ba">getLocationSetFromBaseNode</a>(vnArg3).<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span> </div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  <span class="comment">// We get all flattened fields of base</span></div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  vector<LocationSet> fields;</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4cb5ac4a19002023683c4ee47aabb802">getBaseTypeAndFlattenedFields</a>(vArg3, fields, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span> </div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  <span class="comment">// We summarize the side effects: arg3->parent = arg1, arg3->left = arg1, arg3->right = arg1</span></div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  <span class="comment">// Note that arg0 is aligned with "offset".</span></div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> i = offset + 1; i <= offset + 3; ++i)</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  {</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  <span class="keywordflow">if</span>((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)i >= fields.size())</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elementType = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">getFlatternedElemType</a>(type, fields[i].accumulateConstantFieldIdx());</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a74cff1c31f2fd1d23709b34ae988c29a">getGepValVar</a>(vArg3, fields[i], elementType);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(vArg1);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  <span class="keywordflow">if</span>(vnD && vnS)</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS,vnD);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  }</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>  }</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a31d0b620d3344c68ecfd71c9faf1d598">ExtAPI::EFT_STD_RB_TREE_INCREMENT</a>:</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  {</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>() == 1 && <span class="stringliteral">"_Rb_tree_decrement should have one argument.\n"</span>);</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(inst);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vArg = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0);</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnArg = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vArg);</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> offset = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acdb0cc97c0a0df00a6bf73cdb5cab5ba">getLocationSetFromBaseNode</a>(vnArg).<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> </div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  <span class="comment">// We get all fields</span></div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  vector<LocationSet> fields;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4cb5ac4a19002023683c4ee47aabb802">getBaseTypeAndFlattenedFields</a>(vArg,fields,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span> </div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  <span class="comment">// We summarize the side effects: ret = arg->parent, ret = arg->left, ret = arg->right</span></div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  <span class="comment">// Note that arg0 is aligned with "offset".</span></div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> i = offset + 1; i <= offset + 3; ++i)</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  {</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  <span class="keywordflow">if</span>((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)i >= fields.size())</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elementType = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">getFlatternedElemType</a>(type, fields[i].accumulateConstantFieldIdx());</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a74cff1c31f2fd1d23709b34ae988c29a">getGepValVar</a>(vArg, fields[i], elementType);</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  <span class="keywordflow">if</span>(vnD && vnS)</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS,vnD);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  }</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>  }</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aed5f4c75cc5016c61f441abf06a2bf21">ExtAPI::EFT_STD_LIST_HOOK</a>:</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  {</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vSrc = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0);</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vDst = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1);</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vSrc);</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vDst);</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, dst);</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  }</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ae3e90095a170aa15d9b6c305469e32af">ExtAPI::CPP_EFT_A0R_A1</a>:</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  {</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a>* symTable = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>();</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  <span class="keywordflow">if</span> (symTable-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</a>())</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  {</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0));</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1));</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(vnS, vnD);</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  }</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  }</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a7f75d2265448acf50cd59151a1241054">ExtAPI::CPP_EFT_A0R_A1R</a>:</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  {</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a>* symTable = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>();</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  <span class="keywordflow">if</span> (symTable-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</a>())</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>  {</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0));</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1));</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(vnD && vnS && <span class="stringliteral">"dst or src not exist?"</span>);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dummy = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>();</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">addLoadEdge</a>(vnS,dummy);</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(dummy,vnD);</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>  }</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  }</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a3eb7d75552ce138f55c840b6635d32ed">ExtAPI::CPP_EFT_A1R</a>:</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>  {</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a>* symTable = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>();</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>  <span class="keywordflow">if</span> (symTable-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</a>())</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>  {</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(1));</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(vnS && <span class="stringliteral">"src not exist?"</span>);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dummy = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>();</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">addLoadEdge</a>(vnS,dummy);</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  }</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  }</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a6c9b3a6987d311c61156dab96e5ad3b9">ExtAPI::CPP_EFT_DYNAMIC_CAST</a>:</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>  {</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vArg0 = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(0);</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *retVal = cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>();</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(vArg0);</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(src && <span class="stringliteral">"src not exist?"</span>);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(retVal);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(dst && <span class="stringliteral">"dst not exist?"</span>);</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src, dst);</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  }</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a9d9ec33eb5ecf285ccf2aa575bcba31a">ExtAPI::EFT_CXA_BEGIN_CATCH</a>:</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  {</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>  }</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  <span class="comment">//default:</span></div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ac8af5ecc06abccdbcba873e2be3f11f9">ExtAPI::EFT_OTHER</a>:</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  {</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(inst->getType()))</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>  {</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  std::string str;</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>  rawstr << <span class="stringliteral">"function "</span> << callee-><a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() << <span class="stringliteral">" not in the external function summary list"</span>;</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(rawstr.str());</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  <span class="comment">//assert("unknown ext.func type");</span></div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>  }</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  }</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>  }</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>  }</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> </div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c2abeb363081381c3dc939ab511e3f0">isThreadForkCall</a>(inst))</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  {</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* forkedFun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">getLLVMFunction</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ac840e43fa58a90099de99a1953f091ac">getForkedFun</a>(inst)) )</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>  {</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  forkedFun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(forkedFun)-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* actualParm = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aaeeb386d80b51d729322317065606454">getActualParmAtForkSite</a>(inst);</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((forkedFun->arg_size() <= 2) && <span class="stringliteral">"Size of formal parameter of start routine should be one"</span>);</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>  <span class="keywordflow">if</span>(forkedFun->arg_size() <= 2 && forkedFun->arg_size() >= 1)</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  {</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* formalParm = &(*forkedFun->arg_begin());</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(actualParm->getType()) && SVFUtil::isa<PointerType>(formalParm->getType()) )</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>  {</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(inst);</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a> = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFFunction(forkedFun));</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a54636413fd3ed7e634ac7428139966a4">addThreadForkEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(actualParm), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(formalParm),icfgNode, <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>);</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>  }</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>  }</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>  }</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  {</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  }</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>  }</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span> </div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a28fbb7cc51eb7e25d88f43e3eb1f30fb">isHareParForCall</a>(inst))</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  {</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* taskFunc = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">getLLVMFunction</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab048cbce6e4f5a3d6ff90da3565220ff">getTaskFuncAtHareParForSite</a>(inst)) )</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>  {</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((taskFunc->arg_size() == 3) && <span class="stringliteral">"Size of formal parameter of hare_parallel_for's task routine should be 3"</span>);</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* actualParm = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad3471260b66bdd7e6b790ad2a94fe7ce">getTaskDataAtHareParForSite</a>(inst);</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* formalParm = &(*taskFunc->arg_begin());</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>  <span class="keywordflow">if</span>(SVFUtil::isa<PointerType>(actualParm->getType()) && SVFUtil::isa<PointerType>(formalParm->getType()) )</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>  {</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(inst);</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFFunction(taskFunc));</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a54636413fd3ed7e634ac7428139966a4">addThreadForkEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(actualParm), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(formalParm),icfgNode, <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>);</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>  }</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>  }</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  {</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>  }</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>  }</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> </div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>  }</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span> }</div><div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a6363df51947cab85ec4ae04b4e056f96"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a6363df51947cab85ec4ae04b4e056f96">SVF::ExtAPI::EFT_L_A0</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00060">ExtAPI.h:60</a></div></div>
|
|
2197
2199
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a7d8006ceeea7c796af22da70c5cb93a0"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a7d8006ceeea7c796af22da70c5cb93a0">ConstantDataArray</a></div><div class="ttdeci">llvm::ConstantDataArray ConstantDataArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00058">BasicTypes.h:58</a></div></div>
|
|
2198
2200
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094afedd2f66497ed9404b8b3cb1d16a3f0b"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094afedd2f66497ed9404b8b3cb1d16a3f0b">SVF::ExtAPI::EFT_STD_RB_TREE_INSERT_AND_REBALANCE</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00082">ExtAPI.h:82</a></div></div>
|
|
2199
2201
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ad98299033577f1e7f4e9bc73dff3b253"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">SVF::SVFUtil::getLLVMFunction</a></div><div class="ttdeci">const Function * getLLVMFunction(const Value *val)</div><div class="ttdoc">Return LLVM function if this value is. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00055">LLVMUtil.h:55</a></div></div>
|
|
@@ -2205,15 +2207,15 @@ Private Attributes</h2></td></tr>
|
|
|
2205
2207
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00086">SVFIRBuilder.h:86</a></div></div>
|
|
2206
2208
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
2207
2209
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a66bcd64afcfaf09c49d2f445cd112f1d"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a66bcd64afcfaf09c49d2f445cd112f1d">SVF::ExtAPI::EFT_FREE_MULTILEVEL</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00056">ExtAPI.h:56</a></div></div>
|
|
2208
|
-
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2210
|
+
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
2209
2211
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4469ae4c52c162d3fbbd559420045243"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">SVF::SVFIRBuilder::addLoadEdge</a></div><div class="ttdeci">void addLoadEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00352">SVFIRBuilder.h:352</a></div></div>
|
|
2210
2212
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a142e650415cb81011eb59dadd3cb0637"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">SVF::SVFUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const SVFFunction * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00269">SVFUtil.h:269</a></div></div>
|
|
2211
|
-
<div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2213
|
+
<div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
|
|
2212
2214
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2213
|
-
<div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2214
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2215
|
+
<div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
|
|
2216
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
|
|
2215
2217
|
<div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
2216
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2218
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00211">BasicTypes.h:211</a></div></div>
|
|
2217
2219
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094aed5f4c75cc5016c61f441abf06a2bf21"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aed5f4c75cc5016c61f441abf06a2bf21">SVF::ExtAPI::EFT_STD_LIST_HOOK</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00084">ExtAPI.h:84</a></div></div>
|
|
2218
2220
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a8bf1847f31ff90937ce76cd0c0af7edb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">SVF::SVFIRBuilder::addBlackHoleAddrEdge</a></div><div class="ttdeci">void addBlackHoleAddrEdge(NodeID node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00288">SVFIRBuilder.h:288</a></div></div>
|
|
2219
2221
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a7f75d2265448acf50cd59151a1241054"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a7f75d2265448acf50cd59151a1241054">SVF::ExtAPI::CPP_EFT_A0R_A1R</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00087">ExtAPI.h:87</a></div></div>
|
|
@@ -2226,44 +2228,45 @@ Private Attributes</h2></td></tr>
|
|
|
2226
2228
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a94f514e925fdb422632840ca44343af0"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a94f514e925fdb422632840ca44343af0">SVF::ExtAPI::EFT_STAT</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00058">ExtAPI.h:58</a></div></div>
|
|
2227
2229
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a8782293305260b1500a09b473439d3b0"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a8782293305260b1500a09b473439d3b0">SVF::ExtAPI::EFT_NOSTRUCT_ALLOC</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00057">ExtAPI.h:57</a></div></div>
|
|
2228
2230
|
<div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00124">IRGraph.h:124</a></div></div>
|
|
2229
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a61ed4bb80d88b0f8dbc02535c224fdfb"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a61ed4bb80d88b0f8dbc02535c224fdfb">SVF::SVFUtil::isHeapAllocOrStaticExtCall</a></div><div class="ttdeci">bool isHeapAllocOrStaticExtCall(const CallSite cs)</div><div class="ttdoc">Return true if the call is a static global call. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2231
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a61ed4bb80d88b0f8dbc02535c224fdfb"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a61ed4bb80d88b0f8dbc02535c224fdfb">SVF::SVFUtil::isHeapAllocOrStaticExtCall</a></div><div class="ttdeci">bool isHeapAllocOrStaticExtCall(const CallSite cs)</div><div class="ttdoc">Return true if the call is a static global call. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00233">LLVMUtil.h:233</a></div></div>
|
|
2230
2232
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a87c4ba17ac3567a0673d6516995e06ef"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a87c4ba17ac3567a0673d6516995e06ef">SVF::ExtAPI::EFT_NOOP</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00052">ExtAPI.h:52</a></div></div>
|
|
2231
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28fbb7cc51eb7e25d88f43e3eb1f30fb"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28fbb7cc51eb7e25d88f43e3eb1f30fb">SVF::SVFUtil::isHareParForCall</a></div><div class="ttdeci">bool isHareParForCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2233
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28fbb7cc51eb7e25d88f43e3eb1f30fb"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28fbb7cc51eb7e25d88f43e3eb1f30fb">SVF::SVFUtil::isHareParForCall</a></div><div class="ttdeci">bool isHareParForCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00295">LLVMUtil.h:295</a></div></div>
|
|
2232
2234
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094ae3e90095a170aa15d9b6c305469e32af"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ae3e90095a170aa15d9b6c305469e32af">SVF::ExtAPI::CPP_EFT_A0R_A1</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00086">ExtAPI.h:86</a></div></div>
|
|
2233
2235
|
<div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00223">ICFG.cpp:223</a></div></div>
|
|
2234
2236
|
<div class="ttc" id="classSVF_1_1FunEntryICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html">SVF::FunEntryICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00251">ICFGNode.h:251</a></div></div>
|
|
2235
2237
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a54636413fd3ed7e634ac7428139966a4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a54636413fd3ed7e634ac7428139966a4">SVF::SVFIRBuilder::addThreadForkEdge</a></div><div class="ttdeci">void addThreadForkEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Thread fork edge for parameter passing. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00399">SVFIRBuilder.h:399</a></div></div>
|
|
2236
2238
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a86763e6a3606598580cd0172aecb5bc7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a86763e6a3606598580cd0172aecb5bc7">SVF::SVFUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00177">LLVMUtil.cpp:177</a></div></div>
|
|
2237
2239
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a27b8dfa0742daa17c3e1a520d03dbd14"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a27b8dfa0742daa17c3e1a520d03dbd14">SVF::ExtAPI::EFT_A2R_NEW</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00079">ExtAPI.h:79</a></div></div>
|
|
2238
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_a26a594d36bbb5b77e7085502812d9ca2"><div class="ttname"><a href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">SVF::CallSite::getArgument</a></div><div class="ttdeci">Value * getArgument(unsigned ArgNo) const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2239
|
-
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2240
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_a26a594d36bbb5b77e7085502812d9ca2"><div class="ttname"><a href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">SVF::CallSite::getArgument</a></div><div class="ttdeci">Value * getArgument(unsigned ArgNo) const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00216">BasicTypes.h:216</a></div></div>
|
|
2241
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
2240
2242
|
<div class="ttc" id="classSVF_1_1IRGraph_html_a3de9a2a565c303f68a90c32dc59febd5"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">SVF::IRGraph::getNullPtr</a></div><div class="ttdeci">NodeID getNullPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00160">IRGraph.h:160</a></div></div>
|
|
2241
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2242
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab048cbce6e4f5a3d6ff90da3565220ff"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab048cbce6e4f5a3d6ff90da3565220ff">SVF::SVFUtil::getTaskFuncAtHareParForSite</a></div><div class="ttdeci">const Value * getTaskFuncAtHareParForSite(const CallSite cs)</div><div class="ttdoc">Return the task function of the parallel_for routine. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2243
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
2244
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab048cbce6e4f5a3d6ff90da3565220ff"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab048cbce6e4f5a3d6ff90da3565220ff">SVF::SVFUtil::getTaskFuncAtHareParForSite</a></div><div class="ttdeci">const Value * getTaskFuncAtHareParForSite(const CallSite cs)</div><div class="ttdoc">Return the task function of the parallel_for routine. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00391">LLVMUtil.h:391</a></div></div>
|
|
2243
2245
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a6c9b3a6987d311c61156dab96e5ad3b9"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a6c9b3a6987d311c61156dab96e5ad3b9">SVF::ExtAPI::CPP_EFT_DYNAMIC_CAST</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00090">ExtAPI.h:90</a></div></div>
|
|
2244
|
-
<div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2246
|
+
<div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
|
|
2245
2247
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a905b16c9fe739c4e95902b2729951b5b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a905b16c9fe739c4e95902b2729951b5b">SVF::SVFIR::addDummyObjNode</a></div><div class="ttdeci">NodeID addDummyObjNode(const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00432">SVFIR.h:432</a></div></div>
|
|
2246
2248
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094">SVF::ExtAPI::extf_t</a></div><div class="ttdeci">extf_t</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00050">ExtAPI.h:50</a></div></div>
|
|
2247
2249
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094aa0cecd43037de38c00ec6017b03bbb3f"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aa0cecd43037de38c00ec6017b03bbb3f">SVF::ExtAPI::EFT_L_A0__A0R_A1</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00064">ExtAPI.h:64</a></div></div>
|
|
2250
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8e7f56fa15cea924a09cd6903de2606c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">SVF::SVFUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00107">LLVMUtil.h:107</a></div></div>
|
|
2248
2251
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094ac078d0307bec384b6df3da561045ff7d"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ac078d0307bec384b6df3da561045ff7d">SVF::ExtAPI::EFT_L_A2</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00062">ExtAPI.h:62</a></div></div>
|
|
2249
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aedfa6e9216c6c788c26aef1967689b76"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2250
|
-
<div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdoc">LLVM Aliases and constants. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2251
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ac3e7507fb376b1625bc1573132ab9f06"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ac3e7507fb376b1625bc1573132ab9f06">SVF::SVFUtil::extCallTy</a></div><div class="ttdeci">ExtAPI::extf_t extCallTy(const SVFFunction *fun)</div><div class="ttdoc">Return external call type. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2252
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aedfa6e9216c6c788c26aef1967689b76"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00130">LLVMUtil.h:130</a></div></div>
|
|
2253
|
+
<div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdoc">LLVM Aliases and constants. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
|
|
2254
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ac3e7507fb376b1625bc1573132ab9f06"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ac3e7507fb376b1625bc1573132ab9f06">SVF::SVFUtil::extCallTy</a></div><div class="ttdeci">ExtAPI::extf_t extCallTy(const SVFFunction *fun)</div><div class="ttdoc">Return external call type. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00245">LLVMUtil.h:245</a></div></div>
|
|
2252
2255
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a3eb7d75552ce138f55c840b6635d32ed"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a3eb7d75552ce138f55c840b6635d32ed">SVF::ExtAPI::CPP_EFT_A1R</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00088">ExtAPI.h:88</a></div></div>
|
|
2253
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2256
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00118">LLVMUtil.h:118</a></div></div>
|
|
2254
2257
|
<div class="ttc" id="classSVF_1_1LocationSet_html_a63c5c8e03b35e0d0cea94137d309c853"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">SVF::LocationSet::accumulateConstantFieldIdx</a></div><div class="ttdeci">s32_t accumulateConstantFieldIdx() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00090">LocationSet.h:90</a></div></div>
|
|
2255
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aaeeb386d80b51d729322317065606454"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aaeeb386d80b51d729322317065606454">SVF::SVFUtil::getActualParmAtForkSite</a></div><div class="ttdeci">const Value * getActualParmAtForkSite(const CallSite cs)</div><div class="ttdoc">Return sole argument of the thread routine. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2258
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aaeeb386d80b51d729322317065606454"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aaeeb386d80b51d729322317065606454">SVF::SVFUtil::getActualParmAtForkSite</a></div><div class="ttdeci">const Value * getActualParmAtForkSite(const CallSite cs)</div><div class="ttdoc">Return sole argument of the thread routine. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00379">LLVMUtil.h:379</a></div></div>
|
|
2256
2259
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a1f23e7b8cdd103943f515e807bf36b1c"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a1f23e7b8cdd103943f515e807bf36b1c">SVF::ExtAPI::EFT_REALLOC</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00054">ExtAPI.h:54</a></div></div>
|
|
2257
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae62938f722543d6d7fc201b685be1abf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2260
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae62938f722543d6d7fc201b685be1abf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00218">LLVMUtil.h:218</a></div></div>
|
|
2258
2261
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00108">SymbolTableInfo.cpp:108</a></div></div>
|
|
2259
2262
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a9b98279d1926e4ebfb237a43536c7b73"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a9b98279d1926e4ebfb237a43536c7b73">SVF::ExtAPI::EFT_FREE</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00055">ExtAPI.h:55</a></div></div>
|
|
2260
2263
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094ae8423cc29f4de0225e30de6982e6a3a4"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ae8423cc29f4de0225e30de6982e6a3a4">SVF::ExtAPI::EFT_L_A0__A2R_A0</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00075">ExtAPI.h:75</a></div></div>
|
|
2261
2264
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a87ee08e81de307eb9c02889b6ed98dd5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">SVF::SymbolTableInfo::getFlatternedElemType</a></div><div class="ttdeci">const Type * getFlatternedElemType(const Type *baseType, u32_t flatten_idx)</div><div class="ttdoc">Return the type of a flattened element given a flattened index. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00435">SymbolTableInfo.cpp:435</a></div></div>
|
|
2262
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_a145676880fce313b4634d14118476c27"><div class="ttname"><a href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">SVF::CallSite::arg_size</a></div><div class="ttdeci">unsigned arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2263
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5c2abeb363081381c3dc939ab511e3f0"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5c2abeb363081381c3dc939ab511e3f0">SVF::SVFUtil::isThreadForkCall</a></div><div class="ttdeci">bool isThreadForkCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2265
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_a145676880fce313b4634d14118476c27"><div class="ttname"><a href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">SVF::CallSite::arg_size</a></div><div class="ttdeci">unsigned arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00232">BasicTypes.h:232</a></div></div>
|
|
2266
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5c2abeb363081381c3dc939ab511e3f0"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5c2abeb363081381c3dc939ab511e3f0">SVF::SVFUtil::isThreadForkCall</a></div><div class="ttdeci">bool isThreadForkCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00283">LLVMUtil.h:283</a></div></div>
|
|
2264
2267
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a4353ad2b443e7f7ce2151869eed9c097"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a4353ad2b443e7f7ce2151869eed9c097">SVF::ExtAPI::EFT_A1R_NEW</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00078">ExtAPI.h:78</a></div></div>
|
|
2265
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a73215bac62f1340a58f6c7f2ba9b0e7b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVF::SVFUtil::getHeapAllocHoldingArgPosition</a></div><div class="ttdeci">int getHeapAllocHoldingArgPosition(const SVFFunction *fun)</div><div class="ttdoc">Get the position of argument that holds an allocated heap object. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2266
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6f82e03d880257527bd9cb5978e05604"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6f82e03d880257527bd9cb5978e05604">SVF::SVFUtil::getProgFunction</a></div><div class="ttdeci">const SVFFunction * getProgFunction(SVFModule *svfModule, const std::string &funName)</div><div class="ttdoc">Get program entry function from module. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2268
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a73215bac62f1340a58f6c7f2ba9b0e7b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVF::SVFUtil::getHeapAllocHoldingArgPosition</a></div><div class="ttdeci">int getHeapAllocHoldingArgPosition(const SVFFunction *fun)</div><div class="ttdoc">Get the position of argument that holds an allocated heap object. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00153">LLVMUtil.h:153</a></div></div>
|
|
2269
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6f82e03d880257527bd9cb5978e05604"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6f82e03d880257527bd9cb5978e05604">SVF::SVFUtil::getProgFunction</a></div><div class="ttdeci">const SVFFunction * getProgFunction(SVFModule *svfModule, const std::string &funName)</div><div class="ttdoc">Get program entry function from module. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00453">LLVMUtil.h:453</a></div></div>
|
|
2267
2270
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a80ea82d0181911894919c181eb1f4e35"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a80ea82d0181911894919c181eb1f4e35">SVF::ExtAPI::EFT_L_A1__FunPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00066">ExtAPI.h:66</a></div></div>
|
|
2268
2271
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a31d0b620d3344c68ecfd71c9faf1d598"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a31d0b620d3344c68ecfd71c9faf1d598">SVF::ExtAPI::EFT_STD_RB_TREE_INCREMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00083">ExtAPI.h:83</a></div></div>
|
|
2269
2272
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acdb0cc97c0a0df00a6bf73cdb5cab5ba"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acdb0cc97c0a0df00a6bf73cdb5cab5ba">SVF::SVFIRBuilder::getLocationSetFromBaseNode</a></div><div class="ttdeci">LocationSet getLocationSetFromBaseNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01750">SVFIRBuilder.cpp:1750</a></div></div>
|
|
@@ -2276,8 +2279,8 @@ Private Attributes</h2></td></tr>
|
|
|
2276
2279
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094ab8814290c2362cd812a7783802eb209a"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ab8814290c2362cd812a7783802eb209a">SVF::ExtAPI::EFT_A2R_A1</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00073">ExtAPI.h:73</a></div></div>
|
|
2277
2280
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
2278
2281
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
|
|
2279
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2280
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ac840e43fa58a90099de99a1953f091ac"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ac840e43fa58a90099de99a1953f091ac">SVF::SVFUtil::getForkedFun</a></div><div class="ttdeci">const Value * getForkedFun(const CallSite cs)</div><div class="ttdoc">Return thread fork function. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2282
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
2283
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ac840e43fa58a90099de99a1953f091ac"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ac840e43fa58a90099de99a1953f091ac">SVF::SVFUtil::getForkedFun</a></div><div class="ttdeci">const Value * getForkedFun(const CallSite cs)</div><div class="ttdoc">Return thread fork function. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00367">LLVMUtil.h:367</a></div></div>
|
|
2281
2284
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a515c2184a7461fc1788a514432a7ec22"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a515c2184a7461fc1788a514432a7ec22">SVF::ExtAPI::EFT_STAT2</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00059">ExtAPI.h:59</a></div></div>
|
|
2282
2285
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a4c1361546aa103c26b11b0b89dc8d482"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a4c1361546aa103c26b11b0b89dc8d482">SVF::ExtAPI::EFT_A1R_A0</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00072">ExtAPI.h:72</a></div></div>
|
|
2283
2286
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094afe69efc20e29f95e0e333d1a462576a2"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094afe69efc20e29f95e0e333d1a462576a2">SVF::ExtAPI::EFT_A4R_NEW</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00080">ExtAPI.h:80</a></div></div>
|
|
@@ -2287,11 +2290,11 @@ Private Attributes</h2></td></tr>
|
|
|
2287
2290
|
<div class="ttc" id="cuddInt_8c_html_a936a27e51e66afb57c2b3a12d78a238e"><div class="ttname"><a href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a></div><div class="ttdeci">static int * entry</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l08422">cuddInt.c:8422</a></div></div>
|
|
2288
2291
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
|
|
2289
2292
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4cb5ac4a19002023683c4ee47aabb802"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4cb5ac4a19002023683c4ee47aabb802">SVF::SVFIRBuilder::getBaseTypeAndFlattenedFields</a></div><div class="ttdeci">const Type * getBaseTypeAndFlattenedFields(const Value *V, std::vector< LocationSet > &fields, const Value *sz)</div><div class="ttdoc">Get the base type and max offset. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01010">SVFIRBuilder.cpp:1010</a></div></div>
|
|
2290
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ad3471260b66bdd7e6b790ad2a94fe7ce"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ad3471260b66bdd7e6b790ad2a94fe7ce">SVF::SVFUtil::getTaskDataAtHareParForSite</a></div><div class="ttdeci">const Value * getTaskDataAtHareParForSite(const CallSite cs)</div><div class="ttdoc">Return the task data argument of the parallel_for rountine. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2293
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ad3471260b66bdd7e6b790ad2a94fe7ce"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ad3471260b66bdd7e6b790ad2a94fe7ce">SVF::SVFUtil::getTaskDataAtHareParForSite</a></div><div class="ttdeci">const Value * getTaskDataAtHareParForSite(const CallSite cs)</div><div class="ttdoc">Return the task data argument of the parallel_for rountine. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00403">LLVMUtil.h:403</a></div></div>
|
|
2291
2294
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5a93f3d13e2b3df126fbc42b1bd09006"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">SVF::SVFIRBuilder::getObjectNode</a></div><div class="ttdeci">NodeID getObjectNode(const Value *V)</div><div class="ttdoc">GetObject - Return the object node (stack/global/heap/function) according to a LLVM Value...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00096">SVFIRBuilder.h:96</a></div></div>
|
|
2292
2295
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
|
|
2293
2296
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a140defeb309d895394822f8780deda16"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">SVF::SVFIRBuilder::addCopyEdge</a></div><div class="ttdeci">CopyStmt * addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00305">SVFIRBuilder.h:305</a></div></div>
|
|
2294
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2297
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
2295
2298
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a035cf8a39c192608ec0e91d48e479899"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a035cf8a39c192608ec0e91d48e479899">SVF::ExtAPI::EFT_A0R_NEW</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00077">ExtAPI.h:77</a></div></div>
|
|
2296
2299
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094ac8af5ecc06abccdbcba873e2be3f11f9"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ac8af5ecc06abccdbcba873e2be3f11f9">SVF::ExtAPI::EFT_OTHER</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00091">ExtAPI.h:91</a></div></div>
|
|
2297
2300
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a9d9ec33eb5ecf285ccf2aa575bcba31a"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a9d9ec33eb5ecf285ccf2aa575bcba31a">SVF::ExtAPI::EFT_CXA_BEGIN_CATCH</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00089">ExtAPI.h:89</a></div></div>
|
|
@@ -2329,8 +2332,8 @@ Private Attributes</h2></td></tr>
|
|
|
2329
2332
|
<p>Indirect call is resolved on-the-fly during pointer analysis </p>
|
|
2330
2333
|
|
|
2331
2334
|
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01538">1538</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2332
|
-
<div class="fragment"><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span> {</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#af4a5fd9ecddb1447207335917adccd68">addIndirectCallsites</a>(cbn,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">getCalledValue</a>()));</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span> }</div><div class="ttc" id="classSVF_1_1CallSite_html_a9526f6c3829f8897d1ca617feda8451a"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">SVF::CallSite::getCalledValue</a></div><div class="ttdeci">Value * getCalledValue() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2333
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2335
|
+
<div class="fragment"><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span> {</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#af4a5fd9ecddb1447207335917adccd68">addIndirectCallsites</a>(cbn,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">getCalledValue</a>()));</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span> }</div><div class="ttc" id="classSVF_1_1CallSite_html_a9526f6c3829f8897d1ca617feda8451a"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">SVF::CallSite::getCalledValue</a></div><div class="ttdeci">Value * getCalledValue() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00252">BasicTypes.h:252</a></div></div>
|
|
2336
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00211">BasicTypes.h:211</a></div></div>
|
|
2334
2337
|
<div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00124">IRGraph.h:124</a></div></div>
|
|
2335
2338
|
<div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00223">ICFG.cpp:223</a></div></div>
|
|
2336
2339
|
<div class="ttc" id="classSVF_1_1SVFIR_html_af4a5fd9ecddb1447207335917adccd68"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af4a5fd9ecddb1447207335917adccd68">SVF::SVFIR::addIndirectCallsites</a></div><div class="ttdeci">void addIndirectCallsites(const CallICFGNode *cs, NodeID funPtr)</div><div class="ttdoc">Add indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00488">SVFIR.h:488</a></div></div>
|
|
@@ -2435,7 +2438,7 @@ Private Attributes</h2></td></tr>
|
|
|
2435
2438
|
|
|
2436
2439
|
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00446">446</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2437
2440
|
<div class="fragment"><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"global "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(gvar) << <span class="stringliteral">" constant initializer: "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(C) << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">if</span> (C->getType()->isSingleValueType())</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(C);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="comment">// get the field value if it is avaiable, otherwise we create a dummy field node.</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(gvar, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> field = <a class="code" href="classSVF_1_1SVFIRBuilder.html#afd86b94574632e927a5764df74f9e555">getGlobalVarField</a>(gvar, offset, C->getType());</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalVariable>(C) || SVFUtil::isa<Function>(C))</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantExpr>(C))</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="comment">// add gep edge of C1 itself is a constant expression</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(C);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<BlockAddress>(C))</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="comment">// blockaddress instruction (e.g. i8* blockaddress(@run_vm, %182))</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="comment">// is treated as constant data object for now, see LLVMUtil.h:397, SymbolTableInfo.cpp:674 and SVFIRBuilder.cpp:183-194</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(C);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">getConstantNode</a>(), src);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">if</span> (C->getType()->isPtrOrPtrVectorTy() && src != <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>())</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>(), src);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantArray>(C) || SVFUtil::isa<ConstantStruct>(C))</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C->getNumOperands(); i != e; i++)</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">getFlattenedElemIdx</a>(C->getType(), i);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, SVFUtil::cast<Constant>(C->getOperand(i)), offset + off);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="SVF-FE_2BasicTypes_8h.html#aca8fd472027d8636b36713a7494c88d6">ConstantData</a>* data = SVFUtil::dyn_cast<ConstantData>(C))</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">Options::ModelConsts</a>)</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">if</span>(<a class="code" href="SVF-FE_2BasicTypes_8h.html#a66b2dbc1be121511c3b5b264f94558d3">ConstantDataSequential</a>* seq = SVFUtil::dyn_cast<ConstantDataSequential>(data))</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < seq->getNumElements(); i++)</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">getFlattenedElemIdx</a>(C->getType(), i);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ct = seq->getElementAsConstant(i);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, ct, offset + off);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa<ConstantAggregateZero>(data) && <span class="stringliteral">"Single value type data should have been handled!"</span>);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="comment">//TODO:assert(SVFUtil::isa<ConstantVector>(C),"what else do we have");</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> }</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a2a0711cb1fdd3c5c90b07ff107aff1ac"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">SVF::SVFIRBuilder::addAddrEdge</a></div><div class="ttdeci">AddrStmt * addAddrEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Address edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00295">SVFIRBuilder.h:295</a></div></div>
|
|
2438
|
-
<div class="ttc" id="classSVF_1_1Options_html_a5c051cf6a93a87a07aa1d31e302a2877"><div class="ttname"><a href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">SVF::Options::ModelConsts</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ModelConsts</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
2441
|
+
<div class="ttc" id="classSVF_1_1Options_html_a5c051cf6a93a87a07aa1d31e302a2877"><div class="ttname"><a href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">SVF::Options::ModelConsts</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ModelConsts</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00216">Options.h:216</a></div></div>
|
|
2439
2442
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00086">SVFIRBuilder.h:86</a></div></div>
|
|
2440
2443
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
2441
2444
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
@@ -2450,7 +2453,7 @@ Private Attributes</h2></td></tr>
|
|
|
2450
2453
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
2451
2454
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00108">SymbolTableInfo.cpp:108</a></div></div>
|
|
2452
2455
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00392">SVFUtil.cpp:392</a></div></div>
|
|
2453
|
-
<div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2456
|
+
<div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
|
|
2454
2457
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_aca8fd472027d8636b36713a7494c88d6"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#aca8fd472027d8636b36713a7494c88d6">ConstantData</a></div><div class="ttdeci">llvm::ConstantData ConstantData</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00059">BasicTypes.h:59</a></div></div>
|
|
2455
2458
|
<div class="ttc" id="classSVF_1_1IRGraph_html_ac5da3a0cbe040a45d719b6f6a23aed91"><div class="ttname"><a href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">SVF::IRGraph::getConstantNode</a></div><div class="ttdeci">NodeID getConstantNode() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00152">IRGraph.h:152</a></div></div>
|
|
2456
2459
|
<div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00161">SVFBasicTypes.h:161</a></div></div>
|
|
@@ -2487,7 +2490,7 @@ Private Attributes</h2></td></tr>
|
|
|
2487
2490
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
2488
2491
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a38f6d0c7db935fd4e556761f96f1fa09"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09">SVF::SVFIR::addRetNode</a></div><div class="ttdeci">NodeID addRetNode(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Add a unique return node for a procedure. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00511">SVFIR.h:511</a></div></div>
|
|
2489
2492
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2490
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2493
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
|
|
2491
2494
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_adaed6e68c2f53260ed4c4fc38b5c4721"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">SVF::SymbolTableInfo::nullPtrSymID</a></div><div class="ttdeci">SymID nullPtrSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00207">SymbolTableInfo.h:207</a></div></div>
|
|
2492
2495
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a8f3cb8a1db34dd692ee04561f4edeebf"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a8f3cb8a1db34dd692ee04561f4edeebf">SVF::SymbolTableInfo::valSyms</a></div><div class="ttdeci">ValueToIDMapTy & valSyms()</div><div class="ttdoc">Get different kinds of syms maps. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00276">SymbolTableInfo.h:276</a></div></div>
|
|
2493
2496
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aff3f3ff198e7511576484dfda7bf051b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aff3f3ff198e7511576484dfda7bf051b">SVF::SVFIR::addConstantObjNode</a></div><div class="ttdeci">NodeID addConstantObjNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00550">SVFIR.h:550</a></div></div>
|
|
@@ -2512,7 +2515,7 @@ Private Attributes</h2></td></tr>
|
|
|
2512
2515
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00336">SymbolTableInfo.cpp:336</a></div></div>
|
|
2513
2516
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a6ade5bf3edc7b6c3faafc3e5ff3d0538"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6ade5bf3edc7b6c3faafc3e5ff3d0538">SVF::SVFIR::addVarargNode</a></div><div class="ttdeci">NodeID addVarargNode(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Add a unique vararg node for a procedure. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00517">SVFIR.h:517</a></div></div>
|
|
2514
2517
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
2515
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2518
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
2516
2519
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a547b3bc62de65b9dbfc6dee55c063dd7"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00114">LLVMModule.h:114</a></div></div>
|
|
2517
2520
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a1717e26e29f50096b96d7e4c43fe1c76"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a1717e26e29f50096b96d7e4c43fe1c76">SVF::SVFIRBuilder::addNullPtrNode</a></div><div class="ttdeci">NodeID addNullPtrNode()</div><div class="ttdoc">Add NullPtr PAGNode. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00273">SVFIRBuilder.h:273</a></div></div>
|
|
2518
2521
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html">SVF::SymbolTableInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00047">SymbolTableInfo.h:47</a></div></div>
|
|
@@ -2549,37 +2552,37 @@ Private Attributes</h2></td></tr>
|
|
|
2549
2552
|
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00296">296</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2550
2553
|
<div class="fragment"><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ref = SVFUtil::dyn_cast<Constant>(val))</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* gepce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">isGepConstantExpr</a>(ref))</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"handle gep constant expression "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(ref) << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = gepce->getOperand(0);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// handle recursive constant express case (gep (bitcast (gep X 1)) 1)</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(opnd);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordtype">bool</span> constGep = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a87b75f04942124711d5ea1366e866890">computeGepOffset</a>(gepce, ls);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="comment">// must invoke pag methods here, otherwise it will be a dead recursion cycle</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">getCurrentValue</a>();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">getCurrentBB</a>();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(gepce, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">/*</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="comment"> * The gep edge created are like constexpr (same edge may appear at multiple callsites)</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="comment"> * so bb/inst of this edge may be rewritten several times, we treat it as global here.</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="comment"> */</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ac70a2368d5e0d3fe4dff94fecb2455ef">addGepEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(opnd), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(gepce), ls, constGep);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* castce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7e404bcc6613ba10a56c4fbdc842c5a8">isCastConstantExpr</a>(ref))</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"handle cast constant expression "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(ref) << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = castce->getOperand(0);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(opnd);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">getCurrentValue</a>();</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">getCurrentBB</a>();</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(castce, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(opnd), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(castce));</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* selectce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a07d991d5bfccce9ebdef0cbb6f4bf739">isSelectConstantExpr</a>(ref))</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"handle select constant expression "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(ref) << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* src1 = selectce->getOperand(1);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* src2 = selectce->getOperand(2);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(src1);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(src2);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">getCurrentValue</a>();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">getCurrentBB</a>();</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(selectce, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(selectce->getOperand(0));</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nsrc1 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(src1);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nsrc2 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(src2);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nres = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(selectce);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5bf90e30bb591caba9ff85535e6a33f8">addSelectStmt</a>(nres,nsrc1, nsrc2, cond);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="comment">// if we meet a int2ptr, then it points-to black hole</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* int2Ptrce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">isInt2PtrConstantExpr</a>(ref))</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a55d8504dbc766c4ede031299a37417ef">addGlobalBlackHoleAddrEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(int2Ptrce), int2Ptrce);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* ptr2Intce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">isPtr2IntConstantExpr</a>(ref))</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = ptr2Intce->getOperand(0);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(opnd);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">getCurrentBB</a>();</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">getCurrentValue</a>();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ptr2Intce, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(opnd), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(ptr2Intce));</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a1373688c6faba4dcdb640106575ea433">isTruncConstantExpr</a>(ref) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">isCmpConstantExpr</a>(ref))</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="comment">// we don't handle trunc and cmp instruction for now</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">getCurrentValue</a>();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">getCurrentBB</a>();</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(ref);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a43c9072210a5f5baeafe36da03f2fde2">isBinaryConstantExpr</a>(ref))</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="comment">// we don't handle binary constant expression like add(x,y) now</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">getCurrentValue</a>();</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">getCurrentBB</a>();</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(ref);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#af14757d5cf466bba20a125f118378560">isUnaryConstantExpr</a>(ref))</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="comment">// we don't handle unary constant expression like fneg(x) now</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">getCurrentValue</a>();</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">getCurrentBB</a>();</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(ref);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantAggregate>(ref))</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="comment">// we don't handle constant agrgregate like constant vectors</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<BlockAddress>(ref))</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="comment">// blockaddress instruction (e.g. i8* blockaddress(@run_vm, %182))</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="comment">// is treated as constant data object for now, see LLVMUtil.h:397, SymbolTableInfo.cpp:674 and SVFIRBuilder.cpp:183-194</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">getCurrentValue</a>();</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">getCurrentBB</a>();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(ref);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">getConstantNode</a>(), dst);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ConstantExpr>(val))</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"we don't handle all other constant expression for now!"</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> }</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a724198dcaf43730e1df814f15fe4e1e0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">SVF::SVFIRBuilder::getCurrentBB</a></div><div class="ttdeci">const BasicBlock * getCurrentBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00257">SVFIRBuilder.h:257</a></div></div>
|
|
2551
2554
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a2a0711cb1fdd3c5c90b07ff107aff1ac"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">SVF::SVFIRBuilder::addAddrEdge</a></div><div class="ttdeci">AddrStmt * addAddrEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Address edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00295">SVFIRBuilder.h:295</a></div></div>
|
|
2552
|
-
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2553
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a1373688c6faba4dcdb640106575ea433"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1373688c6faba4dcdb640106575ea433">SVF::SVFUtil::isTruncConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isTruncConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2555
|
+
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
2556
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a1373688c6faba4dcdb640106575ea433"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1373688c6faba4dcdb640106575ea433">SVF::SVFUtil::isTruncConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isTruncConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00598">LLVMUtil.h:598</a></div></div>
|
|
2554
2557
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
2555
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af14757d5cf466bba20a125f118378560"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af14757d5cf466bba20a125f118378560">SVF::SVFUtil::isUnaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isUnaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2558
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af14757d5cf466bba20a125f118378560"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af14757d5cf466bba20a125f118378560">SVF::SVFUtil::isUnaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isUnaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00632">LLVMUtil.h:632</a></div></div>
|
|
2556
2559
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2557
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6bc4376ada53ddfbf8df2ca817153555"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">SVF::SVFUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2560
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6bc4376ada53ddfbf8df2ca817153555"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">SVF::SVFUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00558">LLVMUtil.h:558</a></div></div>
|
|
2558
2561
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a8bf1847f31ff90937ce76cd0c0af7edb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">SVF::SVFIRBuilder::addBlackHoleAddrEdge</a></div><div class="ttdeci">void addBlackHoleAddrEdge(NodeID node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00288">SVFIRBuilder.h:288</a></div></div>
|
|
2559
2562
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac70a2368d5e0d3fe4dff94fecb2455ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac70a2368d5e0d3fe4dff94fecb2455ef">SVF::SVFIRBuilder::addGepEdge</a></div><div class="ttdeci">void addGepEdge(NodeID src, NodeID dst, const LocationSet &ls, bool constGep)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00381">SVFIRBuilder.h:381</a></div></div>
|
|
2560
2563
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5adf8baa546292434ba1fec48db2d0a7"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">SVF::SVFIRBuilder::processCE</a></div><div class="ttdeci">void processCE(const Value *val)</div><div class="ttdoc">Process constant expression. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00296">SVFIRBuilder.cpp:296</a></div></div>
|
|
2561
2564
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a15105737c91d01ba9daf2161fad220ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">SVF::SVFIRBuilder::setCurrentLocation</a></div><div class="ttdeci">void setCurrentLocation(const Value *val, const BasicBlock *bb)</div><div class="ttdoc">Set current basic block in order to keep track of control flow information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00248">SVFIRBuilder.h:248</a></div></div>
|
|
2562
2565
|
<div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00124">IRGraph.h:124</a></div></div>
|
|
2563
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4adb63c87a9489ab905d42230ac66299"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">SVF::SVFUtil::isCmpConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCmpConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2564
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a384b0986a6c4e99dfc4e1629b3598c3c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">SVF::SVFUtil::isGepConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isGepConstantExpr(const Value *val)</div><div class="ttdoc">Return corresponding constant expression, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2566
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4adb63c87a9489ab905d42230ac66299"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">SVF::SVFUtil::isCmpConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCmpConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00612">LLVMUtil.h:612</a></div></div>
|
|
2567
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a384b0986a6c4e99dfc4e1629b3598c3c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">SVF::SVFUtil::isGepConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isGepConstantExpr(const Value *val)</div><div class="ttdoc">Return corresponding constant expression, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00548">LLVMUtil.h:548</a></div></div>
|
|
2565
2568
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
2566
2569
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
2567
2570
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a87b75f04942124711d5ea1366e866890"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a87b75f04942124711d5ea1366e866890">SVF::SVFIRBuilder::computeGepOffset</a></div><div class="ttdeci">bool computeGepOffset(const User *V, LocationSet &ls)</div><div class="ttdoc">Compute offset of a gep instruction or gep constant expression. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00234">SVFIRBuilder.cpp:234</a></div></div>
|
|
2568
2571
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00392">SVFUtil.cpp:392</a></div></div>
|
|
2569
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a093b7ae4ad144fb5d028366b1814861a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">SVF::SVFUtil::isPtr2IntConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isPtr2IntConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2570
|
-
<div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2572
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a093b7ae4ad144fb5d028366b1814861a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">SVF::SVFUtil::isPtr2IntConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isPtr2IntConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00568">LLVMUtil.h:568</a></div></div>
|
|
2573
|
+
<div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
|
|
2571
2574
|
<div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
|
|
2572
2575
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5bf90e30bb591caba9ff85535e6a33f8"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5bf90e30bb591caba9ff85535e6a33f8">SVF::SVFIRBuilder::addSelectStmt</a></div><div class="ttdeci">void addSelectStmt(NodeID res, NodeID op1, NodeID op2, NodeID cond)</div><div class="ttdoc">Add SelectStmt. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00322">SVFIRBuilder.h:322</a></div></div>
|
|
2573
2576
|
<div class="ttc" id="classSVF_1_1IRGraph_html_ac5da3a0cbe040a45d719b6f6a23aed91"><div class="ttname"><a href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">SVF::IRGraph::getConstantNode</a></div><div class="ttdeci">NodeID getConstantNode() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00152">IRGraph.h:152</a></div></div>
|
|
2574
2577
|
<div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00161">SVFBasicTypes.h:161</a></div></div>
|
|
2575
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a07d991d5bfccce9ebdef0cbb6f4bf739"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a07d991d5bfccce9ebdef0cbb6f4bf739">SVF::SVFUtil::isSelectConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isSelectConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2576
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7e404bcc6613ba10a56c4fbdc842c5a8"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7e404bcc6613ba10a56c4fbdc842c5a8">SVF::SVFUtil::isCastConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCastConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2578
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a07d991d5bfccce9ebdef0cbb6f4bf739"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a07d991d5bfccce9ebdef0cbb6f4bf739">SVF::SVFUtil::isSelectConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isSelectConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00588">LLVMUtil.h:588</a></div></div>
|
|
2579
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7e404bcc6613ba10a56c4fbdc842c5a8"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7e404bcc6613ba10a56c4fbdc842c5a8">SVF::SVFUtil::isCastConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCastConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00578">LLVMUtil.h:578</a></div></div>
|
|
2577
2580
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
|
|
2578
2581
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a140defeb309d895394822f8780deda16"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">SVF::SVFIRBuilder::addCopyEdge</a></div><div class="ttdeci">CopyStmt * addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00305">SVFIRBuilder.h:305</a></div></div>
|
|
2579
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a43c9072210a5f5baeafe36da03f2fde2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a43c9072210a5f5baeafe36da03f2fde2">SVF::SVFUtil::isBinaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isBinaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2582
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a43c9072210a5f5baeafe36da03f2fde2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a43c9072210a5f5baeafe36da03f2fde2">SVF::SVFUtil::isBinaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isBinaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00622">LLVMUtil.h:622</a></div></div>
|
|
2580
2583
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a55d8504dbc766c4ede031299a37417ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a55d8504dbc766c4ede031299a37417ef">SVF::SVFIRBuilder::addGlobalBlackHoleAddrEdge</a></div><div class="ttdeci">void addGlobalBlackHoleAddrEdge(NodeID node, const ConstantExpr *int2Ptrce)</div><div class="ttdoc">Add global black hole Address edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00263">SVFIRBuilder.h:263</a></div></div>
|
|
2581
2584
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
2582
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2585
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
2583
2586
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a7bf5d4d18f74f70b61955810e4f01d8c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a7bf5d4d18f74f70b61955810e4f01d8c">SVF::SVFIRBuilder::getCurrentValue</a></div><div class="ttdeci">const Value * getCurrentValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00253">SVFIRBuilder.h:253</a></div></div>
|
|
2584
2587
|
</div><!-- fragment -->
|
|
2585
2588
|
</div>
|
|
@@ -2644,7 +2647,7 @@ Private Attributes</h2></td></tr>
|
|
|
2644
2647
|
<div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">SVF::ICFGEdge::RetCF</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00055">ICFGEdge.h:55</a></div></div>
|
|
2645
2648
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_a8a133398c691ab3639ceefbc57cd33be"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be">SVF::ICFGNode::addSVFStmt</a></div><div class="ttdeci">void addSVFStmt(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00116">ICFGNode.h:116</a></div></div>
|
|
2646
2649
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2647
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2650
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
|
|
2648
2651
|
<div class="ttc" id="classSVF_1_1ICFG_html_a66cb50d8c176f800f06d9cb8924eb896"><div class="ttname"><a href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00236">ICFG.cpp:236</a></div></div>
|
|
2649
2652
|
<div class="ttc" id="classSVF_1_1IRGraph_html_aefe3143b33cee00c3c2611fea577c1ac"><div class="ttname"><a href="classSVF_1_1IRGraph.html#aefe3143b33cee00c3c2611fea577c1ac">SVF::IRGraph::mapValueToEdge</a></div><div class="ttdeci">void mapValueToEdge(const Value *V, SVFStmt *edge)</div><div class="ttdoc">Map a value to a set of edges. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00081">IRGraph.h:81</a></div></div>
|
|
2650
2653
|
<div class="ttc" id="classSVF_1_1ICFG_html_af1b2d2839f811a00103df87342dfc919"><div class="ttname"><a href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitICFGNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00265">ICFG.cpp:265</a></div></div>
|
|
@@ -2655,11 +2658,11 @@ Private Attributes</h2></td></tr>
|
|
|
2655
2658
|
<div class="ttc" id="classSVF_1_1FunEntryICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html">SVF::FunEntryICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00251">ICFGNode.h:251</a></div></div>
|
|
2656
2659
|
<div class="ttc" id="classSVF_1_1ICFG_html_a86535e50d1feba706b19491d905baef1"><div class="ttname"><a href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">SVF::ICFG::hasInterICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasInterICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00294">ICFG.cpp:294</a></div></div>
|
|
2657
2660
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00093">GenericGraph.h:93</a></div></div>
|
|
2658
|
-
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2659
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2661
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
2662
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
2660
2663
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a852730edf374d18a3fb3985211ed7623"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a852730edf374d18a3fb3985211ed7623">SVF::SVFStmt::setBB</a></div><div class="ttdeci">void setBB(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00119">SVFStatements.h:119</a></div></div>
|
|
2661
2664
|
<div class="ttc" id="classSVF_1_1SVFIR_html_ae3d9b4acb63a7dbe316e87bad4e3987a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">SVF::SVFIR::addGlobalPAGEdge</a></div><div class="ttdeci">void addGlobalPAGEdge(const SVFStmt *edge)</div><div class="ttdoc">Add global PAGEdges (not in a procedure) </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00584">SVFIR.h:584</a></div></div>
|
|
2662
|
-
<div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdoc">LLVM Aliases and constants. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2665
|
+
<div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdoc">LLVM Aliases and constants. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
|
|
2663
2666
|
<div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">SVF::ICFGEdge::CallCF</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00054">ICFGEdge.h:54</a></div></div>
|
|
2664
2667
|
<div class="ttc" id="classSVF_1_1ICFG_html_ae0b05ce161d62362642803158228e5d0"><div class="ttname"><a href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">SVF::ICFG::getGlobalICFGNode</a></div><div class="ttdeci">GlobalICFGNode * getGlobalICFGNode() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00178">ICFG.h:178</a></div></div>
|
|
2665
2668
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a24dddb4e346a6e569908e3efe8a6ecc0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0">SVF::SVFStmt::setValue</a></div><div class="ttdeci">void setValue(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00111">SVFStatements.h:111</a></div></div>
|
|
@@ -2744,17 +2747,17 @@ Private Attributes</h2></td></tr>
|
|
|
2744
2747
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_ad49fa2a288945f6910deb11acdf6a42d"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">SVF::PTACallGraph::getIndCallMap</a></div><div class="ttdeci">CallEdgeMap & getIndCallMap()</div><div class="ttdoc">Get callees from an indirect callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00280">PTACallGraph.h:280</a></div></div>
|
|
2745
2748
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2746
2749
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set< const SVFFunction * > FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
|
|
2747
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2750
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
|
|
2748
2751
|
<div class="ttc" id="classSVF_1_1Options_html_a3a20311c732fb391332ae0ee1cb450a0"><div class="ttname"><a href="classSVF_1_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">SVF::Options::PAGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PAGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00133">Options.h:133</a></div></div>
|
|
2749
2752
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a15105737c91d01ba9daf2161fad220ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">SVF::SVFIRBuilder::setCurrentLocation</a></div><div class="ttdeci">void setCurrentLocation(const Value *val, const BasicBlock *bb)</div><div class="ttdoc">Set current basic block in order to keep track of control flow information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00248">SVFIRBuilder.h:248</a></div></div>
|
|
2750
2753
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html_aa11226a2e4fa6a7b1d78006cc8ca0518"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#aa11226a2e4fa6a7b1d78006cc8ca0518">SVF::CallICFGNode::isIndirectCall</a></div><div class="ttdeci">bool isIndirectCall() const</div><div class="ttdoc">Return true if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00411">ICFGNode.h:411</a></div></div>
|
|
2751
2754
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aff08d65b1411d1db81f80b9d4228c65d"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aff08d65b1411d1db81f80b9d4228c65d">SVF::SVFIRBuilder::handleExtCall</a></div><div class="ttdeci">virtual void handleExtCall(CallSite cs, const SVFFunction *F)</div><div class="ttdoc">Handle external call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01088">SVFIRBuilder.cpp:1088</a></div></div>
|
|
2752
2755
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html_a674753d5ca0fbe28674acb25291f2bcf"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const Instruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00380">ICFGNode.h:380</a></div></div>
|
|
2753
2756
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
2754
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2757
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
2755
2758
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00217">SVFUtil.h:217</a></div></div>
|
|
2756
2759
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_afd3125974393d68b4b8f5298ef699ab3"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#afd3125974393d68b4b8f5298ef699ab3">SVF::SVFIRBuilder::handleDirectCall</a></div><div class="ttdeci">void handleDirectCall(CallSite cs, const SVFFunction *F)</div><div class="ttdoc">Handle direct call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00924">SVFIRBuilder.cpp:924</a></div></div>
|
|
2757
|
-
<div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2760
|
+
<div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00203">BasicTypes.h:203</a></div></div>
|
|
2758
2761
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
|
|
2759
2762
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00072">LLVMUtil.h:72</a></div></div>
|
|
2760
2763
|
</div><!-- fragment -->
|
|
@@ -2883,7 +2886,7 @@ Private Attributes</h2></td></tr>
|
|
|
2883
2886
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2884
2887
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
2885
2888
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a3f954c61381fe31088e791772c334105"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a3f954c61381fe31088e791772c334105">SVF::SVFIRBuilder::addBinaryOPEdge</a></div><div class="ttdeci">void addBinaryOPEdge(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00334">SVFIRBuilder.h:334</a></div></div>
|
|
2886
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2889
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
2887
2890
|
</div><!-- fragment -->
|
|
2888
2891
|
</div>
|
|
2889
2892
|
</div>
|
|
@@ -2913,7 +2916,7 @@ Private Attributes</h2></td></tr>
|
|
|
2913
2916
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
2914
2917
|
<div class="ttc" id="classSVF_1_1BranchStmt_html_a6a0e64824777f04be4c169125dd4f666"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">SVF::BranchStmt::SuccAndCondPairVec</a></div><div class="ttdeci">std::vector< std::pair< const ICFGNode *, s32_t > > SuccAndCondPairVec</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00939">SVFStatements.h:939</a></div></div>
|
|
2915
2918
|
<div class="ttc" id="classSVF_1_1IRGraph_html_a3de9a2a565c303f68a90c32dc59febd5"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">SVF::IRGraph::getNullPtr</a></div><div class="ttdeci">NodeID getNullPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00160">IRGraph.h:160</a></div></div>
|
|
2916
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2919
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
2917
2920
|
<div class="ttc" id="classSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00084">ICFG.h:84</a></div></div>
|
|
2918
2921
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
|
|
2919
2922
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
|
|
@@ -2999,23 +3002,23 @@ Private Attributes</h2></td></tr>
|
|
|
2999
3002
|
<div class="fragment"><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> </div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="comment">// skip llvm intrinsics</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>()))</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> </div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process callsite "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>()) << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> </div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> </div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a98341496bf470d23384f3d86a58591db">addCallSite</a>(callBlockNode);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> </div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">CallSite::arg_iterator</a> itA = cs.<a class="code" href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">arg_begin</a>(), ieA = cs.<a class="code" href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">arg_end</a>(); itA!=ieA; ++itA)</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a69963e4030433103e84e57fc015871d8">addCallSiteArgs</a>(callBlockNode,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(*itA)));</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">if</span>(!cs.<a class="code" href="classSVF_1_1CallSite.html#a9b7d53a345875e4e6c72eb23ac6475de">getType</a>()->isVoidTy())</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a72efebdfe007ec8c515967ede76b6ce0">addCallSiteRets</a>(retBlockNode,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>())));</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> </div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> </div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordflow">if</span> (callee)</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee))</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="comment">// There is no extpag for the function, use the old method.</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff08d65b1411d1db81f80b9d4228c65d">handleExtCall</a>(cs, callee);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  }</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#afd3125974393d68b4b8f5298ef699ab3">handleDirectCall</a>(cs, callee);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  }</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  {</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="comment">//If the callee was not identified as a function (null F), this is indirect.</span></div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#aa21ed35656d26eec22c53dc41019adc4">handleIndCall</a>(cs);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span> }</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa21ed35656d26eec22c53dc41019adc4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa21ed35656d26eec22c53dc41019adc4">SVF::SVFIRBuilder::handleIndCall</a></div><div class="ttdeci">void handleIndCall(CallSite cs)</div><div class="ttdoc">Handle indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01538">SVFIRBuilder.cpp:1538</a></div></div>
|
|
3000
3003
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab7f58caf27c30a1d414e06f60ca84d80"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">SVF::SVFUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00181">SVFUtil.h:181</a></div></div>
|
|
3001
3004
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00086">SVFIRBuilder.h:86</a></div></div>
|
|
3002
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3005
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
|
|
3003
3006
|
<div class="ttc" id="classSVF_1_1ICFG_html_a66cb50d8c176f800f06d9cb8924eb896"><div class="ttname"><a href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00236">ICFG.cpp:236</a></div></div>
|
|
3004
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3005
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_a46e8ffe430bb2711abaafc9d7864909e"><div class="ttname"><a href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">SVF::CallSite::arg_end</a></div><div class="ttdeci">User::const_op_iterator arg_end() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3007
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00211">BasicTypes.h:211</a></div></div>
|
|
3008
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_a46e8ffe430bb2711abaafc9d7864909e"><div class="ttname"><a href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">SVF::CallSite::arg_end</a></div><div class="ttdeci">User::const_op_iterator arg_end() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00228">BasicTypes.h:228</a></div></div>
|
|
3006
3009
|
<div class="ttc" id="classSVF_1_1RetICFGNode_html"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html">SVF::RetICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00458">ICFGNode.h:458</a></div></div>
|
|
3007
3010
|
<div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00223">ICFG.cpp:223</a></div></div>
|
|
3008
3011
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aff08d65b1411d1db81f80b9d4228c65d"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aff08d65b1411d1db81f80b9d4228c65d">SVF::SVFIRBuilder::handleExtCall</a></div><div class="ttdeci">virtual void handleExtCall(CallSite cs, const SVFFunction *F)</div><div class="ttdoc">Handle external call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01088">SVFIRBuilder.cpp:1088</a></div></div>
|
|
3009
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_aabc0054b7f4e06b7ca0b6072746984e6"><div class="ttname"><a href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">SVF::CallSite::arg_begin</a></div><div class="ttdeci">User::const_op_iterator arg_begin() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3012
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_aabc0054b7f4e06b7ca0b6072746984e6"><div class="ttname"><a href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">SVF::CallSite::arg_begin</a></div><div class="ttdeci">User::const_op_iterator arg_begin() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00224">BasicTypes.h:224</a></div></div>
|
|
3010
3013
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00281">SVFUtil.h:281</a></div></div>
|
|
3011
3014
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
3012
3015
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00392">SVFUtil.cpp:392</a></div></div>
|
|
3013
3016
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a98341496bf470d23384f3d86a58591db"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a98341496bf470d23384f3d86a58591db">SVF::SVFIR::addCallSite</a></div><div class="ttdeci">void addCallSite(const CallICFGNode *call)</div><div class="ttdoc">Add callsites. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00589">SVFIR.h:589</a></div></div>
|
|
3014
3017
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
3015
3018
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_afd3125974393d68b4b8f5298ef699ab3"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#afd3125974393d68b4b8f5298ef699ab3">SVF::SVFIRBuilder::handleDirectCall</a></div><div class="ttdeci">void handleDirectCall(CallSite cs, const SVFFunction *F)</div><div class="ttdoc">Handle direct call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00924">SVFIRBuilder.cpp:924</a></div></div>
|
|
3016
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_a9b7d53a345875e4e6c72eb23ac6475de"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9b7d53a345875e4e6c72eb23ac6475de">SVF::CallSite::getType</a></div><div class="ttdeci">Type * getType() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3019
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_a9b7d53a345875e4e6c72eb23ac6475de"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9b7d53a345875e4e6c72eb23ac6475de">SVF::CallSite::getType</a></div><div class="ttdeci">Type * getType() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00220">BasicTypes.h:220</a></div></div>
|
|
3017
3020
|
<div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00161">SVFBasicTypes.h:161</a></div></div>
|
|
3018
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_ac1cdfe5e54026960a23142e26b3150ff"><div class="ttname"><a href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">SVF::CallSite::arg_iterator</a></div><div class="ttdeci">User::const_op_iterator arg_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3021
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_ac1cdfe5e54026960a23142e26b3150ff"><div class="ttname"><a href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">SVF::CallSite::arg_iterator</a></div><div class="ttdeci">User::const_op_iterator arg_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00215">BasicTypes.h:215</a></div></div>
|
|
3019
3022
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
|
|
3020
3023
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
|
|
3021
3024
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a69963e4030433103e84e57fc015871d8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a69963e4030433103e84e57fc015871d8">SVF::SVFIR::addCallSiteArgs</a></div><div class="ttdeci">void addCallSiteArgs(CallICFGNode *callBlockNode, const SVFVar *arg)</div><div class="ttdoc">Add callsite arguments. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00476">SVFIR.h:476</a></div></div>
|
|
@@ -3052,7 +3055,7 @@ Private Attributes</h2></td></tr>
|
|
|
3052
3055
|
<div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00161">SVFBasicTypes.h:161</a></div></div>
|
|
3053
3056
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a140defeb309d895394822f8780deda16"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">SVF::SVFIRBuilder::addCopyEdge</a></div><div class="ttdeci">CopyStmt * addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00305">SVFIRBuilder.h:305</a></div></div>
|
|
3054
3057
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
3055
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3058
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
3056
3059
|
</div><!-- fragment -->
|
|
3057
3060
|
</div>
|
|
3058
3061
|
</div>
|
|
@@ -3079,7 +3082,7 @@ Private Attributes</h2></td></tr>
|
|
|
3079
3082
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
3080
3083
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
3081
3084
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
3082
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3085
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
3083
3086
|
</div><!-- fragment -->
|
|
3084
3087
|
</div>
|
|
3085
3088
|
</div>
|
|
@@ -3185,7 +3188,7 @@ Private Attributes</h2></td></tr>
|
|
|
3185
3188
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
3186
3189
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
3187
3190
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a140defeb309d895394822f8780deda16"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">SVF::SVFIRBuilder::addCopyEdge</a></div><div class="ttdeci">CopyStmt * addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00305">SVFIRBuilder.h:305</a></div></div>
|
|
3188
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3191
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
3189
3192
|
</div><!-- fragment -->
|
|
3190
3193
|
</div>
|
|
3191
3194
|
</div>
|
|
@@ -3256,19 +3259,19 @@ Private Attributes</h2></td></tr>
|
|
|
3256
3259
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00086">SVFIRBuilder.h:86</a></div></div>
|
|
3257
3260
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
3258
3261
|
<div class="ttc" id="classSVF_1_1SVFModule_html_abee99d29b7d4c4915a386895c755009c"><div class="ttname"><a href="classSVF_1_1SVFModule.html#abee99d29b7d4c4915a386895c755009c">SVF::SVFModule::alias_iterator</a></div><div class="ttdeci">AliasSetType::iterator alias_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00057">SVFModule.h:57</a></div></div>
|
|
3259
|
-
<div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3262
|
+
<div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
|
|
3260
3263
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ae7fcd2050a57a43bfed2c7fd1c41d250"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">SVF::SVFIRBuilder::InitialGlobal</a></div><div class="ttdeci">void InitialGlobal(const GlobalVariable *gvar, Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00446">SVFIRBuilder.cpp:446</a></div></div>
|
|
3261
3264
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5adf8baa546292434ba1fec48db2d0a7"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">SVF::SVFIRBuilder::processCE</a></div><div class="ttdeci">void processCE(const Value *val)</div><div class="ttdoc">Process constant expression. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00296">SVFIRBuilder.cpp:296</a></div></div>
|
|
3262
3265
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a15105737c91d01ba9daf2161fad220ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">SVF::SVFIRBuilder::setCurrentLocation</a></div><div class="ttdeci">void setCurrentLocation(const Value *val, const BasicBlock *bb)</div><div class="ttdoc">Set current basic block in order to keep track of control flow information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00248">SVFIRBuilder.h:248</a></div></div>
|
|
3263
3266
|
<div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00124">IRGraph.h:124</a></div></div>
|
|
3264
3267
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a3cfd0983849950099d1e8f8e0fda42bc"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a3cfd0983849950099d1e8f8e0fda42bc">SVF::SVFModule::alias_end</a></div><div class="ttdeci">alias_iterator alias_end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00189">SVFModule.h:189</a></div></div>
|
|
3265
3268
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a648542aa5c4b487ad5aa12a39d15e951"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">SVF::SVFModule::llvmFunBegin</a></div><div class="ttdeci">llvm_iterator llvmFunBegin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00130">SVFModule.h:130</a></div></div>
|
|
3266
|
-
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3269
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
3267
3270
|
<div class="ttc" id="classSVF_1_1SVFModule_html_ab86e221a93bec67a2ecb7cb53315f569"><div class="ttname"><a href="classSVF_1_1SVFModule.html#ab86e221a93bec67a2ecb7cb53315f569">SVF::SVFModule::llvm_const_iterator</a></div><div class="ttdeci">LLVMFunctionSetType::const_iterator llvm_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00054">SVFModule.h:54</a></div></div>
|
|
3268
3271
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a4cf1ca2e9f045a0520b0a8a6cd5993f2"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a4cf1ca2e9f045a0520b0a8a6cd5993f2">SVF::SVFModule::global_iterator</a></div><div class="ttdeci">GlobalSetType::iterator global_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00055">SVFModule.h:55</a></div></div>
|
|
3269
3272
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
3270
3273
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00392">SVFUtil.cpp:392</a></div></div>
|
|
3271
|
-
<div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3274
|
+
<div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
|
|
3272
3275
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a4dc32c583d29d74d052eaa5665b0b70e"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a4dc32c583d29d74d052eaa5665b0b70e">SVF::SVFModule::global_begin</a></div><div class="ttdeci">global_iterator global_begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00164">SVFModule.h:164</a></div></div>
|
|
3273
3276
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a7f2b4647c8d69c8328b63e576cb6d065"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a7f2b4647c8d69c8328b63e576cb6d065">SVF::SVFModule::alias_begin</a></div><div class="ttdeci">alias_iterator alias_begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00181">SVFModule.h:181</a></div></div>
|
|
3274
3277
|
<div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00161">SVFBasicTypes.h:161</a></div></div>
|
|
@@ -3479,7 +3482,7 @@ Private Attributes</h2></td></tr>
|
|
|
3479
3482
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
3480
3483
|
<div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
|
|
3481
3484
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
3482
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3485
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
3483
3486
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
3484
3487
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00392">SVFUtil.cpp:392</a></div></div>
|
|
3485
3488
|
<div class="ttc" id="classSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00084">ICFG.h:84</a></div></div>
|
|
@@ -3489,7 +3492,7 @@ Private Attributes</h2></td></tr>
|
|
|
3489
3492
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
|
|
3490
3493
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
|
|
3491
3494
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
3492
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3495
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
3493
3496
|
</div><!-- fragment -->
|
|
3494
3497
|
</div>
|
|
3495
3498
|
</div>
|
|
@@ -3545,7 +3548,7 @@ Private Attributes</h2></td></tr>
|
|
|
3545
3548
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
3546
3549
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aff99c8de4acf4eeaf01803dadf459b92"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">SVF::SVFIRBuilder::getReturnNode</a></div><div class="ttdeci">NodeID getReturnNode(const SVFFunction *func)</div><div class="ttdoc">getReturnNode - Return the node representing the unique return value of a function. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00102">SVFIRBuilder.h:102</a></div></div>
|
|
3547
3550
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
3548
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3551
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
|
|
3549
3552
|
<div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
|
|
3550
3553
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
3551
3554
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00392">SVFUtil.cpp:392</a></div></div>
|
|
@@ -3557,7 +3560,7 @@ Private Attributes</h2></td></tr>
|
|
|
3557
3560
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
|
|
3558
3561
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
|
|
3559
3562
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
3560
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3563
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
3561
3564
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a547b3bc62de65b9dbfc6dee55c063dd7"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00114">LLVMModule.h:114</a></div></div>
|
|
3562
3565
|
</div><!-- fragment -->
|
|
3563
3566
|
</div>
|
|
@@ -3672,11 +3675,11 @@ Private Attributes</h2></td></tr>
|
|
|
3672
3675
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
3673
3676
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5e56beb1a362b6e596183b04d37fd9e0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5e56beb1a362b6e596183b04d37fd9e0">SVF::SVFIRBuilder::addBranchStmt</a></div><div class="ttdeci">void addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &succs)</div><div class="ttdoc">Add Branch statement. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00346">SVFIRBuilder.h:346</a></div></div>
|
|
3674
3677
|
<div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
3675
|
-
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3678
|
+
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
|
|
3676
3679
|
<div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
|
|
3677
3680
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
3678
3681
|
<div class="ttc" id="classSVF_1_1BranchStmt_html_a6a0e64824777f04be4c169125dd4f666"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">SVF::BranchStmt::SuccAndCondPairVec</a></div><div class="ttdeci">std::vector< std::pair< const ICFGNode *, s32_t > > SuccAndCondPairVec</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00939">SVFStatements.h:939</a></div></div>
|
|
3679
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3682
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
3680
3683
|
<div class="ttc" id="classSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00084">ICFG.h:84</a></div></div>
|
|
3681
3684
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
|
|
3682
3685
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
|
|
@@ -3706,7 +3709,7 @@ Private Attributes</h2></td></tr>
|
|
|
3706
3709
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
3707
3710
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
3708
3711
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a9e81039d17b70e6a3d7310d05fa73c45"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9e81039d17b70e6a3d7310d05fa73c45">SVF::SVFIRBuilder::addUnaryOPEdge</a></div><div class="ttdeci">void addUnaryOPEdge(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00340">SVFIRBuilder.h:340</a></div></div>
|
|
3709
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3712
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
3710
3713
|
</div><!-- fragment -->
|
|
3711
3714
|
</div>
|
|
3712
3715
|
</div>
|
|
@@ -3760,7 +3763,7 @@ Private Attributes</h2></td></tr>
|
|
|
3760
3763
|
<div class="fragment"><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> {</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getPointerOperand();</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src,dst);</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> }</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00086">SVFIRBuilder.h:86</a></div></div>
|
|
3761
3764
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
3762
3765
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a140defeb309d895394822f8780deda16"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">SVF::SVFIRBuilder::addCopyEdge</a></div><div class="ttdeci">CopyStmt * addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00305">SVFIRBuilder.h:305</a></div></div>
|
|
3763
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3766
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
3764
3767
|
</div><!-- fragment -->
|
|
3765
3768
|
</div>
|
|
3766
3769
|
</div>
|