svf-tools 1.0.573 → 1.0.574
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Annotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +2 -2
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +4 -4
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/DCHG_8h_source.html +9 -9
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +10 -10
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ICFG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +10 -10
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +22 -20
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +13 -13
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +23 -23
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +16 -16
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +4 -4
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/MHP_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MTA_8h_source.html +5 -5
- 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 +8 -8
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +8 -0
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +84 -81
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
- 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 +49 -52
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +45 -45
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +10 -10
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +10 -10
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +28 -30
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +43 -47
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +34 -36
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +8 -8
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/TCT_8h_source.html +11 -11
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +0 -7
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +93 -94
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallSite-members.html +18 -21
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +37 -120
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +57 -57
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +58 -56
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +22 -17
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +279 -111
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +92 -98
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator-members.html +27 -28
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +118 -153
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +48 -50
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
- package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
- package/SVF-doxygen/html/html/functions_a.html +7 -13
- package/SVF-doxygen/html/html/functions_b.html +7 -4
- package/SVF-doxygen/html/html/functions_func.html +10 -13
- package/SVF-doxygen/html/html/functions_func_g.html +14 -11
- package/SVF-doxygen/html/html/functions_func_h.html +5 -2
- package/SVF-doxygen/html/html/functions_func_i.html +5 -2
- package/SVF-doxygen/html/html/functions_func_s.html +11 -11
- package/SVF-doxygen/html/html/functions_g.html +16 -13
- package/SVF-doxygen/html/html/functions_h.html +6 -3
- package/SVF-doxygen/html/html/functions_i.html +10 -7
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_o.html +15 -15
- package/SVF-doxygen/html/html/functions_p.html +8 -12
- package/SVF-doxygen/html/html/functions_s.html +6 -6
- package/SVF-doxygen/html/html/functions_t.html +7 -7
- package/SVF-doxygen/html/html/functions_type.html +0 -3
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_b.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +11 -11
- package/SVF-doxygen/html/html/namespaceSVF.html +123 -120
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +47 -47
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +19 -19
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +40 -40
- package/SVF-doxygen/html/html/search/all_1.js +1 -3
- package/SVF-doxygen/html/html/search/all_10.js +6 -6
- package/SVF-doxygen/html/html/search/all_11.js +2 -2
- package/SVF-doxygen/html/html/search/all_12.js +9 -9
- package/SVF-doxygen/html/html/search/all_13.js +4 -4
- package/SVF-doxygen/html/html/search/all_15.js +3 -3
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_2.js +1 -0
- package/SVF-doxygen/html/html/search/all_7.js +2 -1
- package/SVF-doxygen/html/html/search/all_8.js +1 -0
- package/SVF-doxygen/html/html/search/all_9.js +1 -0
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +1 -1
- package/SVF-doxygen/html/html/search/all_f.js +2 -2
- package/SVF-doxygen/html/html/search/functions_0.js +1 -2
- package/SVF-doxygen/html/html/search/functions_11.js +2 -2
- package/SVF-doxygen/html/html/search/functions_6.js +2 -1
- package/SVF-doxygen/html/html/search/functions_7.js +1 -0
- package/SVF-doxygen/html/html/search/functions_8.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_0.js +0 -1
- package/SVF-doxygen/html/html/search/variables_13.js +1 -1
- package/SVF-doxygen/html/html/search/variables_2.js +1 -0
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter_3_01T_00_018_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +4 -4
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +4 -4
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
- package/include/SABER/SaberCondAllocator.h +0 -7
- package/include/SVF-FE/BasicTypes.h +7 -0
- package/include/Util/BasicTypes.h +52 -17
- package/lib/SABER/SaberCondAllocator.cpp +7 -9
- package/lib/SVF-FE/LLVMModule.cpp +8 -0
- package/lib/SVF-FE/SVFIRBuilder.cpp +2 -2
- package/lib/SVF-FE/SymbolTableBuilder.cpp +2 -2
- package/package.json +1 -1
|
@@ -208,7 +208,7 @@ struct llvm::DOTGraphTraits< VFG * ></h3>
|
|
|
208
208
|
<div class="ttc" id="classSVF_1_1MRSVFGNode_html"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html">SVF::MRSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00042">SVFGNode.h:42</a></div></div>
|
|
209
209
|
<div class="ttc" id="classSVF_1_1UnaryOPVFGNode_html"><div class="ttname"><a href="classSVF_1_1UnaryOPVFGNode.html">SVF::UnaryOPVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00465">VFGNode.h:465</a></div></div>
|
|
210
210
|
<div class="ttc" id="classSVF_1_1CmpVFGNode_html"><div class="ttname"><a href="classSVF_1_1CmpVFGNode.html">SVF::CmpVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00324">VFGNode.h:324</a></div></div>
|
|
211
|
-
<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#
|
|
211
|
+
<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#l00078">BasicTypes.h:78</a></div></div>
|
|
212
212
|
<div class="ttc" id="classSVF_1_1ActualRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualRetVFGNode.html">SVF::ActualRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00967">VFGNode.h:967</a></div></div>
|
|
213
213
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00116">VFGNode.h:116</a></div></div>
|
|
214
214
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html">SVF::FormalParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00898">VFGNode.h:898</a></div></div>
|
|
@@ -304,7 +304,7 @@ template<class EdgeIter > </div>
|
|
|
304
304
|
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l01341">1341</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
|
|
305
305
|
<div class="fragment"><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  {</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  assert(edge && <span class="stringliteral">"No edge found!!"</span>);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span> </div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>* dirCall = SVFUtil::dyn_cast<CallDirSVFGEdge>(edge))</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  rawstr << dirCall->getCallSiteId();</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>* dirRet = SVFUtil::dyn_cast<RetDirSVFGEdge>(edge))</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  rawstr << dirRet->getCallSiteId();</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span> </div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  }</div><div class="ttc" id="classSVF_1_1CallDirSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallDirSVFGEdge.html">SVF::CallDirSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00211">VFGEdge.h:211</a></div></div>
|
|
306
306
|
<div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
|
|
307
|
-
<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#
|
|
307
|
+
<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#l00078">BasicTypes.h:78</a></div></div>
|
|
308
308
|
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
309
309
|
<div class="ttc" id="classSVF_1_1RetDirSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetDirSVFGEdge.html">SVF::RetDirSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00254">VFGEdge.h:254</a></div></div>
|
|
310
310
|
</div><!-- fragment -->
|
|
@@ -375,7 +375,7 @@ template<class EdgeIter > </div>
|
|
|
375
375
|
</div><div class="memdoc">
|
|
376
376
|
|
|
377
377
|
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l01224">1224</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
|
|
378
|
-
<div class="fragment"><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> </div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast<StmtVFGNode>(node))</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  {</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = stmtNode->getPAGEdge();</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <span class="keywordflow">if</span> (SVFUtil::isa<AddrStmt>(edge))</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  {</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  rawstr << <span class="stringliteral">"color=green"</span>;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  }</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<CopyStmt>(edge))</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  {</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  rawstr << <span class="stringliteral">"color=black"</span>;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  }</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<RetPE>(edge))</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  {</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  rawstr << <span class="stringliteral">"color=black,style=dotted"</span>;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  }</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<GepStmt>(edge))</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  {</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  rawstr << <span class="stringliteral">"color=purple"</span>;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  }</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<StoreStmt>(edge))</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  {</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  rawstr << <span class="stringliteral">"color=blue"</span>;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  }</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<LoadStmt>(edge))</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  {</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  rawstr << <span class="stringliteral">"color=red"</span>;</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  }</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  {</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  assert(0 && <span class="stringliteral">"No such kind edge!!"</span>);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  }</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  rawstr << <span class="stringliteral">""</span>;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  }</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<CmpVFGNode>(node))</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  {</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  }</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<BinaryOPVFGNode>(node))</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  {</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  }</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<UnaryOPVFGNode>(node))</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  {</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  }</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<PHIVFGNode>(node))</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  {</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  rawstr << <span class="stringliteral">"color=black"</span>;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  }</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<NullPtrVFGNode>(node))</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  {</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  }</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<FormalParmVFGNode>(node))</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  {</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  }</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ActualParmVFGNode>(node))</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  {</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  }</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ActualRetVFGNode>(node))</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  {</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  }</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<FormalRetVFGNode>(node))</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  {</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  }</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<MRSVFGNode>(node))</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  {</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  rawstr << <span class="stringliteral">"color=orange,penwidth=2"</span>;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  }</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"no such kind of node!!"</span>);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> </div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  rawstr << <span class="stringliteral">""</span>;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span> </div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</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#l00082">BasicTypes.h:82</a></div></div>
|
|
378
|
+
<div class="fragment"><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> </div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast<StmtVFGNode>(node))</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  {</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = stmtNode->getPAGEdge();</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <span class="keywordflow">if</span> (SVFUtil::isa<AddrStmt>(edge))</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  {</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  rawstr << <span class="stringliteral">"color=green"</span>;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  }</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<CopyStmt>(edge))</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  {</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  rawstr << <span class="stringliteral">"color=black"</span>;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  }</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<RetPE>(edge))</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  {</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  rawstr << <span class="stringliteral">"color=black,style=dotted"</span>;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  }</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<GepStmt>(edge))</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  {</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  rawstr << <span class="stringliteral">"color=purple"</span>;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  }</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<StoreStmt>(edge))</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  {</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  rawstr << <span class="stringliteral">"color=blue"</span>;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  }</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<LoadStmt>(edge))</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  {</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  rawstr << <span class="stringliteral">"color=red"</span>;</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  }</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  {</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  assert(0 && <span class="stringliteral">"No such kind edge!!"</span>);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  }</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  rawstr << <span class="stringliteral">""</span>;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  }</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<CmpVFGNode>(node))</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  {</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  }</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<BinaryOPVFGNode>(node))</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  {</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  }</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<UnaryOPVFGNode>(node))</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  {</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  }</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<PHIVFGNode>(node))</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  {</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  rawstr << <span class="stringliteral">"color=black"</span>;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  }</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<NullPtrVFGNode>(node))</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  {</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  }</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<FormalParmVFGNode>(node))</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  {</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  }</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ActualParmVFGNode>(node))</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  {</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  }</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ActualRetVFGNode>(node))</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  {</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  }</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<FormalRetVFGNode>(node))</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  {</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  }</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<MRSVFGNode>(node))</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  {</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  rawstr << <span class="stringliteral">"color=orange,penwidth=2"</span>;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  }</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"no such kind of node!!"</span>);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> </div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  rawstr << <span class="stringliteral">""</span>;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span> </div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</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#l00078">BasicTypes.h:78</a></div></div>
|
|
379
379
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00116">VFGNode.h:116</a></div></div>
|
|
380
380
|
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
381
381
|
<div class="ttc" id="classSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00047">SVFStatements.h:47</a></div></div>
|
|
@@ -462,7 +462,7 @@ template<class EdgeIter > </div>
|
|
|
462
462
|
<div class="ttc" id="classSVF_1_1PHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html">SVF::PHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00635">VFGNode.h:635</a></div></div>
|
|
463
463
|
<div class="ttc" id="classSVF_1_1UnaryOPVFGNode_html"><div class="ttname"><a href="classSVF_1_1UnaryOPVFGNode.html">SVF::UnaryOPVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00465">VFGNode.h:465</a></div></div>
|
|
464
464
|
<div class="ttc" id="classSVF_1_1CmpVFGNode_html"><div class="ttname"><a href="classSVF_1_1CmpVFGNode.html">SVF::CmpVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00324">VFGNode.h:324</a></div></div>
|
|
465
|
-
<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#
|
|
465
|
+
<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#l00078">BasicTypes.h:78</a></div></div>
|
|
466
466
|
<div class="ttc" id="classSVF_1_1ActualRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualRetVFGNode.html">SVF::ActualRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00967">VFGNode.h:967</a></div></div>
|
|
467
467
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00116">VFGNode.h:116</a></div></div>
|
|
468
468
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html">SVF::FormalParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00898">VFGNode.h:898</a></div></div>
|
|
@@ -86,7 +86,7 @@ struct std::hash< SVF::CallSite ></h3>
|
|
|
86
86
|
|
|
87
87
|
<p>Specialise hash for CallSites. </p>
|
|
88
88
|
|
|
89
|
-
<p class="definition">Definition at line <a class="el" href="Util_2BasicTypes_8h_source.html#
|
|
89
|
+
<p class="definition">Definition at line <a class="el" href="Util_2BasicTypes_8h_source.html#l00469">469</a> of file <a class="el" href="Util_2BasicTypes_8h_source.html">BasicTypes.h</a>.</p>
|
|
90
90
|
</div><h2 class="groupheader">Member Function Documentation</h2>
|
|
91
91
|
<a id="a6ed3f621cd155faae27cbd844338409a"></a>
|
|
92
92
|
<h2 class="memtitle"><span class="permalink"><a href="#a6ed3f621cd155faae27cbd844338409a">◆ </a></span>operator()()</h2>
|
|
@@ -112,8 +112,8 @@ struct std::hash< SVF::CallSite ></h3>
|
|
|
112
112
|
</table>
|
|
113
113
|
</div><div class="memdoc">
|
|
114
114
|
|
|
115
|
-
<p class="definition">Definition at line <a class="el" href="Util_2BasicTypes_8h_source.html#
|
|
116
|
-
<div class="fragment"><div class="line"><a name="
|
|
115
|
+
<p class="definition">Definition at line <a class="el" href="Util_2BasicTypes_8h_source.html#l00471">471</a> of file <a class="el" href="Util_2BasicTypes_8h_source.html">BasicTypes.h</a>.</p>
|
|
116
|
+
<div class="fragment"><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  std::hash<SVF::Instruction *> h;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">return</span> h(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  }</div><div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00395">BasicTypes.h:395</a></div></div>
|
|
117
117
|
</div><!-- fragment -->
|
|
118
118
|
</div>
|
|
119
119
|
</div>
|
|
@@ -109,7 +109,7 @@ struct std::hash< SVF::CxtProc ></h3>
|
|
|
109
109
|
</div><div class="memdoc">
|
|
110
110
|
|
|
111
111
|
<p class="definition">Definition at line <a class="el" href="CxtStmt_8h_source.html#l00493">493</a> of file <a class="el" href="CxtStmt_8h_source.html">CxtStmt.h</a>.</p>
|
|
112
|
-
<div class="fragment"><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  std::hash<SVF::SVFFunction*> h;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a>* fun = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a>*<span class="keyword">></span> (cs.<a class="code" href="classSVF_1_1CxtProc.html#ab9ac6459c90873b7dea35e0a22700189">getProc</a>());</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">return</span> h(fun);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  }</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
112
|
+
<div class="fragment"><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  std::hash<SVF::SVFFunction*> h;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a>* fun = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a>*<span class="keyword">></span> (cs.<a class="code" href="classSVF_1_1CxtProc.html#ab9ac6459c90873b7dea35e0a22700189">getProc</a>());</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">return</span> h(fun);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  }</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00115">BasicTypes.h:115</a></div></div>
|
|
113
113
|
<div class="ttc" id="classSVF_1_1CxtProc_html_ab9ac6459c90873b7dea35e0a22700189"><div class="ttname"><a href="classSVF_1_1CxtProc.html#ab9ac6459c90873b7dea35e0a22700189">SVF::CxtProc::getProc</a></div><div class="ttdeci">const SVFFunction * getProc() const</div><div class="ttdoc">Return current procedure. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00325">CxtStmt.h:325</a></div></div>
|
|
114
114
|
</div><!-- fragment -->
|
|
115
115
|
</div>
|
|
@@ -110,7 +110,7 @@ struct std::hash< SVF::CxtStmt ></h3>
|
|
|
110
110
|
|
|
111
111
|
<p class="definition">Definition at line <a class="el" href="CxtStmt_8h_source.html#l00484">484</a> of file <a class="el" href="CxtStmt_8h_source.html">CxtStmt.h</a>.</p>
|
|
112
112
|
<div class="fragment"><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  std::hash<SVF::Instruction*> h;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a>* inst = <span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a>*<span class="keyword">></span> (cs.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">return</span> h(inst);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  }</div><div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
|
|
113
|
-
<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#
|
|
113
|
+
<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#l00072">BasicTypes.h:72</a></div></div>
|
|
114
114
|
</div><!-- fragment -->
|
|
115
115
|
</div>
|
|
116
116
|
</div>
|
|
@@ -262,7 +262,7 @@ Functions</h2></td></tr>
|
|
|
262
262
|
<div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
|
|
263
263
|
<div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00124">IRGraph.h:124</a></div></div>
|
|
264
264
|
<div class="ttc" id="classSVF_1_1PointsTo_html_aa53962e561399bf493d1f2b9137356f6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00128">PointsTo.h:128</a></div></div>
|
|
265
|
-
<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#
|
|
265
|
+
<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#l00078">BasicTypes.h:78</a></div></div>
|
|
266
266
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00201">PointerAnalysis.h:201</a></div></div>
|
|
267
267
|
<div class="ttc" id="classSVF_1_1SVFVar_html_a1ace69053c2c4436fd78d5624bd0086a"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">SVF::SVFVar::hasValue</a></div><div class="ttdeci">bool hasValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00107">SVFVariables.h:107</a></div></div>
|
|
268
268
|
<div class="ttc" id="classSVF_1_1SVFVar_html_afaa33caa8d2a306f6741d9d066243e40"><div class="ttname"><a href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">SVF::SVFVar::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get/has methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00091">SVFVariables.h:91</a></div></div>
|
|
@@ -95,10 +95,10 @@ $(function() {
|
|
|
95
95
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00093">GenericGraph.h:93</a></div></div>
|
|
96
96
|
<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#l00105">SVFBasicTypes.h:105</a></div></div>
|
|
97
97
|
<div class="ttc" id="svf-ex_8cpp_html_a3c04138a5bfe5d72780bb7e82a18e627"><div class="ttname"><a href="svf-ex_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a></div><div class="ttdeci">int main(int argc, char **argv)</div><div class="ttdef"><b>Definition:</b> <a href="svf-ex_8cpp_source.html#l00145">svf-ex.cpp:145</a></div></div>
|
|
98
|
-
<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#
|
|
98
|
+
<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#l00072">BasicTypes.h:72</a></div></div>
|
|
99
99
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a2f8e91c075d90be66412a079fe73e936"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a></div><div class="ttdeci">static void releaseLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00077">LLVMModule.h:77</a></div></div>
|
|
100
100
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html">SVF::PTACallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00218">PTACallGraph.h:218</a></div></div>
|
|
101
|
-
<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#
|
|
101
|
+
<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#l00078">BasicTypes.h:78</a></div></div>
|
|
102
102
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00201">PointerAnalysis.h:201</a></div></div>
|
|
103
103
|
<div class="ttc" id="classSVF_1_1SVFVar_html_a1ace69053c2c4436fd78d5624bd0086a"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">SVF::SVFVar::hasValue</a></div><div class="ttdeci">bool hasValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00107">SVFVariables.h:107</a></div></div>
|
|
104
104
|
<div class="ttc" id="classSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00087">ICFG.h:87</a></div></div>
|
|
@@ -127,7 +127,7 @@ $(function() {
|
|
|
127
127
|
<div class="ttc" id="svf-ex_8cpp_html_af45b449c07f1c975eea45d40d1cc37f6"><div class="ttname"><a href="svf-ex_8cpp.html#af45b449c07f1c975eea45d40d1cc37f6">traverseOnICFG</a></div><div class="ttdeci">void traverseOnICFG(ICFG *icfg, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="svf-ex_8cpp_source.html#l00080">svf-ex.cpp:80</a></div></div>
|
|
128
128
|
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
129
129
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00167">WorkList.h:167</a></div></div>
|
|
130
|
-
<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#
|
|
130
|
+
<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#l00071">BasicTypes.h:71</a></div></div>
|
|
131
131
|
<div class="ttc" id="classSVF_1_1PointsTo_html_a8f741cdffbf3c5fe0f602cdca677dee6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">SVF::PointsTo::end</a></div><div class="ttdeci">const_iterator end(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00132">PointsTo.h:132</a></div></div>
|
|
132
132
|
<div class="ttc" id="LLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
|
|
133
133
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00057">PointerAnalysis.h:57</a></div></div>
|
|
@@ -162,13 +162,6 @@ public:
|
|
|
162
162
|
return keyFunc->dominate(bbKey,bbValue);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
/// Get LoopInfo
|
|
166
|
-
inline LoopInfo* getLoopInfo(const Function* f)
|
|
167
|
-
{
|
|
168
|
-
return cfInfoBuilder.getLoopInfo(f);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
|
|
172
165
|
/// Guard Computation for a value-flow (between two basic blocks)
|
|
173
166
|
//@{
|
|
174
167
|
virtual Condition ComputeIntraVFGGuard(const BasicBlock* src, const BasicBlock* dst);
|
|
@@ -26,6 +26,8 @@
|
|
|
26
26
|
|
|
27
27
|
#include <llvm/Support/SourceMgr.h>
|
|
28
28
|
|
|
29
|
+
#include "llvm/Analysis/LoopInfo.h"
|
|
30
|
+
|
|
29
31
|
namespace SVF
|
|
30
32
|
{
|
|
31
33
|
|
|
@@ -73,6 +75,11 @@ typedef llvm::DominanceFrontier DominanceFrontier;
|
|
|
73
75
|
typedef llvm::PostDominatorTree PostDominatorTree;
|
|
74
76
|
typedef llvm::DominanceFrontierBase<llvm::BasicBlock, false> DominanceFrontierBase;
|
|
75
77
|
|
|
78
|
+
/// LLVM Loop
|
|
79
|
+
typedef llvm::Loop Loop;
|
|
80
|
+
typedef llvm::LoopInfo LoopInfo;
|
|
81
|
+
typedef llvm::User User;
|
|
82
|
+
|
|
76
83
|
// LLVM Instructions
|
|
77
84
|
typedef llvm::AllocaInst AllocaInst;
|
|
78
85
|
typedef llvm::AtomicCmpXchgInst AtomicCmpXchgInst;
|
|
@@ -55,7 +55,6 @@
|
|
|
55
55
|
#include <llvm/BinaryFormat/Dwarf.h>
|
|
56
56
|
#endif
|
|
57
57
|
|
|
58
|
-
#include "llvm/Analysis/LoopInfo.h"
|
|
59
58
|
#include "llvm/IR/CFG.h"
|
|
60
59
|
#include "llvm/BinaryFormat/Dwarf.h"
|
|
61
60
|
|
|
@@ -74,9 +73,6 @@ typedef llvm::Instruction Instruction;
|
|
|
74
73
|
typedef llvm::CallBase CallBase;
|
|
75
74
|
typedef llvm::GlobalValue GlobalValue;
|
|
76
75
|
typedef llvm::GlobalVariable GlobalVariable;
|
|
77
|
-
typedef llvm::User User;
|
|
78
|
-
typedef llvm::Loop Loop;
|
|
79
|
-
typedef llvm::LoopInfo LoopInfo;
|
|
80
76
|
|
|
81
77
|
/// LLVM outputs
|
|
82
78
|
typedef llvm::raw_string_ostream raw_string_ostream;
|
|
@@ -129,11 +125,8 @@ private:
|
|
|
129
125
|
Map<const BasicBlock*,Set<const BasicBlock*>> dtBBsMap;
|
|
130
126
|
Map<const BasicBlock*,Set<const BasicBlock*>> dfBBsMap;
|
|
131
127
|
Map<const BasicBlock*,Set<const BasicBlock*>> pdtBBsMap;
|
|
128
|
+
Map<const BasicBlock*,std::vector<const BasicBlock*>> bb2LoopMap;
|
|
132
129
|
public:
|
|
133
|
-
SVFFunction(const std::string& val): SVFValue(val,SVFValue::SVFFunc),
|
|
134
|
-
isDecl(false), isIntri(false), fun(nullptr), exitBB(nullptr), isUncalled(false), isNotRet(false)
|
|
135
|
-
{
|
|
136
|
-
}
|
|
137
130
|
|
|
138
131
|
SVFFunction(Function* f): SVFValue(f->getName().str(),SVFValue::SVFFunc),
|
|
139
132
|
isDecl(f->isDeclaration()), isIntri(f->isIntrinsic()), fun(f), exitBB(nullptr), isUncalled(false), isNotRet(false)
|
|
@@ -216,6 +209,28 @@ public:
|
|
|
216
209
|
return dfBBsMap;
|
|
217
210
|
}
|
|
218
211
|
|
|
212
|
+
inline bool hasLoopInfo(const BasicBlock* bb) const
|
|
213
|
+
{
|
|
214
|
+
return bb2LoopMap.find(bb)!=bb2LoopMap.end();
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
inline const std::vector<const BasicBlock*>& getLoopInfo(const BasicBlock* bb) const
|
|
218
|
+
{
|
|
219
|
+
Map<const BasicBlock*, std::vector<const BasicBlock*>>::const_iterator mapIter = bb2LoopMap.find(bb);
|
|
220
|
+
if(mapIter != bb2LoopMap.end())
|
|
221
|
+
return mapIter->second;
|
|
222
|
+
else
|
|
223
|
+
{
|
|
224
|
+
assert(hasLoopInfo(bb) && "loopinfo does not exit(bb not in a loop)");
|
|
225
|
+
abort();
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
inline void addToBB2LoopMap(const BasicBlock* bb, const BasicBlock* loopBB)
|
|
230
|
+
{
|
|
231
|
+
bb2LoopMap[bb].push_back(loopBB);
|
|
232
|
+
}
|
|
233
|
+
|
|
219
234
|
inline const Map<const BasicBlock*,Set<const BasicBlock*>>& getPostDomTreeMap() const
|
|
220
235
|
{
|
|
221
236
|
return pdtBBsMap;
|
|
@@ -251,6 +266,35 @@ public:
|
|
|
251
266
|
return this->exitBB;
|
|
252
267
|
}
|
|
253
268
|
|
|
269
|
+
void getExitBlocksOfLoop(const BasicBlock* bb, Set<const BasicBlock*>& exitbbs) const
|
|
270
|
+
{
|
|
271
|
+
if (hasLoopInfo(bb))
|
|
272
|
+
{
|
|
273
|
+
const std::vector<const BasicBlock*>& blocks = getLoopInfo(bb);
|
|
274
|
+
assert(!blocks.empty() && "no available loop info?");
|
|
275
|
+
for (const BasicBlock* block : blocks)
|
|
276
|
+
{
|
|
277
|
+
for (succ_const_iterator succIt = succ_begin(block); succIt != succ_end(block); succIt++)
|
|
278
|
+
{
|
|
279
|
+
const BasicBlock* succ = *succIt;
|
|
280
|
+
if ((std::find(blocks.begin(), blocks.end(), succ)==blocks.end()))
|
|
281
|
+
exitbbs.insert(succ);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
bool isLoopHeader(const BasicBlock* bb) const
|
|
288
|
+
{
|
|
289
|
+
if (hasLoopInfo(bb))
|
|
290
|
+
{
|
|
291
|
+
const std::vector<const BasicBlock*>& blocks = getLoopInfo(bb);
|
|
292
|
+
assert(!blocks.empty() && "no available loop info?");
|
|
293
|
+
return blocks.front() == bb;
|
|
294
|
+
}
|
|
295
|
+
return false;
|
|
296
|
+
}
|
|
297
|
+
|
|
254
298
|
bool dominate(const BasicBlock* bbKey, const BasicBlock* bbValue) const
|
|
255
299
|
{
|
|
256
300
|
if (bbKey == bbValue)
|
|
@@ -352,7 +396,6 @@ public:
|
|
|
352
396
|
{
|
|
353
397
|
return CB;
|
|
354
398
|
}
|
|
355
|
-
using arg_iterator = User::const_op_iterator;
|
|
356
399
|
Value *getArgument(unsigned ArgNo) const
|
|
357
400
|
{
|
|
358
401
|
return CB->getArgOperand(ArgNo);
|
|
@@ -361,14 +404,6 @@ public:
|
|
|
361
404
|
{
|
|
362
405
|
return CB->getType();
|
|
363
406
|
}
|
|
364
|
-
User::const_op_iterator arg_begin() const
|
|
365
|
-
{
|
|
366
|
-
return CB->arg_begin();
|
|
367
|
-
}
|
|
368
|
-
User::const_op_iterator arg_end() const
|
|
369
|
-
{
|
|
370
|
-
return CB->arg_end();
|
|
371
|
-
}
|
|
372
407
|
unsigned arg_size() const
|
|
373
408
|
{
|
|
374
409
|
return CB->arg_size();
|
|
@@ -259,18 +259,16 @@ SaberCondAllocator::Condition SaberCondAllocator::evaluateLoopExitBranch(const B
|
|
|
259
259
|
const Function *fun = bb->getParent();
|
|
260
260
|
assert(fun == dst->getParent() && "two basic blocks should be in the same function");
|
|
261
261
|
|
|
262
|
-
const
|
|
263
|
-
if (
|
|
262
|
+
const SVFFunction * svffun = LLVMModuleSet::getLLVMModuleSet()->getSVFFunction(fun);
|
|
263
|
+
if (svffun->isLoopHeader(bb))
|
|
264
264
|
{
|
|
265
|
-
const
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
loop->getExitBlocks(exitbbs);
|
|
265
|
+
Set<const BasicBlock *> filteredbbs;
|
|
266
|
+
Set<const BasicBlock*> exitbbs;
|
|
267
|
+
svffun->getExitBlocksOfLoop(bb,exitbbs);
|
|
269
268
|
/// exclude exit bb which calls program exit
|
|
270
|
-
|
|
269
|
+
for(const BasicBlock *eb : exitbbs)
|
|
271
270
|
{
|
|
272
|
-
|
|
273
|
-
if (!isBBCallsProgExit(eb))
|
|
271
|
+
if(!isBBCallsProgExit(eb))
|
|
274
272
|
filteredbbs.insert(eb);
|
|
275
273
|
}
|
|
276
274
|
|
|
@@ -154,6 +154,7 @@ void LLVMModuleSet::build()
|
|
|
154
154
|
DominanceFrontier df;
|
|
155
155
|
dt.recalculate(*svffun->getLLVMFun());
|
|
156
156
|
df.analyze(dt);
|
|
157
|
+
LoopInfo loopInfo = LoopInfo(dt);
|
|
157
158
|
PostDominatorTree pdt = PostDominatorTree(*(func->getLLVMFun()));
|
|
158
159
|
Map<const BasicBlock*,Set<const BasicBlock*>> & dfBBsMap = svffun->getDomFrontierMap();
|
|
159
160
|
for (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)
|
|
@@ -200,6 +201,13 @@ void LLVMModuleSet::build()
|
|
|
200
201
|
svffun->getPostDomTreeMap()[bb] = Set<const BasicBlock *>();
|
|
201
202
|
}
|
|
202
203
|
}
|
|
204
|
+
if (const Loop *loop = loopInfo.getLoopFor(bb))
|
|
205
|
+
{
|
|
206
|
+
for (BasicBlock* loopBlock:loop->getBlocks())
|
|
207
|
+
{
|
|
208
|
+
svffun->addToBB2LoopMap(bb,loopBlock);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
203
211
|
}
|
|
204
212
|
}
|
|
205
213
|
}
|
|
@@ -781,7 +781,7 @@ void SVFIRBuilder::visitCallSite(CallSite cs)
|
|
|
781
781
|
pag->addCallSite(callBlockNode);
|
|
782
782
|
|
|
783
783
|
/// Collect callsite arguments and returns
|
|
784
|
-
for(
|
|
784
|
+
for(User::op_iterator itA = cs.getInstruction()->arg_begin(), ieA = cs.getInstruction()->arg_end(); itA!=ieA; ++itA)
|
|
785
785
|
pag->addCallSiteArgs(callBlockNode,pag->getGNode(getValueNode(*itA)));
|
|
786
786
|
|
|
787
787
|
if(!cs.getType()->isVoidTy())
|
|
@@ -954,7 +954,7 @@ void SVFIRBuilder::handleDirectCall(CallSite cs, const SVFFunction *F)
|
|
|
954
954
|
addRetEdge(srcret, dstrec,callICFGNode, exitICFGNode);
|
|
955
955
|
}
|
|
956
956
|
//Iterators for the actual and formal parameters
|
|
957
|
-
|
|
957
|
+
User::op_iterator itA = cs.getInstruction()->arg_begin(), ieA = cs.getInstruction()->arg_end();
|
|
958
958
|
Function::const_arg_iterator itF = F->getLLVMFun()->arg_begin(), ieF = F->getLLVMFun()->arg_end();
|
|
959
959
|
//Go through the fixed parameters.
|
|
960
960
|
DBOUT(DPAGBuild, outs() << " args:");
|
|
@@ -174,8 +174,8 @@ void SymbolTableBuilder::buildMemModel(SVFModule* svfModule)
|
|
|
174
174
|
|
|
175
175
|
CallSite cs = SVFUtil::getLLVMCallSite(inst);
|
|
176
176
|
symInfo->callSiteSet.insert(cs);
|
|
177
|
-
for (
|
|
178
|
-
it != cs.arg_end(); ++it)
|
|
177
|
+
for (User::op_iterator it = cs.getInstruction()->arg_begin();
|
|
178
|
+
it != cs.getInstruction()->arg_end(); ++it)
|
|
179
179
|
{
|
|
180
180
|
collectSym(*it);
|
|
181
181
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.574",
|
|
4
4
|
"description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|