svf-tools 1.0.427 → 1.0.430
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 +2 -2
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/DCHG_8h_source.html +7 -7
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +18 -18
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +6 -0
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +58 -56
- 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 +2 -2
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
- 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 +13 -12
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +33 -27
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +32 -28
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +5 -4
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +117 -27
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +32 -27
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
- 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 +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +70 -70
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +34 -34
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +10 -10
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFUtil_8h.html +0 -3
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +12 -13
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +9 -7
- package/SVF-doxygen/html/html/SaberAnnotator_8h.html +1 -1
- package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +6 -7
- 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_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +62 -61
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +77 -76
- package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +1 -0
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +135 -134
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/TCT_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -11
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +75 -80
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
- 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_1CallSite.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +47 -47
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +5 -3
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +11 -11
- 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 +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +5 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +115 -88
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +94 -94
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +26 -25
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +153 -114
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +31 -30
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +11 -8
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +89 -89
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +28 -24
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +86 -86
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +41 -42
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +189 -220
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/functions_a.html +3 -3
- package/SVF-doxygen/html/html/functions_e.html +2 -2
- package/SVF-doxygen/html/html/functions_func.html +3 -3
- package/SVF-doxygen/html/html/functions_func_e.html +2 -2
- package/SVF-doxygen/html/html/functions_func_g.html +8 -7
- package/SVF-doxygen/html/html/functions_func_i.html +5 -8
- package/SVF-doxygen/html/html/functions_func_s.html +9 -8
- package/SVF-doxygen/html/html/functions_g.html +15 -14
- package/SVF-doxygen/html/html/functions_i.html +11 -14
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +15 -15
- package/SVF-doxygen/html/html/functions_p.html +7 -7
- package/SVF-doxygen/html/html/functions_r.html +8 -8
- package/SVF-doxygen/html/html/functions_s.html +11 -10
- package/SVF-doxygen/html/html/functions_t.html +10 -8
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/globals.html +3 -0
- package/SVF-doxygen/html/html/globals_b.html +3 -0
- package/SVF-doxygen/html/html/globals_r.html +3 -0
- package/SVF-doxygen/html/html/globals_s.html +9 -6
- package/SVF-doxygen/html/html/globals_type.html +15 -0
- package/SVF-doxygen/html/html/globals_u.html +5 -2
- package/SVF-doxygen/html/html/namespaceSVF.html +40 -130
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +253 -220
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +20 -20
- package/SVF-doxygen/html/html/namespacemembers.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_b.html +1 -4
- package/SVF-doxygen/html/html/namespacemembers_func.html +8 -5
- package/SVF-doxygen/html/html/namespacemembers_i.html +11 -8
- package/SVF-doxygen/html/html/namespacemembers_r.html +1 -4
- package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type.html +0 -15
- package/SVF-doxygen/html/html/namespacemembers_u.html +0 -3
- package/SVF-doxygen/html/html/search/all_1.js +4 -4
- package/SVF-doxygen/html/html/search/all_10.js +9 -9
- package/SVF-doxygen/html/html/search/all_12.js +4 -4
- package/SVF-doxygen/html/html/search/all_13.js +8 -8
- package/SVF-doxygen/html/html/search/all_14.js +7 -7
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_2.js +1 -1
- package/SVF-doxygen/html/html/search/all_5.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +1 -1
- package/SVF-doxygen/html/html/search/all_9.js +2 -2
- package/SVF-doxygen/html/html/search/all_c.js +1 -1
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/functions_0.js +3 -3
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- package/SVF-doxygen/html/html/search/functions_4.js +2 -2
- package/SVF-doxygen/html/html/search/functions_6.js +1 -1
- package/SVF-doxygen/html/html/search/functions_8.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_1.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_10.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_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/include/DDA/DDAVFSolver.h +3 -3
- package/include/MemoryModel/SymbolTableInfo.h +6 -4
- package/include/SABER/PathCondAllocator.h +8 -2
- package/include/SABER/SaberAnnotator.h +4 -4
- package/include/SVF-FE/BasicTypes.h +5 -0
- package/include/SVF-FE/LLVMUtil.h +13 -0
- package/include/Util/BasicTypes.h +0 -5
- package/include/Util/SVFUtil.h +0 -5
- package/lib/MSSA/MemRegion.cpp +4 -4
- package/lib/MemoryModel/PointerAnalysis.cpp +4 -4
- package/lib/MemoryModel/SymbolTableInfo.cpp +6 -8
- package/lib/SABER/PathCondAllocator.cpp +31 -26
- package/lib/SABER/ProgSlice.cpp +7 -4
- package/lib/SABER/SaberAnnotator.cpp +8 -8
- package/lib/SVF-FE/SymbolTableBuilder.cpp +1 -1
- package/package.json +1 -1
|
@@ -146,6 +146,12 @@ Functions</h2></td></tr>
|
|
|
146
146
|
<tr class="memitem:ad98299033577f1e7f4e9bc73dff3b253"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">getLLVMFunction</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
147
147
|
<tr class="memdesc:ad98299033577f1e7f4e9bc73dff3b253"><td class="mdescLeft"> </td><td class="mdescRight">Return LLVM function if this value is. <a href="#ad98299033577f1e7f4e9bc73dff3b253">More...</a><br /></td></tr>
|
|
148
148
|
<tr class="separator:ad98299033577f1e7f4e9bc73dff3b253"><td class="memSeparator" colspan="2"> </td></tr>
|
|
149
|
+
<tr class="memitem:ac0df4ee0bf78167dd9461227b5cce7af"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#ac0df4ee0bf78167dd9461227b5cce7af">isBlackholeSym</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
150
|
+
<tr class="memdesc:ac0df4ee0bf78167dd9461227b5cce7af"><td class="mdescLeft"> </td><td class="mdescRight">Check whether this value is a black hole. <a href="#ac0df4ee0bf78167dd9461227b5cce7af">More...</a><br /></td></tr>
|
|
151
|
+
<tr class="separator:ac0df4ee0bf78167dd9461227b5cce7af"><td class="memSeparator" colspan="2"> </td></tr>
|
|
152
|
+
<tr class="memitem:abd525a2e3b7b9167b61b2304cc2cbdf2"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">isReturn</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</td></tr>
|
|
153
|
+
<tr class="memdesc:abd525a2e3b7b9167b61b2304cc2cbdf2"><td class="mdescLeft"> </td><td class="mdescRight">Whether an instruction is a return instruction. <a href="#abd525a2e3b7b9167b61b2304cc2cbdf2">More...</a><br /></td></tr>
|
|
154
|
+
<tr class="separator:abd525a2e3b7b9167b61b2304cc2cbdf2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
149
155
|
<tr class="memitem:ac3e7507fb376b1625bc1573132ab9f06"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094">ExtAPI::extf_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#ac3e7507fb376b1625bc1573132ab9f06">extCallTy</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)</td></tr>
|
|
150
156
|
<tr class="memdesc:ac3e7507fb376b1625bc1573132ab9f06"><td class="mdescLeft"> </td><td class="mdescRight">Return external call type. <a href="#ac3e7507fb376b1625bc1573132ab9f06">More...</a><br /></td></tr>
|
|
151
157
|
<tr class="separator:ac3e7507fb376b1625bc1573132ab9f06"><td class="memSeparator" colspan="2"> </td></tr>
|
|
@@ -289,9 +295,6 @@ Functions</h2></td></tr>
|
|
|
289
295
|
<tr class="memitem:a8d8216a92140d982303f83ea424ddc91"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</td></tr>
|
|
290
296
|
<tr class="memdesc:a8d8216a92140d982303f83ea424ddc91"><td class="mdescLeft"> </td><td class="mdescRight">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls. <a href="#a8d8216a92140d982303f83ea424ddc91">More...</a><br /></td></tr>
|
|
291
297
|
<tr class="separator:a8d8216a92140d982303f83ea424ddc91"><td class="memSeparator" colspan="2"> </td></tr>
|
|
292
|
-
<tr class="memitem:abd525a2e3b7b9167b61b2304cc2cbdf2"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">isReturn</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</td></tr>
|
|
293
|
-
<tr class="memdesc:abd525a2e3b7b9167b61b2304cc2cbdf2"><td class="mdescLeft"> </td><td class="mdescRight">Whether an instruction is a return instruction. <a href="#abd525a2e3b7b9167b61b2304cc2cbdf2">More...</a><br /></td></tr>
|
|
294
|
-
<tr class="separator:abd525a2e3b7b9167b61b2304cc2cbdf2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
295
298
|
<tr class="memitem:a202de7ad2bea0311e2f75894c030e7a9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CallSite.html">CallSite</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</td></tr>
|
|
296
299
|
<tr class="memdesc:a202de7ad2bea0311e2f75894c030e7a9"><td class="mdescLeft"> </td><td class="mdescRight">Return LLVM callsite given a instruction. <a href="#a202de7ad2bea0311e2f75894c030e7a9">More...</a><br /></td></tr>
|
|
297
300
|
<tr class="separator:a202de7ad2bea0311e2f75894c030e7a9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
@@ -625,8 +628,8 @@ Functions</h2></td></tr>
|
|
|
625
628
|
|
|
626
629
|
<p>whether this is an argument in dead function </p>
|
|
627
630
|
|
|
628
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
629
|
-
<div class="fragment"><div class="line"><a name="
|
|
631
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00422">422</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
632
|
+
<div class="fragment"><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">return</span> SVFUtil::isa<Argument>(val)</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6d268e8d588717601345be3a911a7625">isDeadFunction</a>(SVFUtil::cast<Argument>(val)->getParent());</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6d268e8d588717601345be3a911a7625"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6d268e8d588717601345be3a911a7625">SVF::SVFUtil::isDeadFunction</a></div><div class="ttdeci">bool isDeadFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller? </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00126">LLVMUtil.cpp:126</a></div></div>
|
|
630
633
|
</div><!-- fragment -->
|
|
631
634
|
</div>
|
|
632
635
|
</div>
|
|
@@ -656,8 +659,8 @@ Functions</h2></td></tr>
|
|
|
656
659
|
|
|
657
660
|
<p>Return true if the argument in a function does not have a caller. </p>
|
|
658
661
|
|
|
659
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
660
|
-
<div class="fragment"><div class="line"><a name="
|
|
662
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00505">505</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
663
|
+
<div class="fragment"><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">return</span> SVFUtil::isa<Argument>(val)</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  && <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae7007ebc6a543dc30ef076b4aed75b1b">isNoCallerFunction</a>(SVFUtil::cast<Argument>(val)->getParent());</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae7007ebc6a543dc30ef076b4aed75b1b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae7007ebc6a543dc30ef076b4aed75b1b">SVF::SVFUtil::isNoCallerFunction</a></div><div class="ttdeci">bool isNoCallerFunction(const Function *fun)</div><div class="ttdoc">Function does not have any possible caller in the call graph. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00499">LLVMUtil.h:499</a></div></div>
|
|
661
664
|
</div><!-- fragment -->
|
|
662
665
|
</div>
|
|
663
666
|
</div>
|
|
@@ -687,8 +690,8 @@ Functions</h2></td></tr>
|
|
|
687
690
|
|
|
688
691
|
<p>Return true if this is an argument of a program entry function (e.g. main) </p>
|
|
689
692
|
|
|
690
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
691
|
-
<div class="fragment"><div class="line"><a name="
|
|
693
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00467">467</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
694
|
+
<div class="fragment"><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">return</span> SVFUtil::isa<Argument>(val)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  && <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab87fef7b10465d3e635643fcb93b95a7">isProgEntryFunction</a>(SVFUtil::cast<Argument>(val)->getParent());</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab87fef7b10465d3e635643fcb93b95a7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab87fef7b10465d3e635643fcb93b95a7">SVF::SVFUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00437">LLVMUtil.h:437</a></div></div>
|
|
692
695
|
</div><!-- fragment -->
|
|
693
696
|
</div>
|
|
694
697
|
</div>
|
|
@@ -1310,8 +1313,8 @@ template<class X , class Y > </div>
|
|
|
1310
1313
|
|
|
1311
1314
|
<p>Return external call type. </p>
|
|
1312
1315
|
|
|
1313
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
1314
|
-
<div class="fragment"><div class="line"><a name="
|
|
1316
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00235">235</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1317
|
+
<div class="fragment"><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">return</span> ExtAPI::getExtAPI()->get_type(fun);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> }</div></div><!-- fragment -->
|
|
1315
1318
|
</div>
|
|
1316
1319
|
</div>
|
|
1317
1320
|
<a id="a7a7e06e90a215086696effb5f5537baf"></a>
|
|
@@ -1335,7 +1338,7 @@ template<class X , class Y > </div>
|
|
|
1335
1338
|
|
|
1336
1339
|
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00089">89</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1337
1340
|
<div class="fragment"><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  std::vector<const BasicBlock*> bbVec;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const BasicBlock*></a> visited;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  bbVec.push_back(&fun->getEntryBlock());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">while</span>(!bbVec.empty())</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  bbVec.pop_back();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb->begin(), eit = bb->end();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  it != eit; ++it)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ReturnInst>(*it))</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> <span class="keyword">false</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> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> sit = succ_begin(bb), esit = succ_end(bb);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  sit != esit; ++sit)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*sit);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  visited.insert(succbb);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  bbVec.push_back(succbb);</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> <span class="comment">// if(isProgEntryFunction(fun)==false) {</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">// writeWrnMsg(fun->getName().str() + " does not have return");</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment">// }</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><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#l00074">BasicTypes.h:74</a></div></div>
|
|
1338
|
-
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1341
|
+
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00155">BasicTypes.h:155</a></div></div>
|
|
1339
1342
|
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00101">SVFBasicTypes.h:101</a></div></div>
|
|
1340
1343
|
</div><!-- fragment -->
|
|
1341
1344
|
</div>
|
|
@@ -1366,8 +1369,8 @@ template<class X , class Y > </div>
|
|
|
1366
1369
|
|
|
1367
1370
|
<p>Return sole argument of the thread routine. </p>
|
|
1368
1371
|
|
|
1369
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
1370
|
-
<div class="fragment"><div class="line"><a name="
|
|
1372
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00369">369</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1373
|
+
<div class="fragment"><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->getActualParmAtForkSite(cs);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> }</div></div><!-- fragment -->
|
|
1371
1374
|
</div>
|
|
1372
1375
|
</div>
|
|
1373
1376
|
<a id="a01119ea4e3a10ebecdef4d390a1c4c88"></a>
|
|
@@ -1394,8 +1397,8 @@ template<class X , class Y > </div>
|
|
|
1394
1397
|
</table>
|
|
1395
1398
|
</div><div class="memdoc">
|
|
1396
1399
|
|
|
1397
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
1398
|
-
<div class="fragment"><div class="line"><a name="
|
|
1400
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00373">373</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1401
|
+
<div class="fragment"><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->getActualParmAtForkSite(inst);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> }</div></div><!-- fragment -->
|
|
1399
1402
|
</div>
|
|
1400
1403
|
</div>
|
|
1401
1404
|
<a id="a0e78b0b6593209d78fae1dd0a5469463"></a>
|
|
@@ -1419,7 +1422,7 @@ template<class X , class Y > </div>
|
|
|
1419
1422
|
|
|
1420
1423
|
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00357">357</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1421
1424
|
<div class="fragment"><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  num++;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">return</span> num;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> }</div><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#l00081">SVFBasicTypes.h:81</a></div></div>
|
|
1422
|
-
<div class="ttc" id="namespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1425
|
+
<div class="ttc" id="namespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00158">BasicTypes.h:158</a></div></div>
|
|
1423
1426
|
</div><!-- fragment -->
|
|
1424
1427
|
</div>
|
|
1425
1428
|
</div>
|
|
@@ -1455,7 +1458,7 @@ template<class X , class Y > </div>
|
|
|
1455
1458
|
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00334">334</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1456
1459
|
<div class="fragment"><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(succbb), et = pred_end(succbb); it != et; ++it, ++pos)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">if</span>(*it==bb)</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"Didn't find predecessor edge?"</span>);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> }</div><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>
|
|
1457
1460
|
<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#l00081">SVFBasicTypes.h:81</a></div></div>
|
|
1458
|
-
<div class="ttc" id="namespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1461
|
+
<div class="ttc" id="namespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00158">BasicTypes.h:158</a></div></div>
|
|
1459
1462
|
</div><!-- fragment -->
|
|
1460
1463
|
</div>
|
|
1461
1464
|
</div>
|
|
@@ -1544,8 +1547,8 @@ template<class X , class Y > </div>
|
|
|
1544
1547
|
|
|
1545
1548
|
<p>Return callee of a callsite. Return null if this is an indirect call. </p>
|
|
1546
1549
|
|
|
1547
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
1548
|
-
<div class="fragment"><div class="line"><a name="
|
|
1550
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00263">263</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
1551
|
+
<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="comment">// FIXME: do we need to strip-off the casts here to discover more library functions</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>>(cs.getCalledValue()->stripPointerCasts());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(callee);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> }</div><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#l00251">SVFUtil.h:251</a></div></div>
|
|
1549
1552
|
<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#l00073">BasicTypes.h:73</a></div></div>
|
|
1550
1553
|
<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>
|
|
1551
1554
|
</div><!-- fragment -->
|
|
@@ -1575,8 +1578,8 @@ template<class X , class Y > </div>
|
|
|
1575
1578
|
</table>
|
|
1576
1579
|
</div><div class="memdoc">
|
|
1577
1580
|
|
|
1578
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
1579
|
-
<div class="fragment"><div class="line"><a name="
|
|
1581
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00270">270</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
1582
|
+
<div class="fragment"><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a38bf8f7eaa18fc5a09711959b5417854">isCallSite</a>(inst))</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  CallSite cs(const_cast<Instruction*>(inst));</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#af26c7636bfef7ab2a36cccdcf12c3538">getCallee</a>(cs);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af26c7636bfef7ab2a36cccdcf12c3538"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af26c7636bfef7ab2a36cccdcf12c3538">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00270">SVFUtil.h:270</a></div></div>
|
|
1580
1583
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a38bf8f7eaa18fc5a09711959b5417854"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a38bf8f7eaa18fc5a09711959b5417854">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Value *val)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00198">SVFUtil.h:198</a></div></div>
|
|
1581
1584
|
</div><!-- fragment -->
|
|
1582
1585
|
</div>
|
|
@@ -1605,8 +1608,8 @@ template<class X , class Y > </div>
|
|
|
1605
1608
|
</table>
|
|
1606
1609
|
</div><div class="memdoc">
|
|
1607
1610
|
|
|
1608
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
1609
|
-
<div class="fragment"><div class="line"><a name="
|
|
1611
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00633">633</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1612
|
+
<div class="fragment"><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a> *dl = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">if</span> (dl == <span class="keyword">nullptr</span>) dl = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a>(mod);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">return</span> dl;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> }</div><div class="ttc" id="namespaceSVF_html_a03db82b8a7914367024723dba4d6ca3c"><div class="ttname"><a href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">SVF::DataLayout</a></div><div class="ttdeci">llvm::DataLayout DataLayout</div><div class="ttdoc">LLVM data layout. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00107">BasicTypes.h:107</a></div></div>
|
|
1610
1613
|
</div><!-- fragment -->
|
|
1611
1614
|
</div>
|
|
1612
1615
|
</div>
|
|
@@ -1636,8 +1639,8 @@ template<class X , class Y > </div>
|
|
|
1636
1639
|
|
|
1637
1640
|
<p>Get the definition of a function across multiple modules. </p>
|
|
1638
1641
|
|
|
1639
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
1640
|
-
<div class="fragment"><div class="line"><a name="
|
|
1642
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00251">251</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
1643
|
+
<div class="fragment"><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="keywordflow">if</span>(fun == <span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  LLVMModuleSet* llvmModuleset = LLVMModuleSet::getLLVMModuleSet();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keyword">const</span> SVFFunction* svfFun = llvmModuleset->getSVFFunction(fun);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">if</span> (fun->isDeclaration() && llvmModuleset->hasDefinition(fun))</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  svfFun = LLVMModuleSet::getLLVMModuleSet()->getDefinition(fun);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">return</span> svfFun;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> }</div></div><!-- fragment -->
|
|
1641
1644
|
</div>
|
|
1642
1645
|
</div>
|
|
1643
1646
|
<a id="ac840e43fa58a90099de99a1953f091ac"></a>
|
|
@@ -1666,8 +1669,8 @@ template<class X , class Y > </div>
|
|
|
1666
1669
|
|
|
1667
1670
|
<p>Return thread fork function. </p>
|
|
1668
1671
|
|
|
1669
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
1670
|
-
<div class="fragment"><div class="line"><a name="
|
|
1672
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00357">357</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1673
|
+
<div class="fragment"><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->getForkedFun(cs);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> }</div></div><!-- fragment -->
|
|
1671
1674
|
</div>
|
|
1672
1675
|
</div>
|
|
1673
1676
|
<a id="a4cc8c549625712e006079642c656ec83"></a>
|
|
@@ -1694,8 +1697,8 @@ template<class X , class Y > </div>
|
|
|
1694
1697
|
</table>
|
|
1695
1698
|
</div><div class="memdoc">
|
|
1696
1699
|
|
|
1697
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
1698
|
-
<div class="fragment"><div class="line"><a name="
|
|
1700
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00361">361</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1701
|
+
<div class="fragment"><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->getForkedFun(inst);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> }</div></div><!-- fragment -->
|
|
1699
1702
|
</div>
|
|
1700
1703
|
</div>
|
|
1701
1704
|
<a id="a4f457db1cfa0d4f94762a306c0ac3757"></a>
|
|
@@ -1724,8 +1727,8 @@ template<class X , class Y > </div>
|
|
|
1724
1727
|
|
|
1725
1728
|
<p>Get the corresponding Function based on its name. </p>
|
|
1726
1729
|
|
|
1727
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
1728
|
-
<div class="fragment"><div class="line"><a name="
|
|
1730
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00222">222</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
1731
|
+
<div class="fragment"><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  LLVMModuleSet* llvmModuleset = LLVMModuleSet::getLLVMModuleSet();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < llvmModuleset->getModuleNum(); ++i)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> *mod = llvmModuleset->getModule(i);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  fun = mod->getFunction(name);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span>(fun)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> llvmModuleset->getSVFFunction(fun);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><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>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> }</div><div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00081">BasicTypes.h:81</a></div></div>
|
|
1729
1732
|
<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#l00081">SVFBasicTypes.h:81</a></div></div>
|
|
1730
1733
|
<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#l00073">BasicTypes.h:73</a></div></div>
|
|
1731
1734
|
</div><!-- fragment -->
|
|
@@ -1756,8 +1759,8 @@ template<class X , class Y > </div>
|
|
|
1756
1759
|
</div><div class="memdoc">
|
|
1757
1760
|
<p>Get function exit basic block FIXME: this back() here is only valid when UnifyFunctionExitNodes pass is invoked </p>
|
|
1758
1761
|
|
|
1759
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
1760
|
-
<div class="fragment"><div class="line"><a name="
|
|
1762
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00520">520</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1763
|
+
<div class="fragment"><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">return</span> &fun->back();</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> }</div></div><!-- fragment -->
|
|
1761
1764
|
</div>
|
|
1762
1765
|
</div>
|
|
1763
1766
|
<a id="a61b29238f1f32978c7b6aded4b73244d"></a>
|
|
@@ -1797,7 +1800,7 @@ template<class X , class Y > </div>
|
|
|
1797
1800
|
|
|
1798
1801
|
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00060">60</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1799
1802
|
<div class="fragment"><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="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const BasicBlock*></a> visited;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  std::vector<const BasicBlock*> bbVec;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  bbVec.push_back(&fun->getEntryBlock());</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">while</span>(!bbVec.empty())</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  bbVec.pop_back();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  reachableBBs.push_back(bb);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> *dtNode = dt->getNode(const_cast<BasicBlock*>(bb)))</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">for</span> (DomTreeNode::iterator DI = dtNode->begin(), DE = dtNode->end();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  DI != DE; ++DI)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*DI)->getBlock();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  visited.insert(succbb);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  bbVec.push_back(succbb);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div><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#l00074">BasicTypes.h:74</a></div></div>
|
|
1800
|
-
<div class="ttc" id="namespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1803
|
+
<div class="ttc" id="namespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00145">BasicTypes.h:145</a></div></div>
|
|
1801
1804
|
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00101">SVFBasicTypes.h:101</a></div></div>
|
|
1802
1805
|
</div><!-- fragment -->
|
|
1803
1806
|
</div>
|
|
@@ -1828,8 +1831,8 @@ template<class X , class Y > </div>
|
|
|
1828
1831
|
|
|
1829
1832
|
<p>find the unique defined global across multiple modules </p>
|
|
1830
1833
|
|
|
1831
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
1832
|
-
<div class="fragment"><div class="line"><a name="
|
|
1834
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00240">240</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
1835
|
+
<div class="fragment"><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast<GlobalVariable>(val))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()->hasGlobalRep(gvar))</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  val = LLVMModuleSet::getLLVMModuleSet()->getGlobalRep(gvar);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> }</div><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#l00080">BasicTypes.h:80</a></div></div>
|
|
1833
1836
|
</div><!-- fragment -->
|
|
1834
1837
|
</div>
|
|
1835
1838
|
</div>
|
|
@@ -1859,8 +1862,8 @@ template<class X , class Y > </div>
|
|
|
1859
1862
|
|
|
1860
1863
|
<p>Get the position of argument that holds an allocated heap object. </p>
|
|
1861
1864
|
|
|
1862
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
1863
|
-
<div class="fragment"><div class="line"><a name="
|
|
1865
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00143">143</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1866
|
+
<div class="fragment"><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> ExtAPI::getExtAPI()->get_alloc_arg_pos(fun);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> }</div></div><!-- fragment -->
|
|
1864
1867
|
</div>
|
|
1865
1868
|
</div>
|
|
1866
1869
|
<a id="a298b6366145ed871faf3d01420ae5d20"></a>
|
|
@@ -1887,9 +1890,9 @@ template<class X , class Y > </div>
|
|
|
1887
1890
|
</table>
|
|
1888
1891
|
</div><div class="memdoc">
|
|
1889
1892
|
|
|
1890
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
1891
|
-
<div class="fragment"><div class="line"><a name="
|
|
1892
|
-
<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#
|
|
1893
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00148">148</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1894
|
+
<div class="fragment"><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5af986a7698e72272707cc2a466d5ae7">getHeapAllocHoldingArgPosition</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs));</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5af986a7698e72272707cc2a466d5ae7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5af986a7698e72272707cc2a466d5ae7">SVF::SVFUtil::getHeapAllocHoldingArgPosition</a></div><div class="ttdeci">int getHeapAllocHoldingArgPosition(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00153">LLVMUtil.h:153</a></div></div>
|
|
1895
|
+
<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#l00263">SVFUtil.h:263</a></div></div>
|
|
1893
1896
|
</div><!-- fragment -->
|
|
1894
1897
|
</div>
|
|
1895
1898
|
</div>
|
|
@@ -1917,9 +1920,9 @@ template<class X , class Y > </div>
|
|
|
1917
1920
|
</table>
|
|
1918
1921
|
</div><div class="memdoc">
|
|
1919
1922
|
|
|
1920
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
1921
|
-
<div class="fragment"><div class="line"><a name="
|
|
1922
|
-
<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#
|
|
1923
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00153">153</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1924
|
+
<div class="fragment"><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5af986a7698e72272707cc2a466d5ae7">getHeapAllocHoldingArgPosition</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst));</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5af986a7698e72272707cc2a466d5ae7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5af986a7698e72272707cc2a466d5ae7">SVF::SVFUtil::getHeapAllocHoldingArgPosition</a></div><div class="ttdeci">int getHeapAllocHoldingArgPosition(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00153">LLVMUtil.h:153</a></div></div>
|
|
1925
|
+
<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#l00263">SVFUtil.h:263</a></div></div>
|
|
1923
1926
|
</div><!-- fragment -->
|
|
1924
1927
|
</div>
|
|
1925
1928
|
</div>
|
|
@@ -1949,8 +1952,8 @@ template<class X , class Y > </div>
|
|
|
1949
1952
|
|
|
1950
1953
|
<p>Return LLVM callsite given a instruction. </p>
|
|
1951
1954
|
|
|
1952
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
1953
|
-
<div class="fragment"><div class="line"><a name="
|
|
1955
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00214">214</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
1956
|
+
<div class="fragment"><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a38bf8f7eaa18fc5a09711959b5417854">isCallSite</a>(inst) && <span class="stringliteral">"not a callsite?"</span>);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  CallSite cs(const_cast<Instruction*>(inst));</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> cs;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> }</div><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>
|
|
1954
1957
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a38bf8f7eaa18fc5a09711959b5417854"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a38bf8f7eaa18fc5a09711959b5417854">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Value *val)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00198">SVFUtil.h:198</a></div></div>
|
|
1955
1958
|
</div><!-- fragment -->
|
|
1956
1959
|
</div>
|
|
@@ -2055,7 +2058,7 @@ template<class X , class Y > </div>
|
|
|
2055
2058
|
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00214">214</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2056
2059
|
<div class="fragment"><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span> (!curInst->isTerminator())</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst->getNextNode();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(nextInst))</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(nextInst, instList);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  instList.push_back(nextInst);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst->getParent();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &((*it)->front());</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(nextInst))</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(nextInst, instList);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  instList.push_back(nextInst);</div><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>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> }</div><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#l00180">SVFUtil.h:180</a></div></div>
|
|
2057
2060
|
<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#l00074">BasicTypes.h:74</a></div></div>
|
|
2058
|
-
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2061
|
+
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00155">BasicTypes.h:155</a></div></div>
|
|
2059
2062
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2f9959fa23ab4bdc65ca36fbda8c1b70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">SVF::SVFUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const Instruction *> &instList)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00214">LLVMUtil.cpp:214</a></div></div>
|
|
2060
2063
|
<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#l00076">BasicTypes.h:76</a></div></div>
|
|
2061
2064
|
</div><!-- fragment -->
|
|
@@ -2094,7 +2097,7 @@ template<class X , class Y > </div>
|
|
|
2094
2097
|
<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#l00074">BasicTypes.h:74</a></div></div>
|
|
2095
2098
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7e3a8d6cb1715db9518579fb60181d5b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7e3a8d6cb1715db9518579fb60181d5b">SVF::SVFUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector< const Instruction *> &instList)</div><div class="ttdoc">Get the previous instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00241">LLVMUtil.cpp:241</a></div></div>
|
|
2096
2099
|
<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#l00076">BasicTypes.h:76</a></div></div>
|
|
2097
|
-
<div class="ttc" id="namespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2100
|
+
<div class="ttc" id="namespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00158">BasicTypes.h:158</a></div></div>
|
|
2098
2101
|
</div><!-- fragment -->
|
|
2099
2102
|
</div>
|
|
2100
2103
|
</div>
|
|
@@ -2124,8 +2127,8 @@ template<class X , class Y > </div>
|
|
|
2124
2127
|
|
|
2125
2128
|
<p>Get program entry function from module. </p>
|
|
2126
2129
|
|
|
2127
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2128
|
-
<div class="fragment"><div class="line"><a name="
|
|
2130
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00455">455</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2131
|
+
<div class="fragment"><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">for</span> (SVFModule::const_iterator it = svfModule->begin(), eit = svfModule->end(); it != eit; ++it)</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>  <span class="keyword">const</span> SVFFunction *fun = *it;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab87fef7b10465d3e635643fcb93b95a7">isProgEntryFunction</a>(fun))</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">return</span> (fun);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab87fef7b10465d3e635643fcb93b95a7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab87fef7b10465d3e635643fcb93b95a7">SVF::SVFUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00437">LLVMUtil.h:437</a></div></div>
|
|
2129
2132
|
</div><!-- fragment -->
|
|
2130
2133
|
</div>
|
|
2131
2134
|
</div>
|
|
@@ -2165,8 +2168,8 @@ template<class X , class Y > </div>
|
|
|
2165
2168
|
|
|
2166
2169
|
<p>Get program entry function from module. </p>
|
|
2167
2170
|
|
|
2168
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2169
|
-
<div class="fragment"><div class="line"><a name="
|
|
2171
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00443">443</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2172
|
+
<div class="fragment"><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">for</span> (SVFModule::const_iterator it = svfModule->begin(), eit = svfModule->end(); it != eit; ++it)</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keyword">const</span> SVFFunction *fun = *it;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span> (fun->getName()==funName)</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">return</span> fun;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> }</div></div><!-- fragment -->
|
|
2170
2173
|
</div>
|
|
2171
2174
|
</div>
|
|
2172
2175
|
<a id="a9232d260dc83d3a25cd98195ba76567a"></a>
|
|
@@ -2195,13 +2198,13 @@ template<class X , class Y > </div>
|
|
|
2195
2198
|
|
|
2196
2199
|
<p>Get the reference type of heap/static object from an allocation site. </p>
|
|
2197
2200
|
|
|
2198
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2199
|
-
<div class="fragment"><div class="line"><a name="
|
|
2200
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5af986a7698e72272707cc2a466d5ae7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5af986a7698e72272707cc2a466d5ae7">SVF::SVFUtil::getHeapAllocHoldingArgPosition</a></div><div class="ttdeci">int getHeapAllocHoldingArgPosition(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2201
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00242">242</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2202
|
+
<div class="fragment"><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refType = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// Case 1: heap object held by *argument, we should get its element type.</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0bde3acf22383eac5bbf4e2c065a2226">isHeapAllocExtCallViaArg</a>(cs))</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordtype">int</span> argPos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5af986a7698e72272707cc2a466d5ae7">getHeapAllocHoldingArgPosition</a>(cs);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *arg = cs.getArgument(argPos);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *argType = SVFUtil::dyn_cast<PointerType>(arg->getType()))</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  refType = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>>(argType->getElementType());</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">// Case 2: heap/static object held by return value.</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">else</span></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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((<a class="code" href="namespaceSVF_1_1SVFUtil.html#aab8ac16a9a2961f98001ab94aeaedf64">isStaticExtCall</a>(cs) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a24514d87685f2258201f0de15d220bbc">isHeapAllocExtCallViaRet</a>(cs))</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  && <span class="stringliteral">"Must be heap alloc via ret, or static allocation site"</span>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  refType = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>>(cs.getType());</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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(refType && <span class="stringliteral">"Allocated object must be held by a pointer-typed value."</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> refType;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a24514d87685f2258201f0de15d220bbc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a24514d87685f2258201f0de15d220bbc">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00114">LLVMUtil.h:114</a></div></div>
|
|
2203
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5af986a7698e72272707cc2a466d5ae7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5af986a7698e72272707cc2a466d5ae7">SVF::SVFUtil::getHeapAllocHoldingArgPosition</a></div><div class="ttdeci">int getHeapAllocHoldingArgPosition(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00153">LLVMUtil.h:153</a></div></div>
|
|
2201
2204
|
<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>
|
|
2202
2205
|
<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#l00102">BasicTypes.h:102</a></div></div>
|
|
2203
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aab8ac16a9a2961f98001ab94aeaedf64"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aab8ac16a9a2961f98001ab94aeaedf64">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2204
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a0bde3acf22383eac5bbf4e2c065a2226"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0bde3acf22383eac5bbf4e2c065a2226">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
2206
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aab8ac16a9a2961f98001ab94aeaedf64"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aab8ac16a9a2961f98001ab94aeaedf64">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00214">LLVMUtil.h:214</a></div></div>
|
|
2207
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a0bde3acf22383eac5bbf4e2c065a2226"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0bde3acf22383eac5bbf4e2c065a2226">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00125">LLVMUtil.h:125</a></div></div>
|
|
2205
2208
|
<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>
|
|
2206
2209
|
<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#l00075">BasicTypes.h:75</a></div></div>
|
|
2207
2210
|
</div><!-- fragment -->
|
|
@@ -2231,8 +2234,8 @@ template<class X , class Y > </div>
|
|
|
2231
2234
|
</table>
|
|
2232
2235
|
</div><div class="memdoc">
|
|
2233
2236
|
|
|
2234
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2235
|
-
<div class="fragment"><div class="line"><a name="
|
|
2237
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00264">264</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2238
|
+
<div class="fragment"><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>  CallSite cs(const_cast<Instruction*>(inst));</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a642f8284fbb260dd81fb29d5fadf6822">getRefTypeOfHeapAllocOrStatic</a>(cs);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a642f8284fbb260dd81fb29d5fadf6822"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a642f8284fbb260dd81fb29d5fadf6822">SVF::SVFUtil::getRefTypeOfHeapAllocOrStatic</a></div><div class="ttdeci">const PointerType * getRefTypeOfHeapAllocOrStatic(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00264">LLVMUtil.h:264</a></div></div>
|
|
2236
2239
|
</div><!-- fragment -->
|
|
2237
2240
|
</div>
|
|
2238
2241
|
</div>
|
|
@@ -2266,7 +2269,7 @@ template<class X , class Y > </div>
|
|
|
2266
2269
|
<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#l00110">BasicTypes.h:110</a></div></div>
|
|
2267
2270
|
<div class="ttc" id="namespaceSVF_html_a88fd7387fcf16caf70abe265cdcf90b9"><div class="ttname"><a href="namespaceSVF.html#a88fd7387fcf16caf70abe265cdcf90b9">SVF::StringRef</a></div><div class="ttdeci">llvm::StringRef StringRef</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
|
|
2268
2271
|
<div class="ttc" id="namespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
2269
|
-
<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#
|
|
2272
|
+
<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#l00407">LLVMUtil.h:407</a></div></div>
|
|
2270
2273
|
<div class="ttc" id="namespaceSVF_html_a3011dbac9102f044ad5f36a4ad3d4a71"><div class="ttname"><a href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">SVF::NamedMDNode</a></div><div class="ttdeci">llvm::NamedMDNode NamedMDNode</div><div class="ttdoc">LLVM metadata. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00120">BasicTypes.h:120</a></div></div>
|
|
2271
2274
|
</div><!-- fragment -->
|
|
2272
2275
|
</div>
|
|
@@ -2290,7 +2293,7 @@ template<class X , class Y > </div>
|
|
|
2290
2293
|
|
|
2291
2294
|
<p class="definition">Definition at line <a class="el" href="SVFUtil_8cpp_source.html#l00250">250</a> of file <a class="el" href="SVFUtil_8cpp_source.html">SVFUtil.cpp</a>.</p>
|
|
2292
2295
|
<div class="fragment"><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  std::string str;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">/*</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="comment"> * looks like the relevant</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="comment"> */</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = F->getSubprogram())</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> (SP->describes(F))</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  rawstr << <span class="stringliteral">"in line: "</span> << SP->getLine() << <span class="stringliteral">" file: "</span> << SP->getFilename();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> }</div><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#l00094">BasicTypes.h:94</a></div></div>
|
|
2293
|
-
<div class="ttc" id="namespaceSVF_html_a89c7208bfc0b57873dfa574f52050295"><div class="ttname"><a href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">SVF::DISubprogram</a></div><div class="ttdeci">llvm::DISubprogram DISubprogram</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2296
|
+
<div class="ttc" id="namespaceSVF_html_a89c7208bfc0b57873dfa574f52050295"><div class="ttname"><a href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">SVF::DISubprogram</a></div><div class="ttdeci">llvm::DISubprogram DISubprogram</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
|
|
2294
2297
|
</div><!-- fragment -->
|
|
2295
2298
|
</div>
|
|
2296
2299
|
</div>
|
|
@@ -2320,8 +2323,8 @@ template<class X , class Y > </div>
|
|
|
2320
2323
|
|
|
2321
2324
|
<p>Return the task data argument of the parallel_for rountine. </p>
|
|
2322
2325
|
|
|
2323
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2324
|
-
<div class="fragment"><div class="line"><a name="
|
|
2326
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00393">393</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2327
|
+
<div class="fragment"><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->getTaskDataAtHareParForSite(cs);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> }</div></div><!-- fragment -->
|
|
2325
2328
|
</div>
|
|
2326
2329
|
</div>
|
|
2327
2330
|
<a id="a5f3dd36ee492b60039928a86519518a5"></a>
|
|
@@ -2348,8 +2351,8 @@ template<class X , class Y > </div>
|
|
|
2348
2351
|
</table>
|
|
2349
2352
|
</div><div class="memdoc">
|
|
2350
2353
|
|
|
2351
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2352
|
-
<div class="fragment"><div class="line"><a name="
|
|
2354
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00397">397</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2355
|
+
<div class="fragment"><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->getTaskDataAtHareParForSite(inst);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> }</div></div><!-- fragment -->
|
|
2353
2356
|
</div>
|
|
2354
2357
|
</div>
|
|
2355
2358
|
<a id="ab048cbce6e4f5a3d6ff90da3565220ff"></a>
|
|
@@ -2378,8 +2381,8 @@ template<class X , class Y > </div>
|
|
|
2378
2381
|
|
|
2379
2382
|
<p>Return the task function of the parallel_for routine. </p>
|
|
2380
2383
|
|
|
2381
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2382
|
-
<div class="fragment"><div class="line"><a name="
|
|
2384
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00381">381</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2385
|
+
<div class="fragment"><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->getTaskFuncAtHareParForSite(cs);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> }</div></div><!-- fragment -->
|
|
2383
2386
|
</div>
|
|
2384
2387
|
</div>
|
|
2385
2388
|
<a id="a111fa1ecf72adbd2e0ff27e922f0d34a"></a>
|
|
@@ -2406,8 +2409,8 @@ template<class X , class Y > </div>
|
|
|
2406
2409
|
</table>
|
|
2407
2410
|
</div><div class="memdoc">
|
|
2408
2411
|
|
|
2409
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2410
|
-
<div class="fragment"><div class="line"><a name="
|
|
2412
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00385">385</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2413
|
+
<div class="fragment"><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->getTaskFuncAtHareParForSite(inst);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> }</div></div><!-- fragment -->
|
|
2411
2414
|
</div>
|
|
2412
2415
|
</div>
|
|
2413
2416
|
<a id="a973113323e30a01fd904b35ac18d40ce"></a>
|
|
@@ -2433,13 +2436,13 @@ template<class X , class Y > </div>
|
|
|
2433
2436
|
<div class="fragment"><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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>>(inst->getType());</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">isHeapAllocExtCallViaRet</a>(inst))</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* v = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad72b3529e87e71767c6d226821cfddb3">getUniqueUseViaCastInst</a>(inst)){</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* newTy = SVFUtil::dyn_cast<PointerType>(v->getType()))</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  type = newTy;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  }</div><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">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">isHeapAllocExtCallViaArg</a>(inst))</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>  <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordtype">int</span> arg_pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">getHeapAllocHoldingArgPosition</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs));</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</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="l00303"></a><span class="lineno"> 303</span>  type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>>(arg->getType());</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>( <span class="keyword">false</span> && <span class="stringliteral">"not a heap allocation instruction?"</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type && <span class="stringliteral">"not a pointer type?"</span>);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> type->getElementType();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ad72b3529e87e71767c6d226821cfddb3"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ad72b3529e87e71767c6d226821cfddb3">SVF::SVFUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdoc">Return the bitcast instruction which is val&#39;s only use site, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00271">LLVMUtil.cpp:271</a></div></div>
|
|
2434
2437
|
<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>
|
|
2435
2438
|
<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#l00102">BasicTypes.h:102</a></div></div>
|
|
2436
|
-
<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#
|
|
2437
|
-
<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#
|
|
2438
|
-
<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#
|
|
2439
|
-
<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#
|
|
2440
|
-
<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#
|
|
2441
|
-
<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#
|
|
2442
|
-
<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#
|
|
2439
|
+
<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#l00263">BasicTypes.h:263</a></div></div>
|
|
2440
|
+
<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#l00120">LLVMUtil.h:120</a></div></div>
|
|
2441
|
+
<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#l00108">LLVMUtil.h:108</a></div></div>
|
|
2442
|
+
<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#l00263">SVFUtil.h:263</a></div></div>
|
|
2443
|
+
<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#l00143">LLVMUtil.h:143</a></div></div>
|
|
2444
|
+
<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#l00214">SVFUtil.h:214</a></div></div>
|
|
2445
|
+
<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#l00254">BasicTypes.h:254</a></div></div>
|
|
2443
2446
|
<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>
|
|
2444
2447
|
<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#l00075">BasicTypes.h:75</a></div></div>
|
|
2445
2448
|
</div><!-- fragment -->
|
|
@@ -2464,7 +2467,7 @@ template<class X , class Y > </div>
|
|
|
2464
2467
|
<p>Helper method to get the size of the type from target data layout. </p>
|
|
2465
2468
|
|
|
2466
2469
|
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00415">415</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2467
|
-
<div class="fragment"><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">if</span>(type->isSized())</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#abe0dde753f9f79e30296208eb4d97eed">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()->getMainLLVMModule())->getTypeStoreSize(const_cast<Type*>(type));</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> }</div><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#
|
|
2470
|
+
<div class="fragment"><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">if</span>(type->isSized())</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#abe0dde753f9f79e30296208eb4d97eed">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()->getMainLLVMModule())->getTypeStoreSize(const_cast<Type*>(type));</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> }</div><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#l00633">LLVMUtil.h:633</a></div></div>
|
|
2468
2471
|
</div><!-- fragment -->
|
|
2469
2472
|
</div>
|
|
2470
2473
|
</div>
|
|
@@ -2497,7 +2500,7 @@ template<class X , class Y > </div>
|
|
|
2497
2500
|
|
|
2498
2501
|
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00425">425</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2499
2502
|
<div class="fragment"><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> </div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#aef8af3d6e4b75a3e3e108b636a48fbd3">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1SVFUtil.html#abe0dde753f9f79e30296208eb4d97eed">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()->getMainLLVMModule())->getStructLayout( const_cast<StructType *>(sty) );</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span>(sty->isOpaque())</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">return</span> stTySL->getElementOffset(field_idx);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_aef8af3d6e4b75a3e3e108b636a48fbd3"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#aef8af3d6e4b75a3e3e108b636a48fbd3">StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00019">BasicTypes.h:19</a></div></div>
|
|
2500
|
-
<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#
|
|
2503
|
+
<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#l00633">LLVMUtil.h:633</a></div></div>
|
|
2501
2504
|
</div><!-- fragment -->
|
|
2502
2505
|
</div>
|
|
2503
2506
|
</div>
|
|
@@ -2524,9 +2527,9 @@ template<class X , class Y > </div>
|
|
|
2524
2527
|
<div class="fragment"><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>>(val->getType());</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type && <span class="stringliteral">"this value should be a pointer type!"</span>);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a> *IT = SVFUtil::dyn_cast<IntegerType>(type->getPointerElementType())){</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span> (IT->getBitWidth() == 8 && val->getNumUses()==1){</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">Use</a> *u = &*val->use_begin();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="SVF-FE_2BasicTypes_8h.html#ab8cddf2ff868c0a9ae99483640c9ecef">BitCastInst</a>>(u->getUser());</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> }</div><div class="ttc" id="namespaceSVF_html_a334998718813a19a7697daf4ba282faf"><div class="ttname"><a href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">SVF::Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
|
|
2525
2528
|
<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>
|
|
2526
2529
|
<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#l00102">BasicTypes.h:102</a></div></div>
|
|
2527
|
-
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_ab8cddf2ff868c0a9ae99483640c9ecef"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#ab8cddf2ff868c0a9ae99483640c9ecef">BitCastInst</a></div><div class="ttdeci">llvm::BitCastInst BitCastInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
2530
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_ab8cddf2ff868c0a9ae99483640c9ecef"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#ab8cddf2ff868c0a9ae99483640c9ecef">BitCastInst</a></div><div class="ttdeci">llvm::BitCastInst BitCastInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00033">BasicTypes.h:33</a></div></div>
|
|
2528
2531
|
<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>
|
|
2529
|
-
<div class="ttc" id="namespaceSVF_html_a3d9e7f32dc17fe8d40f8d6a011403b91"><div class="ttname"><a href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">SVF::IntegerType</a></div><div class="ttdeci">llvm::IntegerType IntegerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2532
|
+
<div class="ttc" id="namespaceSVF_html_a3d9e7f32dc17fe8d40f8d6a011403b91"><div class="ttname"><a href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">SVF::IntegerType</a></div><div class="ttdeci">llvm::IntegerType IntegerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00163">BasicTypes.h:163</a></div></div>
|
|
2530
2533
|
</div><!-- fragment -->
|
|
2531
2534
|
</div>
|
|
2532
2535
|
</div>
|
|
@@ -2621,8 +2624,8 @@ template<typename Key , typename KeySet > </div>
|
|
|
2621
2624
|
|
|
2622
2625
|
<p>Inserts an element into a Set/CondSet (with ::insert). </p>
|
|
2623
2626
|
|
|
2624
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
2625
|
-
<div class="fragment"><div class="line"><a name="
|
|
2627
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00301">301</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
2628
|
+
<div class="fragment"><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  keySet.insert(key);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> }</div></div><!-- fragment -->
|
|
2626
2629
|
</div>
|
|
2627
2630
|
</div>
|
|
2628
2631
|
<a id="a4f75b8313eb2b1e5a4c798a01cb99471"></a>
|
|
@@ -2661,8 +2664,8 @@ template<typename Key , typename KeySet > </div>
|
|
|
2661
2664
|
|
|
2662
2665
|
<p>Inserts a NodeID into a NodeBS. </p>
|
|
2663
2666
|
|
|
2664
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
2665
|
-
<div class="fragment"><div class="line"><a name="
|
|
2667
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00307">307</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
2668
|
+
<div class="fragment"><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  keySet.set(key);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> }</div></div><!-- fragment -->
|
|
2666
2669
|
</div>
|
|
2667
2670
|
</div>
|
|
2668
2671
|
<a id="a5c8cbc986cccb9d84f87aae162df3737"></a>
|
|
@@ -2751,8 +2754,8 @@ template<class X , class Y > </div>
|
|
|
2751
2754
|
|
|
2752
2755
|
<p>Return true if this is a barrier wait call. </p>
|
|
2753
2756
|
|
|
2754
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2755
|
-
<div class="fragment"><div class="line"><a name="
|
|
2757
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00345">345</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2758
|
+
<div class="fragment"><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="keywordflow">return</span> ThreadAPI::getThreadAPI()->isTDBarWait(cs);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> }</div></div><!-- fragment -->
|
|
2756
2759
|
</div>
|
|
2757
2760
|
</div>
|
|
2758
2761
|
<a id="a0a7fc57e1f5cec705e310a4bb72cba94"></a>
|
|
@@ -2779,8 +2782,8 @@ template<class X , class Y > </div>
|
|
|
2779
2782
|
</table>
|
|
2780
2783
|
</div><div class="memdoc">
|
|
2781
2784
|
|
|
2782
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2783
|
-
<div class="fragment"><div class="line"><a name="
|
|
2785
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00349">349</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2786
|
+
<div class="fragment"><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isTDBarWait(inst);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> }</div></div><!-- fragment -->
|
|
2784
2787
|
</div>
|
|
2785
2788
|
</div>
|
|
2786
2789
|
<a id="a43c9072210a5f5baeafe36da03f2fde2"></a>
|
|
@@ -2807,11 +2810,41 @@ template<class X , class Y > </div>
|
|
|
2807
2810
|
</table>
|
|
2808
2811
|
</div><div class="memdoc">
|
|
2809
2812
|
|
|
2810
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2811
|
-
<div class="fragment"><div class="line"><a name="
|
|
2813
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00612">612</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2814
|
+
<div class="fragment"><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">if</span>((constExpr->getOpcode() >= Instruction::BinaryOpsBegin) && (constExpr->getOpcode() <= Instruction::BinaryOpsEnd))</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> }</div><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#l00027">BasicTypes.h:27</a></div></div>
|
|
2812
2815
|
</div><!-- fragment -->
|
|
2813
2816
|
</div>
|
|
2814
2817
|
</div>
|
|
2818
|
+
<a id="ac0df4ee0bf78167dd9461227b5cce7af"></a>
|
|
2819
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ac0df4ee0bf78167dd9461227b5cce7af">◆ </a></span>isBlackholeSym()</h2>
|
|
2820
|
+
|
|
2821
|
+
<div class="memitem">
|
|
2822
|
+
<div class="memproto">
|
|
2823
|
+
<table class="mlabels">
|
|
2824
|
+
<tr>
|
|
2825
|
+
<td class="mlabels-left">
|
|
2826
|
+
<table class="memname">
|
|
2827
|
+
<tr>
|
|
2828
|
+
<td class="memname">bool SVF::SVFUtil::isBlackholeSym </td>
|
|
2829
|
+
<td>(</td>
|
|
2830
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
2831
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
2832
|
+
<td></td>
|
|
2833
|
+
</tr>
|
|
2834
|
+
</table>
|
|
2835
|
+
</td>
|
|
2836
|
+
<td class="mlabels-right">
|
|
2837
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
2838
|
+
</tr>
|
|
2839
|
+
</table>
|
|
2840
|
+
</div><div class="memdoc">
|
|
2841
|
+
|
|
2842
|
+
<p>Check whether this value is a black hole. </p>
|
|
2843
|
+
|
|
2844
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00063">63</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2845
|
+
<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> (SVFUtil::isa<UndefValue>(val));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div></div><!-- fragment -->
|
|
2846
|
+
</div>
|
|
2847
|
+
</div>
|
|
2815
2848
|
<a id="a2e08ce822223842fa6a73fd659b1a526"></a>
|
|
2816
2849
|
<h2 class="memtitle"><span class="permalink"><a href="#a2e08ce822223842fa6a73fd659b1a526">◆ </a></span>isCallSite() <span class="overload">[1/2]</span></h2>
|
|
2817
2850
|
|
|
@@ -2898,8 +2931,8 @@ template<class X , class Y > </div>
|
|
|
2898
2931
|
</table>
|
|
2899
2932
|
</div><div class="memdoc">
|
|
2900
2933
|
|
|
2901
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2902
|
-
<div class="fragment"><div class="line"><a name="
|
|
2934
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00568">568</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2935
|
+
<div class="fragment"><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::BitCast)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> }</div><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#l00027">BasicTypes.h:27</a></div></div>
|
|
2903
2936
|
</div><!-- fragment -->
|
|
2904
2937
|
</div>
|
|
2905
2938
|
</div>
|
|
@@ -2927,8 +2960,8 @@ template<class X , class Y > </div>
|
|
|
2927
2960
|
</table>
|
|
2928
2961
|
</div><div class="memdoc">
|
|
2929
2962
|
|
|
2930
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2931
|
-
<div class="fragment"><div class="line"><a name="
|
|
2963
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00602">602</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2964
|
+
<div class="fragment"><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> {</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::ICmp || constExpr->getOpcode() == Instruction::FCmp)</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> }</div><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#l00027">BasicTypes.h:27</a></div></div>
|
|
2932
2965
|
</div><!-- fragment -->
|
|
2933
2966
|
</div>
|
|
2934
2967
|
</div>
|
|
@@ -2958,8 +2991,8 @@ template<class X , class Y > </div>
|
|
|
2958
2991
|
|
|
2959
2992
|
<p>Return true if the value refers to constant data, e.g., i32 0. </p>
|
|
2960
2993
|
|
|
2961
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2962
|
-
<div class="fragment"><div class="line"><a name="
|
|
2994
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00407">407</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2995
|
+
<div class="fragment"><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">return</span> SVFUtil::isa<ConstantData>(val)</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  || SVFUtil::isa<ConstantAggregate>(val)</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  || SVFUtil::isa<MetadataAsValue>(val)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  || SVFUtil::isa<BlockAddress>(val);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> }</div></div><!-- fragment -->
|
|
2963
2996
|
</div>
|
|
2964
2997
|
</div>
|
|
2965
2998
|
<a id="a6d268e8d588717601345be3a911a7625"></a>
|
|
@@ -2984,7 +3017,7 @@ template<class X , class Y > </div>
|
|
|
2984
3017
|
|
|
2985
3018
|
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00126">126</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2986
3019
|
<div class="fragment"><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span>(fun->hasAddressTaken())</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">isProgEntryFunction</a>(fun))</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">for</span> (Value::const_user_iterator i = fun->user_begin(), e = fun->user_end(); i != e; ++i)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(*i))</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> <span class="keyword">false</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">if</span> (LLVMModuleSet::getLLVMModuleSet()->hasDeclaration(fun))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFModule.html#acfd1ffb4696136de493843786c799e6b">SVFModule::FunctionSetType</a> &decls = LLVMModuleSet::getLLVMModuleSet()->getDeclaration(fun);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">for</span> (SVFModule::FunctionSetType::const_iterator it = decls.begin(),</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  eit = decls.end(); it != eit; ++it)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *decl = (*it)->getLLVMFun();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(decl->hasAddressTaken())</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">for</span> (Value::const_user_iterator i = decl->user_begin(), e = decl->user_end(); i != e; ++i)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(*i))</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00193">SVFUtil.h:193</a></div></div>
|
|
2987
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2c97c2b79b795465490512e267a9309b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">SVF::SVFUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const SVFFunction *fun)</div><div class="ttdoc">Program entry function e.g. main. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3020
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2c97c2b79b795465490512e267a9309b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">SVF::SVFUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const SVFFunction *fun)</div><div class="ttdoc">Program entry function e.g. main. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00432">LLVMUtil.h:432</a></div></div>
|
|
2988
3021
|
<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#l00073">BasicTypes.h:73</a></div></div>
|
|
2989
3022
|
<div class="ttc" id="classSVF_1_1SVFModule_html_acfd1ffb4696136de493843786c799e6b"><div class="ttname"><a href="classSVF_1_1SVFModule.html#acfd1ffb4696136de493843786c799e6b">SVF::SVFModule::FunctionSetType</a></div><div class="ttdeci">std::vector< const SVFFunction * > FunctionSetType</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00044">SVFModule.h:44</a></div></div>
|
|
2990
3023
|
</div><!-- fragment -->
|
|
@@ -3014,9 +3047,9 @@ template<class X , class Y > </div>
|
|
|
3014
3047
|
</table>
|
|
3015
3048
|
</div><div class="memdoc">
|
|
3016
3049
|
|
|
3017
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3018
|
-
<div class="fragment"><div class="line"><a name="
|
|
3019
|
-
<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#
|
|
3050
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00188">188</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3051
|
+
<div class="fragment"><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a3495236e22e4bc6404b6ac352060439c">isDeallocExtFun</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs));</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a3495236e22e4bc6404b6ac352060439c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a3495236e22e4bc6404b6ac352060439c">SVF::SVFUtil::isDeallocExtFun</a></div><div class="ttdeci">bool isDeallocExtFun(const SVFFunction *fun)</div><div class="ttdoc">Return true if the call is a heap dealloc or not. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00183">LLVMUtil.h:183</a></div></div>
|
|
3052
|
+
<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#l00263">SVFUtil.h:263</a></div></div>
|
|
3020
3053
|
</div><!-- fragment -->
|
|
3021
3054
|
</div>
|
|
3022
3055
|
</div>
|
|
@@ -3044,9 +3077,9 @@ template<class X , class Y > </div>
|
|
|
3044
3077
|
</table>
|
|
3045
3078
|
</div><div class="memdoc">
|
|
3046
3079
|
|
|
3047
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3048
|
-
<div class="fragment"><div class="line"><a name="
|
|
3049
|
-
<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#
|
|
3080
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00193">193</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3081
|
+
<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a3495236e22e4bc6404b6ac352060439c">isDeallocExtFun</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst));</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a3495236e22e4bc6404b6ac352060439c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a3495236e22e4bc6404b6ac352060439c">SVF::SVFUtil::isDeallocExtFun</a></div><div class="ttdeci">bool isDeallocExtFun(const SVFFunction *fun)</div><div class="ttdoc">Return true if the call is a heap dealloc or not. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00183">LLVMUtil.h:183</a></div></div>
|
|
3082
|
+
<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#l00263">SVFUtil.h:263</a></div></div>
|
|
3050
3083
|
</div><!-- fragment -->
|
|
3051
3084
|
</div>
|
|
3052
3085
|
</div>
|
|
@@ -3077,8 +3110,8 @@ template<class X , class Y > </div>
|
|
|
3077
3110
|
<p>Return true if the call is a heap dealloc or not. </p>
|
|
3078
3111
|
<p>note that this function is not suppose to be used externally </p>
|
|
3079
3112
|
|
|
3080
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3081
|
-
<div class="fragment"><div class="line"><a name="
|
|
3113
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00183">183</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3114
|
+
<div class="fragment"><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> fun && (ExtAPI::getExtAPI()->is_dealloc(fun));</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> }</div></div><!-- fragment -->
|
|
3082
3115
|
</div>
|
|
3083
3116
|
</div>
|
|
3084
3117
|
<a id="a22ef185e767ff76c098e75126c885400"></a>
|
|
@@ -3106,8 +3139,8 @@ template<class X , class Y > </div>
|
|
|
3106
3139
|
</div><div class="memdoc">
|
|
3107
3140
|
<p>Return true if the call is an external call (external library in function summary table) If the libary function is redefined in the application code (e.g., memcpy), it will return false and will not be treated as an external call. </p>
|
|
3108
3141
|
|
|
3109
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3110
|
-
<div class="fragment"><div class="line"><a name="
|
|
3142
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00072">72</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3143
|
+
<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> fun && ExtAPI::getExtAPI()->is_ext(fun);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div></div><!-- fragment -->
|
|
3111
3144
|
</div>
|
|
3112
3145
|
</div>
|
|
3113
3146
|
<a id="aad27a96075234ad2182a84e0e9d31a45"></a>
|
|
@@ -3134,9 +3167,9 @@ template<class X , class Y > </div>
|
|
|
3134
3167
|
</table>
|
|
3135
3168
|
</div><div class="memdoc">
|
|
3136
3169
|
|
|
3137
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3138
|
-
<div class="fragment"><div class="line"><a name="
|
|
3139
|
-
<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#
|
|
3170
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00077">77</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3171
|
+
<div class="fragment"><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#af3e5fd7ffce966575ebf7c7e653b0919">isExtCall</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs));</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af3e5fd7ffce966575ebf7c7e653b0919"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af3e5fd7ffce966575ebf7c7e653b0919">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00082">LLVMUtil.h:82</a></div></div>
|
|
3172
|
+
<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#l00263">SVFUtil.h:263</a></div></div>
|
|
3140
3173
|
</div><!-- fragment -->
|
|
3141
3174
|
</div>
|
|
3142
3175
|
</div>
|
|
@@ -3164,9 +3197,9 @@ template<class X , class Y > </div>
|
|
|
3164
3197
|
</table>
|
|
3165
3198
|
</div><div class="memdoc">
|
|
3166
3199
|
|
|
3167
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3168
|
-
<div class="fragment"><div class="line"><a name="
|
|
3169
|
-
<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#
|
|
3200
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00082">82</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3201
|
+
<div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#af3e5fd7ffce966575ebf7c7e653b0919">isExtCall</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af3e5fd7ffce966575ebf7c7e653b0919"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af3e5fd7ffce966575ebf7c7e653b0919">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00082">LLVMUtil.h:82</a></div></div>
|
|
3202
|
+
<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#l00263">SVFUtil.h:263</a></div></div>
|
|
3170
3203
|
</div><!-- fragment -->
|
|
3171
3204
|
</div>
|
|
3172
3205
|
</div>
|
|
@@ -3196,8 +3229,8 @@ template<class X , class Y > </div>
|
|
|
3196
3229
|
|
|
3197
3230
|
<p>Return corresponding constant expression, otherwise return nullptr. </p>
|
|
3198
3231
|
|
|
3199
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3200
|
-
<div class="fragment"><div class="line"><a name="
|
|
3232
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00538">538</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3233
|
+
<div class="fragment"><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::GetElementPtr)</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> }</div><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#l00027">BasicTypes.h:27</a></div></div>
|
|
3201
3234
|
</div><!-- fragment -->
|
|
3202
3235
|
</div>
|
|
3203
3236
|
</div>
|
|
@@ -3226,8 +3259,8 @@ template<class X , class Y > </div>
|
|
|
3226
3259
|
</div><div class="memdoc">
|
|
3227
3260
|
<p>Return true if this is a hare_parallel_for call </p>
|
|
3228
3261
|
|
|
3229
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3230
|
-
<div class="fragment"><div class="line"><a name="
|
|
3262
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00285">285</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3263
|
+
<div class="fragment"><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isHareParFor(cs);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> }</div></div><!-- fragment -->
|
|
3231
3264
|
</div>
|
|
3232
3265
|
</div>
|
|
3233
3266
|
<a id="a9b37c6fe1232ebc35ffa052bd392e2e8"></a>
|
|
@@ -3254,8 +3287,8 @@ template<class X , class Y > </div>
|
|
|
3254
3287
|
</table>
|
|
3255
3288
|
</div><div class="memdoc">
|
|
3256
3289
|
|
|
3257
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3258
|
-
<div class="fragment"><div class="line"><a name="
|
|
3290
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00289">289</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3291
|
+
<div class="fragment"><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isHareParFor(inst);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> }</div></div><!-- fragment -->
|
|
3259
3292
|
</div>
|
|
3260
3293
|
</div>
|
|
3261
3294
|
<a id="a93ac673b885633849fa484938405ca75"></a>
|
|
@@ -3282,9 +3315,9 @@ template<class X , class Y > </div>
|
|
|
3282
3315
|
</table>
|
|
3283
3316
|
</div><div class="memdoc">
|
|
3284
3317
|
|
|
3285
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3286
|
-
<div class="fragment"><div class="line"><a name="
|
|
3287
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a0bde3acf22383eac5bbf4e2c065a2226"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0bde3acf22383eac5bbf4e2c065a2226">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3318
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00130">130</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3319
|
+
<div class="fragment"><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a24514d87685f2258201f0de15d220bbc">isHeapAllocExtCallViaRet</a>(cs) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0bde3acf22383eac5bbf4e2c065a2226">isHeapAllocExtCallViaArg</a>(cs);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a24514d87685f2258201f0de15d220bbc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a24514d87685f2258201f0de15d220bbc">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00114">LLVMUtil.h:114</a></div></div>
|
|
3320
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a0bde3acf22383eac5bbf4e2c065a2226"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0bde3acf22383eac5bbf4e2c065a2226">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00125">LLVMUtil.h:125</a></div></div>
|
|
3288
3321
|
</div><!-- fragment -->
|
|
3289
3322
|
</div>
|
|
3290
3323
|
</div>
|
|
@@ -3312,9 +3345,9 @@ template<class X , class Y > </div>
|
|
|
3312
3345
|
</table>
|
|
3313
3346
|
</div><div class="memdoc">
|
|
3314
3347
|
|
|
3315
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3316
|
-
<div class="fragment"><div class="line"><a name="
|
|
3317
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a0bde3acf22383eac5bbf4e2c065a2226"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0bde3acf22383eac5bbf4e2c065a2226">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3348
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00135">135</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3349
|
+
<div class="fragment"><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="namespaceSVF_1_1SVFUtil.html#a24514d87685f2258201f0de15d220bbc">isHeapAllocExtCallViaRet</a>(inst) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0bde3acf22383eac5bbf4e2c065a2226">isHeapAllocExtCallViaArg</a>(inst);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a24514d87685f2258201f0de15d220bbc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a24514d87685f2258201f0de15d220bbc">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00114">LLVMUtil.h:114</a></div></div>
|
|
3350
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a0bde3acf22383eac5bbf4e2c065a2226"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0bde3acf22383eac5bbf4e2c065a2226">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00125">LLVMUtil.h:125</a></div></div>
|
|
3318
3351
|
</div><!-- fragment -->
|
|
3319
3352
|
</div>
|
|
3320
3353
|
</div>
|
|
@@ -3342,9 +3375,9 @@ template<class X , class Y > </div>
|
|
|
3342
3375
|
</table>
|
|
3343
3376
|
</div><div class="memdoc">
|
|
3344
3377
|
|
|
3345
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3346
|
-
<div class="fragment"><div class="line"><a name="
|
|
3347
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab4a69173f50ebe48e69103befe516245"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab4a69173f50ebe48e69103befe516245">SVF::SVFUtil::isHeapAllocExtFunViaArg</a></div><div class="ttdeci">bool isHeapAllocExtFunViaArg(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3378
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00120">120</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3379
|
+
<div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab4a69173f50ebe48e69103befe516245">isHeapAllocExtFunViaArg</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs));</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><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#l00263">SVFUtil.h:263</a></div></div>
|
|
3380
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab4a69173f50ebe48e69103befe516245"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab4a69173f50ebe48e69103befe516245">SVF::SVFUtil::isHeapAllocExtFunViaArg</a></div><div class="ttdeci">bool isHeapAllocExtFunViaArg(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00102">LLVMUtil.h:102</a></div></div>
|
|
3348
3381
|
</div><!-- fragment -->
|
|
3349
3382
|
</div>
|
|
3350
3383
|
</div>
|
|
@@ -3372,9 +3405,9 @@ template<class X , class Y > </div>
|
|
|
3372
3405
|
</table>
|
|
3373
3406
|
</div><div class="memdoc">
|
|
3374
3407
|
|
|
3375
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3376
|
-
<div class="fragment"><div class="line"><a name="
|
|
3377
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab4a69173f50ebe48e69103befe516245"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab4a69173f50ebe48e69103befe516245">SVF::SVFUtil::isHeapAllocExtFunViaArg</a></div><div class="ttdeci">bool isHeapAllocExtFunViaArg(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3408
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00125">125</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3409
|
+
<div class="fragment"><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab4a69173f50ebe48e69103befe516245">isHeapAllocExtFunViaArg</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst));</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> }</div><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#l00263">SVFUtil.h:263</a></div></div>
|
|
3410
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab4a69173f50ebe48e69103befe516245"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab4a69173f50ebe48e69103befe516245">SVF::SVFUtil::isHeapAllocExtFunViaArg</a></div><div class="ttdeci">bool isHeapAllocExtFunViaArg(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00102">LLVMUtil.h:102</a></div></div>
|
|
3378
3411
|
</div><!-- fragment -->
|
|
3379
3412
|
</div>
|
|
3380
3413
|
</div>
|
|
@@ -3404,9 +3437,9 @@ template<class X , class Y > </div>
|
|
|
3404
3437
|
|
|
3405
3438
|
<p>interfaces to be used externally </p>
|
|
3406
3439
|
|
|
3407
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3408
|
-
<div class="fragment"><div class="line"><a name="
|
|
3409
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a19b96a872d9096037f20e25122e469ea"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a19b96a872d9096037f20e25122e469ea">SVF::SVFUtil::isHeapAllocExtFunViaRet</a></div><div class="ttdeci">bool isHeapAllocExtFunViaRet(const SVFFunction *fun)</div><div class="ttdoc">Return true if the call is a heap allocator/reallocator. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3440
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00108">108</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3441
|
+
<div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">bool</span> isPtrTy = cs.getInstruction()->getType()->isPointerTy();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> isPtrTy && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a19b96a872d9096037f20e25122e469ea">isHeapAllocExtFunViaRet</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> }</div><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#l00263">SVFUtil.h:263</a></div></div>
|
|
3442
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a19b96a872d9096037f20e25122e469ea"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a19b96a872d9096037f20e25122e469ea">SVF::SVFUtil::isHeapAllocExtFunViaRet</a></div><div class="ttdeci">bool isHeapAllocExtFunViaRet(const SVFFunction *fun)</div><div class="ttdoc">Return true if the call is a heap allocator/reallocator. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00097">LLVMUtil.h:97</a></div></div>
|
|
3410
3443
|
</div><!-- fragment -->
|
|
3411
3444
|
</div>
|
|
3412
3445
|
</div>
|
|
@@ -3434,9 +3467,9 @@ template<class X , class Y > </div>
|
|
|
3434
3467
|
</table>
|
|
3435
3468
|
</div><div class="memdoc">
|
|
3436
3469
|
|
|
3437
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3438
|
-
<div class="fragment"><div class="line"><a name="
|
|
3439
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a19b96a872d9096037f20e25122e469ea"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a19b96a872d9096037f20e25122e469ea">SVF::SVFUtil::isHeapAllocExtFunViaRet</a></div><div class="ttdeci">bool isHeapAllocExtFunViaRet(const SVFFunction *fun)</div><div class="ttdoc">Return true if the call is a heap allocator/reallocator. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3470
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00114">114</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3471
|
+
<div class="fragment"><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>  <span class="keywordtype">bool</span> isPtrTy = inst->getType()->isPointerTy();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> isPtrTy && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a19b96a872d9096037f20e25122e469ea">isHeapAllocExtFunViaRet</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst));</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><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#l00263">SVFUtil.h:263</a></div></div>
|
|
3472
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a19b96a872d9096037f20e25122e469ea"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a19b96a872d9096037f20e25122e469ea">SVF::SVFUtil::isHeapAllocExtFunViaRet</a></div><div class="ttdeci">bool isHeapAllocExtFunViaRet(const SVFFunction *fun)</div><div class="ttdoc">Return true if the call is a heap allocator/reallocator. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00097">LLVMUtil.h:97</a></div></div>
|
|
3440
3473
|
</div><!-- fragment -->
|
|
3441
3474
|
</div>
|
|
3442
3475
|
</div>
|
|
@@ -3464,8 +3497,8 @@ template<class X , class Y > </div>
|
|
|
3464
3497
|
</table>
|
|
3465
3498
|
</div><div class="memdoc">
|
|
3466
3499
|
|
|
3467
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3468
|
-
<div class="fragment"><div class="line"><a name="
|
|
3500
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00102">102</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3501
|
+
<div class="fragment"><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>  <span class="keywordflow">return</span> fun && ExtAPI::getExtAPI()->is_arg_alloc(fun);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div></div><!-- fragment -->
|
|
3469
3502
|
</div>
|
|
3470
3503
|
</div>
|
|
3471
3504
|
<a id="a19b96a872d9096037f20e25122e469ea"></a>
|
|
@@ -3495,8 +3528,8 @@ template<class X , class Y > </div>
|
|
|
3495
3528
|
<p>Return true if the call is a heap allocator/reallocator. </p>
|
|
3496
3529
|
<p>note that these two functions are not suppose to be used externally </p>
|
|
3497
3530
|
|
|
3498
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3499
|
-
<div class="fragment"><div class="line"><a name="
|
|
3531
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00097">97</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3532
|
+
<div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> fun && (ExtAPI::getExtAPI()->is_alloc(fun)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  || ExtAPI::getExtAPI()->is_realloc(fun));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> }</div></div><!-- fragment -->
|
|
3500
3533
|
</div>
|
|
3501
3534
|
</div>
|
|
3502
3535
|
<a id="a61ed4bb80d88b0f8dbc02535c224fdfb"></a>
|
|
@@ -3525,9 +3558,9 @@ template<class X , class Y > </div>
|
|
|
3525
3558
|
|
|
3526
3559
|
<p>Return true if the call is a static global call. </p>
|
|
3527
3560
|
|
|
3528
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3529
|
-
<div class="fragment"><div class="line"><a name="
|
|
3530
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aab8ac16a9a2961f98001ab94aeaedf64"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aab8ac16a9a2961f98001ab94aeaedf64">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3561
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00223">223</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3562
|
+
<div class="fragment"><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aab8ac16a9a2961f98001ab94aeaedf64">isStaticExtCall</a>(cs) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a1ebbf43e294c3f94a2a7d5c56759bbba">isHeapAllocExtCall</a>(cs);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a1ebbf43e294c3f94a2a7d5c56759bbba"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1ebbf43e294c3f94a2a7d5c56759bbba">SVF::SVFUtil::isHeapAllocExtCall</a></div><div class="ttdeci">bool isHeapAllocExtCall(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00135">LLVMUtil.h:135</a></div></div>
|
|
3563
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aab8ac16a9a2961f98001ab94aeaedf64"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aab8ac16a9a2961f98001ab94aeaedf64">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00214">LLVMUtil.h:214</a></div></div>
|
|
3531
3564
|
</div><!-- fragment -->
|
|
3532
3565
|
</div>
|
|
3533
3566
|
</div>
|
|
@@ -3555,9 +3588,9 @@ template<class X , class Y > </div>
|
|
|
3555
3588
|
</table>
|
|
3556
3589
|
</div><div class="memdoc">
|
|
3557
3590
|
|
|
3558
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3559
|
-
<div class="fragment"><div class="line"><a name="
|
|
3560
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aab8ac16a9a2961f98001ab94aeaedf64"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aab8ac16a9a2961f98001ab94aeaedf64">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3591
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00228">228</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3592
|
+
<div class="fragment"><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aab8ac16a9a2961f98001ab94aeaedf64">isStaticExtCall</a>(inst) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a1ebbf43e294c3f94a2a7d5c56759bbba">isHeapAllocExtCall</a>(inst);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a1ebbf43e294c3f94a2a7d5c56759bbba"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1ebbf43e294c3f94a2a7d5c56759bbba">SVF::SVFUtil::isHeapAllocExtCall</a></div><div class="ttdeci">bool isHeapAllocExtCall(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00135">LLVMUtil.h:135</a></div></div>
|
|
3593
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aab8ac16a9a2961f98001ab94aeaedf64"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aab8ac16a9a2961f98001ab94aeaedf64">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00214">LLVMUtil.h:214</a></div></div>
|
|
3561
3594
|
</div><!-- fragment -->
|
|
3562
3595
|
</div>
|
|
3563
3596
|
</div>
|
|
@@ -3585,8 +3618,8 @@ template<class X , class Y > </div>
|
|
|
3585
3618
|
</table>
|
|
3586
3619
|
</div><div class="memdoc">
|
|
3587
3620
|
|
|
3588
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3589
|
-
<div class="fragment"><div class="line"><a name="
|
|
3621
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00548">548</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3622
|
+
<div class="fragment"><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::IntToPtr)</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> }</div><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#l00027">BasicTypes.h:27</a></div></div>
|
|
3590
3623
|
</div><!-- fragment -->
|
|
3591
3624
|
</div>
|
|
3592
3625
|
</div>
|
|
@@ -3698,8 +3731,8 @@ template<class X , class Y > </div>
|
|
|
3698
3731
|
</div><div class="memdoc">
|
|
3699
3732
|
<p>Return true if this is a lock acquire call </p>
|
|
3700
3733
|
|
|
3701
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3702
|
-
<div class="fragment"><div class="line"><a name="
|
|
3734
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00321">321</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3735
|
+
<div class="fragment"><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isTDAcquire(cs);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> }</div></div><!-- fragment -->
|
|
3703
3736
|
</div>
|
|
3704
3737
|
</div>
|
|
3705
3738
|
<a id="a343dae805a34d102b9c1b96f173468df"></a>
|
|
@@ -3726,8 +3759,8 @@ template<class X , class Y > </div>
|
|
|
3726
3759
|
</table>
|
|
3727
3760
|
</div><div class="memdoc">
|
|
3728
3761
|
|
|
3729
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3730
|
-
<div class="fragment"><div class="line"><a name="
|
|
3762
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00325">325</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3763
|
+
<div class="fragment"><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isTDAcquire(inst);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> }</div></div><!-- fragment -->
|
|
3731
3764
|
</div>
|
|
3732
3765
|
</div>
|
|
3733
3766
|
<a id="a1241ef1c19df14f7db0bd62dd68f14f9"></a>
|
|
@@ -3755,8 +3788,8 @@ template<class X , class Y > </div>
|
|
|
3755
3788
|
</div><div class="memdoc">
|
|
3756
3789
|
<p>Return true if this is a lock acquire call </p>
|
|
3757
3790
|
|
|
3758
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3759
|
-
<div class="fragment"><div class="line"><a name="
|
|
3791
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00333">333</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3792
|
+
<div class="fragment"><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isTDRelease(cs);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> }</div></div><!-- fragment -->
|
|
3760
3793
|
</div>
|
|
3761
3794
|
</div>
|
|
3762
3795
|
<a id="a84ac49c70252036a957694f2cf05ae2c"></a>
|
|
@@ -3783,8 +3816,8 @@ template<class X , class Y > </div>
|
|
|
3783
3816
|
</table>
|
|
3784
3817
|
</div><div class="memdoc">
|
|
3785
3818
|
|
|
3786
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3787
|
-
<div class="fragment"><div class="line"><a name="
|
|
3819
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00337">337</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3820
|
+
<div class="fragment"><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isTDRelease(inst);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> }</div></div><!-- fragment -->
|
|
3788
3821
|
</div>
|
|
3789
3822
|
</div>
|
|
3790
3823
|
<a id="ae7007ebc6a543dc30ef076b4aed75b1b"></a>
|
|
@@ -3814,8 +3847,8 @@ template<class X , class Y > </div>
|
|
|
3814
3847
|
<p>Function does not have any possible caller in the call graph. </p>
|
|
3815
3848
|
<p>Return true if the function does not have a caller (either it is a main function or a dead function) </p>
|
|
3816
3849
|
|
|
3817
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3818
|
-
<div class="fragment"><div class="line"><a name="
|
|
3850
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00499">499</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3851
|
+
<div class="fragment"><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6d268e8d588717601345be3a911a7625">isDeadFunction</a>(fun) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab87fef7b10465d3e635643fcb93b95a7">isProgEntryFunction</a>(fun);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab87fef7b10465d3e635643fcb93b95a7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab87fef7b10465d3e635643fcb93b95a7">SVF::SVFUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00437">LLVMUtil.h:437</a></div></div>
|
|
3819
3852
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6d268e8d588717601345be3a911a7625"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6d268e8d588717601345be3a911a7625">SVF::SVFUtil::isDeadFunction</a></div><div class="ttdeci">bool isDeadFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller? </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00126">LLVMUtil.cpp:126</a></div></div>
|
|
3820
3853
|
</div><!-- fragment -->
|
|
3821
3854
|
</div>
|
|
@@ -3872,8 +3905,8 @@ template<class X , class Y > </div>
|
|
|
3872
3905
|
<p>A value represents an object if it is 1) function, 2) global 3) stack 4) heap </p>
|
|
3873
3906
|
|
|
3874
3907
|
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00042">42</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3875
|
-
<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">bool</span> createobj = <span class="keyword">false</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(ref) && <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVFUtil::isStaticExtCall</a>(SVFUtil::cast<Instruction>(ref)) )</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(ref) && <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(SVFUtil::cast<Instruction>(ref)))</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalVariable>(ref))</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Function>(ref) || SVFUtil::isa<AllocaInst>(ref) )</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  createobj = <span class="keyword">true</span>;</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>  <span class="keywordflow">return</span> createobj;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><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#
|
|
3876
|
-
<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#
|
|
3908
|
+
<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">bool</span> createobj = <span class="keyword">false</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(ref) && <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVFUtil::isStaticExtCall</a>(SVFUtil::cast<Instruction>(ref)) )</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(ref) && <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(SVFUtil::cast<Instruction>(ref)))</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalVariable>(ref))</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Function>(ref) || SVFUtil::isa<AllocaInst>(ref) )</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  createobj = <span class="keyword">true</span>;</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>  <span class="keywordflow">return</span> createobj;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><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#l00108">LLVMUtil.h:108</a></div></div>
|
|
3909
|
+
<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#l00208">LLVMUtil.h:208</a></div></div>
|
|
3877
3910
|
</div><!-- fragment -->
|
|
3878
3911
|
</div>
|
|
3879
3912
|
</div>
|
|
@@ -3904,8 +3937,8 @@ template<class X , class Y > </div>
|
|
|
3904
3937
|
<p>Program entry function e.g. main. </p>
|
|
3905
3938
|
<p>Return true if this is a program entry function (e.g. main) </p>
|
|
3906
3939
|
|
|
3907
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3908
|
-
<div class="fragment"><div class="line"><a name="
|
|
3940
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00432">432</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3941
|
+
<div class="fragment"><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">return</span> fun && fun->getName() == <span class="stringliteral">"main"</span>;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> }</div></div><!-- fragment -->
|
|
3909
3942
|
</div>
|
|
3910
3943
|
</div>
|
|
3911
3944
|
<a id="ab87fef7b10465d3e635643fcb93b95a7"></a>
|
|
@@ -3932,8 +3965,8 @@ template<class X , class Y > </div>
|
|
|
3932
3965
|
</table>
|
|
3933
3966
|
</div><div class="memdoc">
|
|
3934
3967
|
|
|
3935
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3936
|
-
<div class="fragment"><div class="line"><a name="
|
|
3968
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00437">437</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3969
|
+
<div class="fragment"><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">return</span> fun && fun->getName() == <span class="stringliteral">"main"</span>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> }</div></div><!-- fragment -->
|
|
3937
3970
|
</div>
|
|
3938
3971
|
</div>
|
|
3939
3972
|
<a id="a6528edf9a1750df4a84d1a60d4d0bbe4"></a>
|
|
@@ -3960,9 +3993,9 @@ template<class X , class Y > </div>
|
|
|
3960
3993
|
</table>
|
|
3961
3994
|
</div><div class="memdoc">
|
|
3962
3995
|
|
|
3963
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3964
|
-
<div class="fragment"><div class="line"><a name="
|
|
3965
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aec7ee60be22e8f9397db108131696d57"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aec7ee60be22e8f9397db108131696d57">SVF::SVFUtil::isProgExitFunction</a></div><div class="ttdeci">bool isProgExitFunction(const SVFFunction *fun)</div><div class="ttdoc">Return true if this is a program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3996
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00485">485</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3997
|
+
<div class="fragment"><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aec7ee60be22e8f9397db108131696d57">isProgExitFunction</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs));</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> }</div><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#l00263">SVFUtil.h:263</a></div></div>
|
|
3998
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aec7ee60be22e8f9397db108131696d57"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aec7ee60be22e8f9397db108131696d57">SVF::SVFUtil::isProgExitFunction</a></div><div class="ttdeci">bool isProgExitFunction(const SVFFunction *fun)</div><div class="ttdoc">Return true if this is a program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00478">LLVMUtil.h:478</a></div></div>
|
|
3966
3999
|
</div><!-- fragment -->
|
|
3967
4000
|
</div>
|
|
3968
4001
|
</div>
|
|
@@ -3990,9 +4023,9 @@ template<class X , class Y > </div>
|
|
|
3990
4023
|
</table>
|
|
3991
4024
|
</div><div class="memdoc">
|
|
3992
4025
|
|
|
3993
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3994
|
-
<div class="fragment"><div class="line"><a name="
|
|
3995
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aec7ee60be22e8f9397db108131696d57"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aec7ee60be22e8f9397db108131696d57">SVF::SVFUtil::isProgExitFunction</a></div><div class="ttdeci">bool isProgExitFunction(const SVFFunction *fun)</div><div class="ttdoc">Return true if this is a program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
4026
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00490">490</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4027
|
+
<div class="fragment"><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aec7ee60be22e8f9397db108131696d57">isProgExitFunction</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst));</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> }</div><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#l00263">SVFUtil.h:263</a></div></div>
|
|
4028
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aec7ee60be22e8f9397db108131696d57"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aec7ee60be22e8f9397db108131696d57">SVF::SVFUtil::isProgExitFunction</a></div><div class="ttdeci">bool isProgExitFunction(const SVFFunction *fun)</div><div class="ttdoc">Return true if this is a program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00478">LLVMUtil.h:478</a></div></div>
|
|
3996
4029
|
</div><!-- fragment -->
|
|
3997
4030
|
</div>
|
|
3998
4031
|
</div>
|
|
@@ -4022,8 +4055,8 @@ template<class X , class Y > </div>
|
|
|
4022
4055
|
|
|
4023
4056
|
<p>Return true if this is a program exit function call. </p>
|
|
4024
4057
|
|
|
4025
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4026
|
-
<div class="fragment"><div class="line"><a name="
|
|
4058
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00478">478</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4059
|
+
<div class="fragment"><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">return</span> fun && (fun->getName() == <span class="stringliteral">"exit"</span> ||</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  fun->getName() == <span class="stringliteral">"__assert_rtn"</span> ||</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  fun->getName() == <span class="stringliteral">"__assert_fail"</span> );</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> }</div></div><!-- fragment -->
|
|
4027
4060
|
</div>
|
|
4028
4061
|
</div>
|
|
4029
4062
|
<a id="a093b7ae4ad144fb5d028366b1814861a"></a>
|
|
@@ -4050,8 +4083,8 @@ template<class X , class Y > </div>
|
|
|
4050
4083
|
</table>
|
|
4051
4084
|
</div><div class="memdoc">
|
|
4052
4085
|
|
|
4053
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4054
|
-
<div class="fragment"><div class="line"><a name="
|
|
4086
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00558">558</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4087
|
+
<div class="fragment"><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::PtrToInt)</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  }</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> }</div><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#l00027">BasicTypes.h:27</a></div></div>
|
|
4055
4088
|
</div><!-- fragment -->
|
|
4056
4089
|
</div>
|
|
4057
4090
|
</div>
|
|
@@ -4105,9 +4138,9 @@ template<class X , class Y > </div>
|
|
|
4105
4138
|
</table>
|
|
4106
4139
|
</div><div class="memdoc">
|
|
4107
4140
|
|
|
4108
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4109
|
-
<div class="fragment"><div class="line"><a name="
|
|
4110
|
-
<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#
|
|
4141
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00167">167</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4142
|
+
<div class="fragment"><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordtype">bool</span> isPtrTy = cs.getInstruction()->getType()->isPointerTy();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> isPtrTy && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a97c74c642ad43d955ac8a3f3ad8907b4">isReallocExtFun</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs));</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a97c74c642ad43d955ac8a3f3ad8907b4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a97c74c642ad43d955ac8a3f3ad8907b4">SVF::SVFUtil::isReallocExtFun</a></div><div class="ttdeci">bool isReallocExtFun(const SVFFunction *fun)</div><div class="ttdoc">Return true if the call is a heap reallocator. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00162">LLVMUtil.h:162</a></div></div>
|
|
4143
|
+
<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#l00263">SVFUtil.h:263</a></div></div>
|
|
4111
4144
|
</div><!-- fragment -->
|
|
4112
4145
|
</div>
|
|
4113
4146
|
</div>
|
|
@@ -4135,9 +4168,9 @@ template<class X , class Y > </div>
|
|
|
4135
4168
|
</table>
|
|
4136
4169
|
</div><div class="memdoc">
|
|
4137
4170
|
|
|
4138
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4139
|
-
<div class="fragment"><div class="line"><a name="
|
|
4140
|
-
<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#
|
|
4171
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00173">173</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4172
|
+
<div class="fragment"><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordtype">bool</span> isPtrTy = inst->getType()->isPointerTy();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> isPtrTy && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a97c74c642ad43d955ac8a3f3ad8907b4">isReallocExtFun</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst));</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a97c74c642ad43d955ac8a3f3ad8907b4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a97c74c642ad43d955ac8a3f3ad8907b4">SVF::SVFUtil::isReallocExtFun</a></div><div class="ttdeci">bool isReallocExtFun(const SVFFunction *fun)</div><div class="ttdoc">Return true if the call is a heap reallocator. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00162">LLVMUtil.h:162</a></div></div>
|
|
4173
|
+
<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#l00263">SVFUtil.h:263</a></div></div>
|
|
4141
4174
|
</div><!-- fragment -->
|
|
4142
4175
|
</div>
|
|
4143
4176
|
</div>
|
|
@@ -4168,8 +4201,8 @@ template<class X , class Y > </div>
|
|
|
4168
4201
|
<p>Return true if the call is a heap reallocator. </p>
|
|
4169
4202
|
<p>note that this function is not suppose to be used externally </p>
|
|
4170
4203
|
|
|
4171
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4172
|
-
<div class="fragment"><div class="line"><a name="
|
|
4204
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00162">162</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4205
|
+
<div class="fragment"><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">return</span> fun && (ExtAPI::getExtAPI()->is_realloc(fun));</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> }</div></div><!-- fragment -->
|
|
4173
4206
|
</div>
|
|
4174
4207
|
</div>
|
|
4175
4208
|
<a id="abd525a2e3b7b9167b61b2304cc2cbdf2"></a>
|
|
@@ -4198,8 +4231,8 @@ template<class X , class Y > </div>
|
|
|
4198
4231
|
|
|
4199
4232
|
<p>Whether an instruction is a return instruction. </p>
|
|
4200
4233
|
|
|
4201
|
-
<p class="definition">Definition at line <a class="el" href="
|
|
4202
|
-
<div class="fragment"><div class="line"><a name="
|
|
4234
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00089">89</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4235
|
+
<div class="fragment"><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> SVFUtil::isa<ReturnInst>(inst);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div></div><!-- fragment -->
|
|
4203
4236
|
</div>
|
|
4204
4237
|
</div>
|
|
4205
4238
|
<a id="a07d991d5bfccce9ebdef0cbb6f4bf739"></a>
|
|
@@ -4226,8 +4259,8 @@ template<class X , class Y > </div>
|
|
|
4226
4259
|
</table>
|
|
4227
4260
|
</div><div class="memdoc">
|
|
4228
4261
|
|
|
4229
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4230
|
-
<div class="fragment"><div class="line"><a name="
|
|
4262
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00578">578</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4263
|
+
<div class="fragment"><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::Select)</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> }</div><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#l00027">BasicTypes.h:27</a></div></div>
|
|
4231
4264
|
</div><!-- fragment -->
|
|
4232
4265
|
</div>
|
|
4233
4266
|
</div>
|
|
@@ -4255,9 +4288,9 @@ template<class X , class Y > </div>
|
|
|
4255
4288
|
</table>
|
|
4256
4289
|
</div><div class="memdoc">
|
|
4257
4290
|
|
|
4258
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4259
|
-
<div class="fragment"><div class="line"><a name="
|
|
4260
|
-
<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#
|
|
4291
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00208">208</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4292
|
+
<div class="fragment"><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordtype">bool</span> isPtrTy = cs.getInstruction()->getType()->isPointerTy();</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> isPtrTy && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a1bc9bb7bd6c9682debf3ffab7182abf5">isStaticExtFun</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a1bc9bb7bd6c9682debf3ffab7182abf5"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1bc9bb7bd6c9682debf3ffab7182abf5">SVF::SVFUtil::isStaticExtFun</a></div><div class="ttdeci">bool isStaticExtFun(const SVFFunction *fun)</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#l00203">LLVMUtil.h:203</a></div></div>
|
|
4293
|
+
<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#l00263">SVFUtil.h:263</a></div></div>
|
|
4261
4294
|
</div><!-- fragment -->
|
|
4262
4295
|
</div>
|
|
4263
4296
|
</div>
|
|
@@ -4285,9 +4318,9 @@ template<class X , class Y > </div>
|
|
|
4285
4318
|
</table>
|
|
4286
4319
|
</div><div class="memdoc">
|
|
4287
4320
|
|
|
4288
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4289
|
-
<div class="fragment"><div class="line"><a name="
|
|
4290
|
-
<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#
|
|
4321
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00214">214</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4322
|
+
<div class="fragment"><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordtype">bool</span> isPtrTy = inst->getType()->isPointerTy();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> isPtrTy && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a1bc9bb7bd6c9682debf3ffab7182abf5">isStaticExtFun</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst));</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a1bc9bb7bd6c9682debf3ffab7182abf5"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1bc9bb7bd6c9682debf3ffab7182abf5">SVF::SVFUtil::isStaticExtFun</a></div><div class="ttdeci">bool isStaticExtFun(const SVFFunction *fun)</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#l00203">LLVMUtil.h:203</a></div></div>
|
|
4323
|
+
<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#l00263">SVFUtil.h:263</a></div></div>
|
|
4291
4324
|
</div><!-- fragment -->
|
|
4292
4325
|
</div>
|
|
4293
4326
|
</div>
|
|
@@ -4318,8 +4351,8 @@ template<class X , class Y > </div>
|
|
|
4318
4351
|
<p>Return true if the call is a static global call. </p>
|
|
4319
4352
|
<p>note that this function is not suppose to be used externally </p>
|
|
4320
4353
|
|
|
4321
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4322
|
-
<div class="fragment"><div class="line"><a name="
|
|
4354
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00203">203</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4355
|
+
<div class="fragment"><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> fun && ExtAPI::getExtAPI()->has_static(fun);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> }</div></div><!-- fragment -->
|
|
4323
4356
|
</div>
|
|
4324
4357
|
</div>
|
|
4325
4358
|
<a id="a3af5073a1cdc000678f7e4bbc943f5d5"></a>
|
|
@@ -4347,8 +4380,8 @@ template<class X , class Y > </div>
|
|
|
4347
4380
|
</div><div class="memdoc">
|
|
4348
4381
|
<p>Return true if this is a thread exit call </p>
|
|
4349
4382
|
|
|
4350
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4351
|
-
<div class="fragment"><div class="line"><a name="
|
|
4383
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00309">309</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4384
|
+
<div class="fragment"><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isTDExit(cs);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> }</div></div><!-- fragment -->
|
|
4352
4385
|
</div>
|
|
4353
4386
|
</div>
|
|
4354
4387
|
<a id="aae025d6727ef34fbeaa7ad48a4dabdcd"></a>
|
|
@@ -4375,8 +4408,8 @@ template<class X , class Y > </div>
|
|
|
4375
4408
|
</table>
|
|
4376
4409
|
</div><div class="memdoc">
|
|
4377
4410
|
|
|
4378
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4379
|
-
<div class="fragment"><div class="line"><a name="
|
|
4411
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00313">313</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4412
|
+
<div class="fragment"><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isTDExit(inst);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> }</div></div><!-- fragment -->
|
|
4380
4413
|
</div>
|
|
4381
4414
|
</div>
|
|
4382
4415
|
<a id="a5c2abeb363081381c3dc939ab511e3f0"></a>
|
|
@@ -4404,8 +4437,8 @@ template<class X , class Y > </div>
|
|
|
4404
4437
|
</div><div class="memdoc">
|
|
4405
4438
|
<p>Return true if this is a thread creation call </p>
|
|
4406
4439
|
|
|
4407
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4408
|
-
<div class="fragment"><div class="line"><a name="
|
|
4440
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00273">273</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4441
|
+
<div class="fragment"><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isTDFork(cs);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> }</div></div><!-- fragment -->
|
|
4409
4442
|
</div>
|
|
4410
4443
|
</div>
|
|
4411
4444
|
<a id="a834afc0042c24ed5a1dd00cadc1f00c3"></a>
|
|
@@ -4432,8 +4465,8 @@ template<class X , class Y > </div>
|
|
|
4432
4465
|
</table>
|
|
4433
4466
|
</div><div class="memdoc">
|
|
4434
4467
|
|
|
4435
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4436
|
-
<div class="fragment"><div class="line"><a name="
|
|
4468
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00277">277</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4469
|
+
<div class="fragment"><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isTDFork(inst);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> }</div></div><!-- fragment -->
|
|
4437
4470
|
</div>
|
|
4438
4471
|
</div>
|
|
4439
4472
|
<a id="a194a8cf292726bd6cd54307b555c068a"></a>
|
|
@@ -4461,8 +4494,8 @@ template<class X , class Y > </div>
|
|
|
4461
4494
|
</div><div class="memdoc">
|
|
4462
4495
|
<p>Return true if this is a thread join call </p>
|
|
4463
4496
|
|
|
4464
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4465
|
-
<div class="fragment"><div class="line"><a name="
|
|
4497
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00297">297</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4498
|
+
<div class="fragment"><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isTDJoin(cs);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> }</div></div><!-- fragment -->
|
|
4466
4499
|
</div>
|
|
4467
4500
|
</div>
|
|
4468
4501
|
<a id="a14793b41b05439a8a82fdce02e0587d5"></a>
|
|
@@ -4489,8 +4522,8 @@ template<class X , class Y > </div>
|
|
|
4489
4522
|
</table>
|
|
4490
4523
|
</div><div class="memdoc">
|
|
4491
4524
|
|
|
4492
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4493
|
-
<div class="fragment"><div class="line"><a name="
|
|
4525
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00301">301</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4526
|
+
<div class="fragment"><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()->isTDJoin(inst);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> }</div></div><!-- fragment -->
|
|
4494
4527
|
</div>
|
|
4495
4528
|
</div>
|
|
4496
4529
|
<a id="a1373688c6faba4dcdb640106575ea433"></a>
|
|
@@ -4517,8 +4550,8 @@ template<class X , class Y > </div>
|
|
|
4517
4550
|
</table>
|
|
4518
4551
|
</div><div class="memdoc">
|
|
4519
4552
|
|
|
4520
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4521
|
-
<div class="fragment"><div class="line"><a name="
|
|
4553
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00588">588</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4554
|
+
<div class="fragment"><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::Trunc ||</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  constExpr->getOpcode() == Instruction::FPTrunc ||</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  constExpr->getOpcode() == Instruction::ZExt ||</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  constExpr->getOpcode() == Instruction::SExt ||</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  constExpr->getOpcode() == Instruction::FPExt)</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  }</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> }</div><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#l00027">BasicTypes.h:27</a></div></div>
|
|
4522
4555
|
</div><!-- fragment -->
|
|
4523
4556
|
</div>
|
|
4524
4557
|
</div>
|
|
@@ -4546,8 +4579,8 @@ template<class X , class Y > </div>
|
|
|
4546
4579
|
</table>
|
|
4547
4580
|
</div><div class="memdoc">
|
|
4548
4581
|
|
|
4549
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4550
|
-
<div class="fragment"><div class="line"><a name="
|
|
4582
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00622">622</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4583
|
+
<div class="fragment"><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">if</span>((constExpr->getOpcode() >= Instruction::UnaryOpsBegin) && (constExpr->getOpcode() <= Instruction::UnaryOpsEnd))</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  }</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> }</div><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#l00027">BasicTypes.h:27</a></div></div>
|
|
4551
4584
|
</div><!-- fragment -->
|
|
4552
4585
|
</div>
|
|
4553
4586
|
</div>
|
|
@@ -4581,8 +4614,8 @@ template<typename Data > </div>
|
|
|
4581
4614
|
|
|
4582
4615
|
<p>Given a map mapping points-to sets to a count, adds from into to. </p>
|
|
4583
4616
|
|
|
4584
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
4585
|
-
<div class="fragment"><div class="line"><a name="
|
|
4617
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00288">288</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
4618
|
+
<div class="fragment"><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">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> Map<Data, unsigned>::value_type &ptocc : from)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  to[ptocc.first] += ptocc.second;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> }</div></div><!-- fragment -->
|
|
4586
4619
|
</div>
|
|
4587
4620
|
</div>
|
|
4588
4621
|
<a id="aed0b0b9f035057552a6a82154fd88e61"></a>
|
|
@@ -4759,8 +4792,8 @@ template<typename Key , typename KeySet > </div>
|
|
|
4759
4792
|
|
|
4760
4793
|
<p>Removes an element from a Set/CondSet (or anything implementing ::erase). </p>
|
|
4761
4794
|
|
|
4762
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
4763
|
-
<div class="fragment"><div class="line"><a name="
|
|
4795
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00314">314</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
4796
|
+
<div class="fragment"><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  keySet.erase(key);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> }</div></div><!-- fragment -->
|
|
4764
4797
|
</div>
|
|
4765
4798
|
</div>
|
|
4766
4799
|
<a id="aa59af7fc01a534662b3b1524186ef97e"></a>
|
|
@@ -4799,8 +4832,8 @@ template<typename Key , typename KeySet > </div>
|
|
|
4799
4832
|
|
|
4800
4833
|
<p>Removes a NodeID from a NodeBS. </p>
|
|
4801
4834
|
|
|
4802
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
4803
|
-
<div class="fragment"><div class="line"><a name="
|
|
4835
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00320">320</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
4836
|
+
<div class="fragment"><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  keySet.reset(key);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> }</div></div><!-- fragment -->
|
|
4804
4837
|
</div>
|
|
4805
4838
|
</div>
|
|
4806
4839
|
<a id="a6cfe12afa463d0ceddeee11540c33ab3"></a>
|
|
@@ -4901,7 +4934,7 @@ template<typename Key , typename KeySet > </div>
|
|
|
4901
4934
|
<p>Strip all casts </p>
|
|
4902
4935
|
|
|
4903
4936
|
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00192">192</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
4904
|
-
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a20b13f90796ee748f58e6c5faa7c63da">CastInst</a> *ci = SVFUtil::dyn_cast<CastInst>(val))</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  val = ci->getOperand(0);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</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> *ce = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span>(ce->isCast())</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  val = ce->getOperand(0);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a20b13f90796ee748f58e6c5faa7c63da"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a20b13f90796ee748f58e6c5faa7c63da">CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
4937
|
+
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a20b13f90796ee748f58e6c5faa7c63da">CastInst</a> *ci = SVFUtil::dyn_cast<CastInst>(val))</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  val = ci->getOperand(0);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</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> *ce = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span>(ce->isCast())</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  val = ce->getOperand(0);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a20b13f90796ee748f58e6c5faa7c63da"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a20b13f90796ee748f58e6c5faa7c63da">CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00038">BasicTypes.h:38</a></div></div>
|
|
4905
4938
|
<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#l00027">BasicTypes.h:27</a></div></div>
|
|
4906
4939
|
</div><!-- fragment -->
|
|
4907
4940
|
</div>
|
|
@@ -4926,7 +4959,7 @@ template<typename Key , typename KeySet > </div>
|
|
|
4926
4959
|
<p>Strip constant casts </p>
|
|
4927
4960
|
|
|
4928
4961
|
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00177">177</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
4929
|
-
<div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalValue>(val) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">isInt2PtrConstantExpr</a>(val))</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</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> *CE = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span> (Instruction::isCast(CE->getOpcode()))</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86763e6a3606598580cd0172aecb5bc7">stripConstantCasts</a>(CE->getOperand(0));</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><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#
|
|
4962
|
+
<div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalValue>(val) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">isInt2PtrConstantExpr</a>(val))</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</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> *CE = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span> (Instruction::isCast(CE->getOpcode()))</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86763e6a3606598580cd0172aecb5bc7">stripConstantCasts</a>(CE->getOperand(0));</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><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#l00548">LLVMUtil.h:548</a></div></div>
|
|
4930
4963
|
<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>
|
|
4931
4964
|
<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#l00027">BasicTypes.h:27</a></div></div>
|
|
4932
4965
|
</div><!-- fragment -->
|