svf-tools 1.0.628 → 1.0.630
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/AddressValue_8h_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/Andersen_8h_source.html +6 -6
- package/SVF-doxygen/html/html/Annotator_8h.html +2 -1
- package/SVF-doxygen/html/html/Annotator_8h_source.html +19 -18
- package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLAlias_8cpp.html +1 -0
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +11 -10
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +5 -5
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CFLVF_8cpp.html +1 -0
- package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +6 -5
- package/SVF-doxygen/html/html/CFLVF_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +23 -23
- package/SVF-doxygen/html/html/CHG_8cpp.html +7 -6
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +22 -21
- package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +6 -6
- package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CppUtil_8cpp.html +247 -0
- package/SVF-doxygen/html/html/CppUtil_8cpp_source.html +98 -0
- package/SVF-doxygen/html/html/CppUtil_8h.html +122 -0
- package/SVF-doxygen/html/html/CppUtil_8h_source.html +94 -0
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DCHG_8cpp.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +40 -40
- package/SVF-doxygen/html/html/DCHG_8h.html +2 -1
- package/SVF-doxygen/html/html/DCHG_8h_source.html +75 -74
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +7 -7
- package/SVF-doxygen/html/html/DPItem_8h_source.html +6 -6
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ExeState_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ExtAPI_8cpp.html +9 -8
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +10 -9
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +6 -6
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
- 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/ICFGEdge_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IntervalExeState_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IntervalExeState_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IntervalValue_8h_source.html +5 -5
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h.html +1 -0
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +3 -2
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +41 -41
- package/SVF-doxygen/html/html/LLVMModule_8h.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LLVMUtil_8cpp.html +78 -1
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +71 -38
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +41 -7
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +75 -50
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +4 -4
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +5 -5
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MTAAnnotator_8h.html +3 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +29 -27
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MTAStat_8h.html +1 -0
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +9 -8
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/MTA_8h.html +1 -0
- package/SVF-doxygen/html/html/MTA_8h_source.html +12 -11
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +4 -4
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp.html +1 -0
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +23 -23
- package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +17 -17
- package/SVF-doxygen/html/html/NumericLiteral_8h_source.html +4 -4
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +4 -4
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h.html +1 -0
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +43 -43
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +12 -12
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp.html +1 -0
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +24 -23
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +22 -22
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +2 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +34 -33
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +25 -25
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointsTo_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +5 -5
- package/SVF-doxygen/html/html/RelExeState_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/RelExeState_8h_source.html +4 -4
- package/SVF-doxygen/html/html/RelationSolver_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/RelationSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SCC_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR2Relation_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +35 -35
- package/SVF-doxygen/html/html/SVFIRBuilder_8h.html +1 -0
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +54 -53
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SVFLoop_8h_source.html +1 -1
- 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/SVFStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SVFType_8h.html +65 -35
- package/SVF-doxygen/html/html/SVFType_8h_source.html +114 -114
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFUtil_8h.html +2 -3
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +36 -36
- package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +11 -11
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp.html +2 -0
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +37 -36
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +27 -27
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +36 -36
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +8 -8
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp.html +1 -0
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +11 -10
- package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +5 -5
- package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/VFG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +3 -3
- package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +3 -3
- package/SVF-doxygen/html/html/WPASolver_8h_source.html +3 -3
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WTO_8h_source.html +2 -2
- package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
- 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_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddressValue.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +49 -49
- 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 +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CFLData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +63 -63
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CxtDPItem.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmtDPItem.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +124 -124
- package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +66 -66
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1DPItem.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1EntryCHI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
- 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_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +4 -4
- 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_1IntervalExeState.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +70 -70
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +47 -47
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1MSSACHI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSADEF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAMU.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MutableVersionedPTData.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +141 -141
- package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +78 -78
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1RelExeState.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1RelationSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetMU.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFArrayType.html +6 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunctionType.html +9 -10
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +352 -352
- package/SVF-doxygen/html/html/classSVF_1_1SVFIntergerType.html +5 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +4 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFPointerType.html +9 -10
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +5 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +40 -42
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +95 -95
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1StmtDPItem.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +71 -71
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
- 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 +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +18 -18
- 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 +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Wto.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WtoCycle.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +1 -1
- package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/dir_862d3276083eaac55caed79b9120bf29.html +2 -0
- package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
- package/SVF-doxygen/html/html/dir_967d846b666a902c6ca9bc5c37976e49.html +0 -2
- package/SVF-doxygen/html/html/dir_a07347b69f031d2f872c9d4a9c274c8c.html +0 -2
- package/SVF-doxygen/html/html/files.html +41 -41
- package/SVF-doxygen/html/html/functions_func_i.html +3 -3
- package/SVF-doxygen/html/html/functions_g.html +1 -1
- package/SVF-doxygen/html/html/functions_i.html +3 -3
- package/SVF-doxygen/html/html/functions_n.html +4 -4
- package/SVF-doxygen/html/html/functions_o.html +15 -13
- package/SVF-doxygen/html/html/functions_s.html +7 -7
- package/SVF-doxygen/html/html/functions_t.html +9 -9
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/globals_c.html +1 -1
- package/SVF-doxygen/html/html/globals_d.html +3 -0
- package/SVF-doxygen/html/html/globals_defs.html +3 -0
- package/SVF-doxygen/html/html/globals_func.html +3 -3
- package/SVF-doxygen/html/html/globals_g.html +1 -1
- package/SVF-doxygen/html/html/globals_h.html +1 -1
- package/SVF-doxygen/html/html/globals_i.html +1 -1
- package/SVF-doxygen/html/html/globals_n.html +1 -1
- package/SVF-doxygen/html/html/globals_s.html +1 -1
- package/SVF-doxygen/html/html/globals_v.html +4 -4
- package/SVF-doxygen/html/html/globals_vars.html +7 -7
- package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/iterator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/iterator__range_8h_source.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp.html +4 -4
- package/SVF-doxygen/html/html/mta_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/namespaceSVF.html +53 -53
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +620 -150
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +95 -125
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +27 -440
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil_1_1ctir.html +4 -4
- package/SVF-doxygen/html/html/namespacemembers_d.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_func_d.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_func_g.html +10 -10
- package/SVF-doxygen/html/html/namespacemembers_func_i.html +9 -8
- package/SVF-doxygen/html/html/namespacemembers_func_v.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_g.html +10 -10
- package/SVF-doxygen/html/html/namespacemembers_i.html +9 -8
- package/SVF-doxygen/html/html/namespacemembers_n.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_type_n.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_v.html +1 -1
- package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_10.js +1 -1
- package/SVF-doxygen/html/html/search/all_12.js +6 -6
- package/SVF-doxygen/html/html/search/all_13.js +5 -5
- package/SVF-doxygen/html/html/search/all_15.js +7 -7
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +3 -3
- package/SVF-doxygen/html/html/search/all_4.js +2 -1
- package/SVF-doxygen/html/html/search/all_7.js +12 -12
- package/SVF-doxygen/html/html/search/all_8.js +1 -1
- package/SVF-doxygen/html/html/search/all_9.js +10 -10
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +3 -3
- package/SVF-doxygen/html/html/search/all_f.js +2 -2
- package/SVF-doxygen/html/html/search/defines_3.js +1 -0
- package/SVF-doxygen/html/html/search/files_2.js +2 -2
- package/SVF-doxygen/html/html/search/functions_14.js +1 -1
- package/SVF-doxygen/html/html/search/functions_3.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +12 -12
- package/SVF-doxygen/html/html/search/functions_7.js +1 -1
- package/SVF-doxygen/html/html/search/functions_8.js +10 -10
- package/SVF-doxygen/html/html/search/typedefs_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_12.js +1 -1
- package/SVF-doxygen/html/html/search/variables_13.js +2 -2
- package/SVF-doxygen/html/html/search/variables_15.js +4 -4
- package/SVF-doxygen/html/html/search/variables_3.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +12 -12
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4-members.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +26 -16
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4-members.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +25 -15
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4-members.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +29 -19
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1Hash.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +5 -5
- package/SVF-doxygen/html/html/structSVF_1_1MemRegion_1_1equalMemRegion.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1equalNodeBS.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1equalPointsTo.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1cppUtil_1_1DemangledName.html +6 -6
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +4 -4
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/MTA/MTA.h +1 -0
- package/include/MTA/MTAStat.h +1 -0
- package/include/MemoryModel/PersistentPointsToCache.h +1 -0
- package/include/SVF-LLVM/DCHG.h +2 -1
- package/include/SVF-LLVM/LLVMLoopAnalysis.h +1 -0
- package/include/SVF-LLVM/LLVMModule.h +2 -2
- package/include/SVF-LLVM/LLVMUtil.h +135 -79
- package/include/SVF-LLVM/SVFIRBuilder.h +1 -0
- package/include/SVFIR/PAGBuilderFromFile.h +3 -3
- package/include/SVFIR/SVFIR.h +3 -3
- package/include/SVFIR/SVFModule.h +3 -3
- package/include/SVFIR/SVFStatements.h +3 -3
- package/include/SVFIR/SVFType.h +120 -103
- package/include/SVFIR/SVFValue.h +3 -3
- package/include/SVFIR/SVFVariables.h +3 -3
- package/include/SVFIR/SymbolTableInfo.h +3 -3
- package/include/Util/Annotator.h +8 -17
- package/include/{SVF-LLVM/CPPUtil.h → Util/CppUtil.h} +5 -54
- package/include/Util/SVFUtil.h +3 -9
- package/index.html +9 -5
- package/lib/CFL/CFLAlias.cpp +1 -1
- package/lib/CFL/CFLVF.cpp +1 -0
- package/lib/Graphs/CHG.cpp +1 -0
- package/lib/Graphs/ConsG.cpp +0 -5
- package/lib/Graphs/IRGraph.cpp +0 -5
- package/lib/Graphs/SVFG.cpp +0 -5
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -0
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -0
- package/lib/SABER/SaberCondAllocator.cpp +2 -0
- package/lib/SVF-LLVM/CHGBuilder.cpp +10 -10
- package/lib/SVF-LLVM/DCHG.cpp +1 -1
- package/lib/SVF-LLVM/LLVMModule.cpp +4 -4
- package/lib/SVF-LLVM/LLVMUtil.cpp +362 -4
- package/lib/SVF-LLVM/SVFIRBuilder.cpp +2 -2
- package/lib/SVF-LLVM/SymbolTableBuilder.cpp +1 -1
- package/lib/Util/CppUtil.cpp +214 -0
- package/lib/Util/ExtAPI.cpp +1 -1
- package/lib/Util/NodeIDAllocator.cpp +3 -2
- package/lib/WPA/TypeAnalysis.cpp +1 -0
- package/package.json +1 -1
- package/tools/MTA/MTAAnnotator.h +2 -0
- package/lib/SVF-LLVM/CPPUtil.cpp +0 -572
|
@@ -66,38 +66,39 @@ $(function() {
|
|
|
66
66
|
<div class="title">TypeAnalysis.cpp</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="TypeAnalysis_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- TypeAnalysis.cpp -- Fast type-based analysis without pointer analysis------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * TypeAnalysis.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: 7 Sep. 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="CHG_8h.html">Graphs/CHG.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="TypeAnalysis_8h.html">WPA/TypeAnalysis.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="PTAStat_8h.html">Util/PTAStat.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="ICFGStat_8h.html">Graphs/ICFGStat.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="VFG_8h.html">Graphs/VFG.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">using namespace </span><a class="code" href="namespacecppUtil.html">cppUtil</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985"> 44</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985">TypeAnalysis::initialize</a>()</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">AndersenBase::initialize</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae7ccfb3d1308e205e5014849dcc43d9a">Options::DumpICFG</a>())</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  icfg = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  icfg-><a class="code" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">dump</a>(<span class="stringliteral">"icfg_initial"</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  icfg->dump(<span class="stringliteral">"vfg_initial"</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span> (print_stat)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="classSVF_1_1ICFGStat.html">ICFGStat</a> stat(icfg);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  stat.<a class="code" href="classSVF_1_1ICFGStat.html#aabe0779dc44ddc4e06300ea912cca39f">performStat</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6"> 61</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">TypeAnalysis::finalize</a>()</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">AndersenBase::finalize</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">if</span> (print_stat)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  dumpCHAStats();</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> </div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef"> 68</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef">TypeAnalysis::analyze</a>()</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  initialize();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a> newEdges;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  callGraphSolveBasedOnCHA(getIndirectCallsites(), newEdges);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  finalize();</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> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#aec579b7854aa6a994632d3f7c5d621db"> 76</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#aec579b7854aa6a994632d3f7c5d621db">TypeAnalysis::callGraphSolveBasedOnCHA</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>& callsites, <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a>& newEdges)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">for</span>(CallSiteToFunPtrMap::const_iterator iter = callsites.begin(), eiter = callsites.end(); iter!=eiter; ++iter)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = iter->first;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(cbn-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">if</span> (cs.<a class="code" href="classSVF_1_1CallSite.html#a427a38e580db4bf04c9d716762243c89">isVirtualCall</a>())</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>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* vtbl = cs.<a class="code" href="classSVF_1_1CallSite.html#a9b04a0f24be915a6e124106060225a3d">getVtablePtr</a>();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  (void)vtbl; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  assert(pag->hasValueNode(vtbl));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#aa7f15c74eb438be78fcc028534477478">VFunSet</a> vfns;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  getVFnsFromCHA(cbn, vfns);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  connectVCallToVFns(cbn, vfns, newEdges);</div><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> }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a124fc67578745cde9e74bb36aced25a2"> 95</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a124fc67578745cde9e74bb36aced25a2">TypeAnalysis::dumpCHAStats</a>()</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> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a> *chgraph = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a>>(getCHGraph());</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> (chgraph == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"dumpCHAStats only implemented for standard CHGraph.\n"</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pure_abstract_class_num = 0,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  multi_inheritance_class_num = 0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  it != eit; ++it)</div><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>  <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it->second;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"class "</span> << node-><a class="code" href="classSVF_1_1CHNode.html#af6e71c1a932464b1b615fc177f5af089">getName</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span> (node-><a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  pure_abstract_class_num++;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span> (node-><a class="code" href="classSVF_1_1CHNode.html#a224a394537fae62e64cf62a0d4fdd430">isMultiInheritance</a>())</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  multi_inheritance_class_num++;</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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"class_num:\t"</span> << chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>() << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"pure_abstract_class_num:\t"</span> << pure_abstract_class_num << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"multi_inheritance_class_num:\t"</span> << multi_inheritance_class_num << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">/*</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment"> * count the following info:</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment"> * vtblnum</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment"> * total vfunction</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment"> * vtbl max vfunction</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment"> * pure abstract class</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment"> */</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vtblnum = 0,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  vfunc_total = 0,</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  vtbl_max = 0,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  pure_abstract = 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  set<const SVFFunction*> allVirtualFunctions;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  it != eit; ++it)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it->second;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (node-><a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  pure_abstract++;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vfuncs_size = 0;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">const</span> vector<CHNode::FuncVector>& vecs = node-><a class="code" href="classSVF_1_1CHNode.html#a5df1cf4d51bf3406d188c96bc9aae0af">getVirtualFunctionVectors</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">for</span> (vector<CHNode::FuncVector>::const_iterator vit = vecs.begin(),</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  veit = vecs.end(); vit != veit; ++vit)</div><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>  vfuncs_size += (*vit).size();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">for</span> (vector<const SVFFunction*>::const_iterator fit = (*vit).begin(),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  feit = (*vit).end(); fit != feit; ++fit)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = *fit;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  allVirtualFunctions.insert(func);</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">if</span> (vfuncs_size > 0)</div><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>  vtblnum++;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span> (vfuncs_size > vtbl_max)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  vtbl_max = vfuncs_size;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  vfunc_total = allVirtualFunctions.size();</div><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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"vtblnum:\t"</span> << vtblnum << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"vtbl_average:\t"</span> << (double)(vfunc_total)/vtblnum << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"vtbl_max:\t"</span> << vtbl_max << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"pure_abstract:\t"</span> << pure_abstract << <span class="charliteral">'\n'</span>;</div><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> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="ttc" id="TypeAnalysis_8h_html"><div class="ttname"><a href="TypeAnalysis_8h.html">TypeAnalysis.h</a></div></div>
|
|
69
|
+
<a href="TypeAnalysis_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- TypeAnalysis.cpp -- Fast type-based analysis without pointer analysis------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * TypeAnalysis.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: 7 Sep. 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="CHG_8h.html">Graphs/CHG.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="TypeAnalysis_8h.html">WPA/TypeAnalysis.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="PTAStat_8h.html">Util/PTAStat.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="ICFGStat_8h.html">Graphs/ICFGStat.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="VFG_8h.html">Graphs/VFG.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="CppUtil_8h.html">Util/CppUtil.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">using namespace </span><a class="code" href="namespacecppUtil.html">cppUtil</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985"> 45</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985">TypeAnalysis::initialize</a>()</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">AndersenBase::initialize</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae7ccfb3d1308e205e5014849dcc43d9a">Options::DumpICFG</a>())</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  icfg = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  icfg-><a class="code" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">dump</a>(<span class="stringliteral">"icfg_initial"</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  icfg->dump(<span class="stringliteral">"vfg_initial"</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span> (print_stat)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classSVF_1_1ICFGStat.html">ICFGStat</a> stat(icfg);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  stat.<a class="code" href="classSVF_1_1ICFGStat.html#aabe0779dc44ddc4e06300ea912cca39f">performStat</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6"> 62</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">TypeAnalysis::finalize</a>()</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">AndersenBase::finalize</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span> (print_stat)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  dumpCHAStats();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef"> 69</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef">TypeAnalysis::analyze</a>()</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  initialize();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a> newEdges;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  callGraphSolveBasedOnCHA(getIndirectCallsites(), newEdges);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  finalize();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#aec579b7854aa6a994632d3f7c5d621db"> 77</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#aec579b7854aa6a994632d3f7c5d621db">TypeAnalysis::callGraphSolveBasedOnCHA</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>& callsites, <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a>& newEdges)</div><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">for</span>(CallSiteToFunPtrMap::const_iterator iter = callsites.begin(), eiter = callsites.end(); iter!=eiter; ++iter)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = iter->first;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(cbn-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span> (cs.<a class="code" href="classSVF_1_1CallSite.html#a427a38e580db4bf04c9d716762243c89">isVirtualCall</a>())</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* vtbl = cs.<a class="code" href="classSVF_1_1CallSite.html#a9b04a0f24be915a6e124106060225a3d">getVtablePtr</a>();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  (void)vtbl; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  assert(pag->hasValueNode(vtbl));</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#aa7f15c74eb438be78fcc028534477478">VFunSet</a> vfns;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  getVFnsFromCHA(cbn, vfns);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  connectVCallToVFns(cbn, vfns, newEdges);</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>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a124fc67578745cde9e74bb36aced25a2"> 96</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a124fc67578745cde9e74bb36aced25a2">TypeAnalysis::dumpCHAStats</a>()</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> {</div><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="keyword">const</span> <a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a> *chgraph = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a>>(getCHGraph());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span> (chgraph == <span class="keyword">nullptr</span>)</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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"dumpCHAStats only implemented for standard CHGraph.\n"</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</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>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pure_abstract_class_num = 0,</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  multi_inheritance_class_num = 0;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  it != eit; ++it)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it->second;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"class "</span> << node-><a class="code" href="classSVF_1_1CHNode.html#af6e71c1a932464b1b615fc177f5af089">getName</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span> (node-><a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  pure_abstract_class_num++;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span> (node-><a class="code" href="classSVF_1_1CHNode.html#a224a394537fae62e64cf62a0d4fdd430">isMultiInheritance</a>())</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  multi_inheritance_class_num++;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"class_num:\t"</span> << chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>() << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"pure_abstract_class_num:\t"</span> << pure_abstract_class_num << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"multi_inheritance_class_num:\t"</span> << multi_inheritance_class_num << <span class="charliteral">'\n'</span>;</div><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="comment">/*</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment"> * count the following info:</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment"> * vtblnum</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment"> * total vfunction</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment"> * vtbl max vfunction</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment"> * pure abstract class</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="comment"> */</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vtblnum = 0,</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  vfunc_total = 0,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  vtbl_max = 0,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  pure_abstract = 0;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  set<const SVFFunction*> allVirtualFunctions;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  it != eit; ++it)</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>  <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it->second;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span> (node-><a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  pure_abstract++;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vfuncs_size = 0;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">const</span> vector<CHNode::FuncVector>& vecs = node-><a class="code" href="classSVF_1_1CHNode.html#a5df1cf4d51bf3406d188c96bc9aae0af">getVirtualFunctionVectors</a>();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">for</span> (vector<CHNode::FuncVector>::const_iterator vit = vecs.begin(),</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  veit = vecs.end(); vit != veit; ++vit)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  vfuncs_size += (*vit).size();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">for</span> (vector<const SVFFunction*>::const_iterator fit = (*vit).begin(),</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  feit = (*vit).end(); fit != feit; ++fit)</div><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="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = *fit;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  allVirtualFunctions.insert(func);</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>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span> (vfuncs_size > 0)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  vtblnum++;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">if</span> (vfuncs_size > vtbl_max)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  vtbl_max = vfuncs_size;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  vfunc_total = allVirtualFunctions.size();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"vtblnum:\t"</span> << vtblnum << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"vtbl_average:\t"</span> << (double)(vfunc_total)/vtblnum << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"vtbl_max:\t"</span> << vtbl_max << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"pure_abstract:\t"</span> << pure_abstract << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="ttc" id="TypeAnalysis_8h_html"><div class="ttname"><a href="TypeAnalysis_8h.html">TypeAnalysis.h</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
71
71
|
<div class="ttc" id="CHG_8h_html"><div class="ttname"><a href="CHG_8h.html">CHG.h</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1AndersenBase_html_a891816407a4c6346f56bc01a67b78aac"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">SVF::AndersenBase::initialize</a></div><div class="ttdeci">virtual void initialize() override</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00073">Andersen.cpp:73</a></div></div>
|
|
73
73
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00422">GenericGraph.h:422</a></div></div>
|
|
74
74
|
<div class="ttc" id="classSVF_1_1CHNode_html"><div class="ttname"><a href="classSVF_1_1CHNode.html">SVF::CHNode</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00104">CHG.h:104</a></div></div>
|
|
75
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#
|
|
76
|
-
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a124fc67578745cde9e74bb36aced25a2"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a124fc67578745cde9e74bb36aced25a2">SVF::TypeAnalysis::dumpCHAStats</a></div><div class="ttdeci">void dumpCHAStats()</div><div class="ttdoc">Statistics of CHA and callgraph. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#
|
|
75
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00195">SVFUtil.h:195</a></div></div>
|
|
76
|
+
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a124fc67578745cde9e74bb36aced25a2"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a124fc67578745cde9e74bb36aced25a2">SVF::TypeAnalysis::dumpCHAStats</a></div><div class="ttdeci">void dumpCHAStats()</div><div class="ttdoc">Statistics of CHA and callgraph. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#l00096">TypeAnalysis.cpp:96</a></div></div>
|
|
77
77
|
<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="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
|
|
78
78
|
<div class="ttc" id="VFG_8h_html"><div class="ttname"><a href="VFG_8h.html">VFG.h</a></div></div>
|
|
79
79
|
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
|
|
80
80
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type > dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00405">Casting.h:405</a></div></div>
|
|
81
|
+
<div class="ttc" id="CppUtil_8h_html"><div class="ttname"><a href="CppUtil_8h.html">CppUtil.h</a></div></div>
|
|
81
82
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00107">SVFIR.h:107</a></div></div>
|
|
82
83
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00347">GenericGraph.h:347</a></div></div>
|
|
83
|
-
<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="SVFType_8h_source.html#
|
|
84
|
+
<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="SVFType_8h_source.html#l00049">SVFType.h:49</a></div></div>
|
|
84
85
|
<div class="ttc" id="classSVF_1_1CHGraph_html"><div class="ttname"><a href="classSVF_1_1CHGraph.html">SVF::CHGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00208">CHG.h:208</a></div></div>
|
|
85
86
|
<div class="ttc" id="classSVF_1_1CHNode_html_a224a394537fae62e64cf62a0d4fdd430"><div class="ttname"><a href="classSVF_1_1CHNode.html#a224a394537fae62e64cf62a0d4fdd430">SVF::CHNode::isMultiInheritance</a></div><div class="ttdeci">bool isMultiInheritance() const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00157">CHG.h:157</a></div></div>
|
|
86
87
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html_a90fd0b8e44fba1a7eb76d15bce085d66"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const SVFInstruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00380">ICFGNode.h:380</a></div></div>
|
|
87
88
|
<div class="ttc" id="classSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00147">SVFValue.h:147</a></div></div>
|
|
88
|
-
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a6073fc43443ceba8d77212ba04e483ef"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef">SVF::TypeAnalysis::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdoc">Type analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#
|
|
89
|
+
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a6073fc43443ceba8d77212ba04e483ef"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef">SVF::TypeAnalysis::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdoc">Type analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#l00069">TypeAnalysis.cpp:69</a></div></div>
|
|
89
90
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a35bd5f0fb2c146199e9f1aa6a19b4062"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">SVF::PointerAnalysis::CallEdgeMap</a></div><div class="ttdeci">OrderedMap< const CallICFGNode *, FunctionSet > CallEdgeMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00106">PointerAnalysis.h:106</a></div></div>
|
|
90
91
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00373">GenericGraph.h:373</a></div></div>
|
|
91
92
|
<div class="ttc" id="classSVF_1_1ICFGStat_html"><div class="ttname"><a href="classSVF_1_1ICFGStat.html">SVF::ICFGStat</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGStat_8h_source.html#l00039">ICFGStat.h:39</a></div></div>
|
|
92
93
|
<div class="ttc" id="classSVF_1_1CallSite_html_a9b04a0f24be915a6e124106060225a3d"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9b04a0f24be915a6e124106060225a3d">SVF::CallSite::getVtablePtr</a></div><div class="ttdeci">const SVFValue * getVtablePtr() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01071">SVFValue.h:1071</a></div></div>
|
|
93
94
|
<div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
|
|
94
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream & errs()</div><div class="ttdoc">Overwrite llvm::errs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#
|
|
95
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#
|
|
95
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream & errs()</div><div class="ttdoc">Overwrite llvm::errs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
|
|
96
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
|
|
96
97
|
<div class="ttc" id="classSVF_1_1AndersenBase_html_a28a1c3571cdee5e05004b29ace364e67"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase::finalize</a></div><div class="ttdeci">virtual void finalize() override</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00089">Andersen.cpp:89</a></div></div>
|
|
97
|
-
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_aec579b7854aa6a994632d3f7c5d621db"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#aec579b7854aa6a994632d3f7c5d621db">SVF::TypeAnalysis::callGraphSolveBasedOnCHA</a></div><div class="ttdeci">void callGraphSolveBasedOnCHA(const CallSiteToFunPtrMap &callsites, CallEdgeMap &newEdges)</div><div class="ttdoc">Resolve callgraph based on CHA. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#
|
|
98
|
+
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_aec579b7854aa6a994632d3f7c5d621db"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#aec579b7854aa6a994632d3f7c5d621db">SVF::TypeAnalysis::callGraphSolveBasedOnCHA</a></div><div class="ttdeci">void callGraphSolveBasedOnCHA(const CallSiteToFunPtrMap &callsites, CallEdgeMap &newEdges)</div><div class="ttdoc">Resolve callgraph based on CHA. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#l00077">TypeAnalysis.cpp:77</a></div></div>
|
|
98
99
|
<div class="ttc" id="classSVF_1_1Options_html_ae7ccfb3d1308e205e5014849dcc43d9a"><div class="ttname"><a href="classSVF_1_1Options.html#ae7ccfb3d1308e205e5014849dcc43d9a">SVF::Options::DumpICFG</a></div><div class="ttdeci">static const Option< bool > DumpICFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00136">Options.h:136</a></div></div>
|
|
99
100
|
<div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
|
|
100
|
-
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a8efef079c8b33e2215f92ac3629789e6"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">SVF::TypeAnalysis::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#
|
|
101
|
+
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a8efef079c8b33e2215f92ac3629789e6"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">SVF::TypeAnalysis::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#l00062">TypeAnalysis.cpp:62</a></div></div>
|
|
101
102
|
<div class="ttc" id="ICFGStat_8h_html"><div class="ttname"><a href="ICFGStat_8h.html">ICFGStat.h</a></div></div>
|
|
102
103
|
<div class="ttc" id="classSVF_1_1CallSite_html_a427a38e580db4bf04c9d716762243c89"><div class="ttname"><a href="classSVF_1_1CallSite.html#a427a38e580db4bf04c9d716762243c89">SVF::CallSite::isVirtualCall</a></div><div class="ttdeci">bool isVirtualCall() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01067">SVFValue.h:1067</a></div></div>
|
|
103
104
|
<div class="ttc" id="classSVF_1_1ICFG_html_a999956500bbd605326531480546db9ba"><div class="ttname"><a href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">SVF::ICFG::dump</a></div><div class="ttdeci">void dump(const std::string &file, bool simple=false)</div><div class="ttdoc">Dump graph into dot file. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00442">ICFG.cpp:442</a></div></div>
|
|
@@ -112,7 +113,7 @@ $(function() {
|
|
|
112
113
|
<div class="ttc" id="PTAStat_8h_html"><div class="ttname"><a href="PTAStat_8h.html">PTAStat.h</a></div></div>
|
|
113
114
|
<div class="ttc" id="classSVF_1_1CHNode_html_a268ccdfb486cc2efa8581ee7a3b5af39"><div class="ttname"><a href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">SVF::CHNode::isPureAbstract</a></div><div class="ttdeci">bool isPureAbstract() const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00153">CHG.h:153</a></div></div>
|
|
114
115
|
<div class="ttc" id="classSVF_1_1CHNode_html_af6e71c1a932464b1b615fc177f5af089"><div class="ttname"><a href="classSVF_1_1CHNode.html#af6e71c1a932464b1b615fc177f5af089">SVF::CHNode::getName</a></div><div class="ttdeci">std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00123">CHG.h:123</a></div></div>
|
|
115
|
-
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a34177236a41f7a2b432243062f829985"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985">SVF::TypeAnalysis::initialize</a></div><div class="ttdeci">void initialize()</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#
|
|
116
|
+
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a34177236a41f7a2b432243062f829985"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985">SVF::TypeAnalysis::initialize</a></div><div class="ttdeci">void initialize()</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#l00045">TypeAnalysis.cpp:45</a></div></div>
|
|
116
117
|
<div class="ttc" id="classSVF_1_1CHNode_html_a5df1cf4d51bf3406d188c96bc9aae0af"><div class="ttname"><a href="classSVF_1_1CHNode.html#a5df1cf4d51bf3406d188c96bc9aae0af">SVF::CHNode::getVirtualFunctionVectors</a></div><div class="ttdeci">const std::vector< FuncVector > & getVirtualFunctionVectors() const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00171">CHG.h:171</a></div></div>
|
|
117
118
|
</div><!-- fragment --></div><!-- contents -->
|
|
118
119
|
<!-- start footer part -->
|
|
@@ -68,15 +68,15 @@ $(function() {
|
|
|
68
68
|
<div class="contents">
|
|
69
69
|
<a href="TypeAnalysis_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- TypeAnalysis.h -- Fast type-based analysis without pointer analysis---------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * TypeAnalysis.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: 7 Sep. 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef INCLUDE_WPA_TYPEANALYSIS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define INCLUDE_WPA_TYPEANALYSIS_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="Andersen_8h.html">WPA/Andersen.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1TypeAnalysis.html">TypeAnalysis</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#aaec66fea631bfe00064182e17dfb9db3"> 43</a></span>  <a class="code" href="classSVF_1_1TypeAnalysis.html#aaec66fea631bfe00064182e17dfb9db3">TypeAnalysis</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  : <a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a>(pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a>)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a6375b5601feda2fb22259ecce08548fc"> 49</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a6375b5601feda2fb22259ecce08548fc">~TypeAnalysis</a>()</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef">analyze</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985">initialize</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">finalize</a>();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#aec579b7854aa6a994632d3f7c5d621db">callGraphSolveBasedOnCHA</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>& callsites, <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a>& newEdges);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a124fc67578745cde9e74bb36aced25a2">dumpCHAStats</a>();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#ae14733ac9763b07a84ed9b5e297badf3"> 70</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#ae14733ac9763b07a84ed9b5e297badf3">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TypeAnalysis.html">TypeAnalysis</a> *)</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">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a62f4d86457baa516e0fc5db0721dab5f"> 74</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a62f4d86457baa516e0fc5db0721dab5f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> (pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> } <span class="comment">// End namespace SVF</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> <span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_WPA_TYPEANALYSIS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="Andersen_8h_html"><div class="ttname"><a href="Andersen_8h.html">Andersen.h</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_ae14733ac9763b07a84ed9b5e297badf3"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#ae14733ac9763b07a84ed9b5e297badf3">SVF::TypeAnalysis::classof</a></div><div class="ttdeci">static bool classof(const TypeAnalysis *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8h_source.html#l00070">TypeAnalysis.h:70</a></div></div>
|
|
71
|
-
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a124fc67578745cde9e74bb36aced25a2"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a124fc67578745cde9e74bb36aced25a2">SVF::TypeAnalysis::dumpCHAStats</a></div><div class="ttdeci">void dumpCHAStats()</div><div class="ttdoc">Statistics of CHA and callgraph. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#
|
|
71
|
+
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a124fc67578745cde9e74bb36aced25a2"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a124fc67578745cde9e74bb36aced25a2">SVF::TypeAnalysis::dumpCHAStats</a></div><div class="ttdeci">void dumpCHAStats()</div><div class="ttdoc">Statistics of CHA and callgraph. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#l00096">TypeAnalysis.cpp:96</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac23f71c1307cda9cba44acc40059f0a3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">SVF::PointerAnalysis::getAnalysisTy</a></div><div class="ttdeci">PTATY getAnalysisTy() const</div><div class="ttdoc">Type of pointer analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00188">PointerAnalysis.h:188</a></div></div>
|
|
73
73
|
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a6375b5601feda2fb22259ecce08548fc"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a6375b5601feda2fb22259ecce08548fc">SVF::TypeAnalysis::~TypeAnalysis</a></div><div class="ttdeci">virtual ~TypeAnalysis()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8h_source.html#l00049">TypeAnalysis.h:49</a></div></div>
|
|
74
|
-
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a6073fc43443ceba8d77212ba04e483ef"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef">SVF::TypeAnalysis::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdoc">Type analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#
|
|
74
|
+
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a6073fc43443ceba8d77212ba04e483ef"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef">SVF::TypeAnalysis::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdoc">Type analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#l00069">TypeAnalysis.cpp:69</a></div></div>
|
|
75
75
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a35bd5f0fb2c146199e9f1aa6a19b4062"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">SVF::PointerAnalysis::CallEdgeMap</a></div><div class="ttdeci">OrderedMap< const CallICFGNode *, FunctionSet > CallEdgeMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00106">PointerAnalysis.h:106</a></div></div>
|
|
76
76
|
<div class="ttc" id="classSVF_1_1AndersenBase_html"><div class="ttname"><a href="classSVF_1_1AndersenBase.html">SVF::AndersenBase</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00055">Andersen.h:55</a></div></div>
|
|
77
77
|
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a62f4d86457baa516e0fc5db0721dab5f"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a62f4d86457baa516e0fc5db0721dab5f">SVF::TypeAnalysis::classof</a></div><div class="ttdeci">static bool classof(const PointerAnalysis *pta)</div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8h_source.html#l00074">TypeAnalysis.h:74</a></div></div>
|
|
78
|
-
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_aec579b7854aa6a994632d3f7c5d621db"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#aec579b7854aa6a994632d3f7c5d621db">SVF::TypeAnalysis::callGraphSolveBasedOnCHA</a></div><div class="ttdeci">void callGraphSolveBasedOnCHA(const CallSiteToFunPtrMap &callsites, CallEdgeMap &newEdges)</div><div class="ttdoc">Resolve callgraph based on CHA. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#
|
|
79
|
-
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a8efef079c8b33e2215f92ac3629789e6"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">SVF::TypeAnalysis::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#
|
|
78
|
+
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_aec579b7854aa6a994632d3f7c5d621db"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#aec579b7854aa6a994632d3f7c5d621db">SVF::TypeAnalysis::callGraphSolveBasedOnCHA</a></div><div class="ttdeci">void callGraphSolveBasedOnCHA(const CallSiteToFunPtrMap &callsites, CallEdgeMap &newEdges)</div><div class="ttdoc">Resolve callgraph based on CHA. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#l00077">TypeAnalysis.cpp:77</a></div></div>
|
|
79
|
+
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a8efef079c8b33e2215f92ac3629789e6"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">SVF::TypeAnalysis::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#l00062">TypeAnalysis.cpp:62</a></div></div>
|
|
80
80
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00037">AbstractValue.h:37</a></div></div>
|
|
81
81
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad95c842964e6ca46e51fb763fefec585"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">SVF::PointerAnalysis::CallSiteToFunPtrMap</a></div><div class="ttdeci">SVFIR::CallSiteToFunPtrMap CallSiteToFunPtrMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00104">PointerAnalysis.h:104</a></div></div>
|
|
82
82
|
<div class="ttc" id="classSVF_1_1TypeAnalysis_html"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html">SVF::TypeAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8h_source.html#l00038">TypeAnalysis.h:38</a></div></div>
|
|
@@ -84,7 +84,7 @@ $(function() {
|
|
|
84
84
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00142">PointerAnalysis.h:142</a></div></div>
|
|
85
85
|
<div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
|
|
86
86
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">SVF::PointerAnalysis::TypeCPP_WPA</a></div><div class="ttdoc">Type-based analysis for C++. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00081">PointerAnalysis.h:81</a></div></div>
|
|
87
|
-
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a34177236a41f7a2b432243062f829985"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985">SVF::TypeAnalysis::initialize</a></div><div class="ttdeci">void initialize()</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#
|
|
87
|
+
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a34177236a41f7a2b432243062f829985"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985">SVF::TypeAnalysis::initialize</a></div><div class="ttdeci">void initialize()</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#l00045">TypeAnalysis.cpp:45</a></div></div>
|
|
88
88
|
<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#l00058">PointerAnalysis.h:58</a></div></div>
|
|
89
89
|
</div><!-- fragment --></div><!-- contents -->
|
|
90
90
|
<!-- start footer part -->
|
|
@@ -106,7 +106,7 @@ $(function() {
|
|
|
106
106
|
<div class="ttc" id="classSVF_1_1VFGEdge_html_ae14a5f58064e6c08b53a3cffcc050077"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#ae14a5f58064e6c08b53a3cffcc050077">SVF::VFGEdge::isCallIndirectVFGEdge</a></div><div class="ttdeci">bool isCallIndirectVFGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00100">VFGEdge.h:100</a></div></div>
|
|
107
107
|
<div class="ttc" id="classSVF_1_1RetDirSVFGEdge_html_a86ef0a34735096e86d3731cd6ecf769a"><div class="ttname"><a href="classSVF_1_1RetDirSVFGEdge.html#a86ef0a34735096e86d3731cd6ecf769a">SVF::RetDirSVFGEdge::getCallSiteId</a></div><div class="ttdeci">CallSiteID getCallSiteId() const</div><div class="ttdoc">Return callsite ID. </div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00266">VFGEdge.h:266</a></div></div>
|
|
108
108
|
<div class="ttc" id="classSVF_1_1VFGEdge_html_a8777555f00696706de250159b920d14b"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a8777555f00696706de250159b920d14b">SVF::VFGEdge::isDirectVFGEdge</a></div><div class="ttdeci">bool isDirectVFGEdge() const</div><div class="ttdoc">Get methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00076">VFGEdge.h:76</a></div></div>
|
|
109
|
-
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#
|
|
109
|
+
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00057">SVFType.h:57</a></div></div>
|
|
110
110
|
<div class="ttc" id="classSVF_1_1VFGEdge_html_a6260283036620da17d8b3686bad691a4"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a6260283036620da17d8b3686bad691a4">SVF::VFGEdge::operator<<</a></div><div class="ttdeci">friend OutStream & operator<<(OutStream &o, const VFGEdge &edge)</div><div class="ttdoc">Overloading operator << for dumping ICFG node ID. </div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00127">VFGEdge.h:127</a></div></div>
|
|
111
111
|
<div class="ttc" id="classSVF_1_1VFGEdge_html_a35e826ecdbdc55cb72aaec6c91419b0d"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a35e826ecdbdc55cb72aaec6c91419b0d">SVF::VFGEdge::~VFGEdge</a></div><div class="ttdeci">~VFGEdge()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00070">VFGEdge.h:70</a></div></div>
|
|
112
112
|
<div class="ttc" id="classSVF_1_1IntraDirSVFGEdge_html_a2157a56f5d707a946e2ad54219fdc69a"><div class="ttname"><a href="classSVF_1_1IntraDirSVFGEdge.html#a2157a56f5d707a946e2ad54219fdc69a">SVF::IntraDirSVFGEdge::IntraDirSVFGEdge</a></div><div class="ttdeci">IntraDirSVFGEdge(VFGNode *s, VFGNode *d)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00181">VFGEdge.h:181</a></div></div>
|
|
@@ -126,7 +126,7 @@ $(function() {
|
|
|
126
126
|
<div class="ttc" id="classSVF_1_1VFGEdge_html_a92e3da59f7f5a693945b9a93f169da04"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a92e3da59f7f5a693945b9a93f169da04">SVF::VFGEdge::isCallDirectVFGEdge</a></div><div class="ttdeci">bool isCallDirectVFGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00092">VFGEdge.h:92</a></div></div>
|
|
127
127
|
<div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5ac8124172b3f5f7fc94e895f6b192b668"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5ac8124172b3f5f7fc94e895f6b192b668">SVF::VFGEdge::RetIndVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00058">VFGEdge.h:58</a></div></div>
|
|
128
128
|
<div class="ttc" id="classSVF_1_1VFGEdge_html_a49cbf2a714c9b965b19452d266cd8bdf"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a49cbf2a714c9b965b19452d266cd8bdf">SVF::VFGEdge::isRetDirectVFGEdge</a></div><div class="ttdeci">bool isRetDirectVFGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00096">VFGEdge.h:96</a></div></div>
|
|
129
|
-
<div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#
|
|
129
|
+
<div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00048">SVFType.h:48</a></div></div>
|
|
130
130
|
<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>
|
|
131
131
|
<div class="ttc" id="classSVF_1_1RetDirSVFGEdge_html_ad794858b1424836850d55e66376de2c3"><div class="ttname"><a href="classSVF_1_1RetDirSVFGEdge.html#ad794858b1424836850d55e66376de2c3">SVF::RetDirSVFGEdge::classof</a></div><div class="ttdeci">static bool classof(const DirectSVFGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00276">VFGEdge.h:276</a></div></div>
|
|
132
132
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_af1c2fd4b5ef1d7b7605572bf2489c298"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">SVF::GenericEdge::EdgeKindMaskBits</a></div><div class="ttdeci">static constexpr unsigned char EdgeKindMaskBits</div><div class="ttdoc">We use the lower 8 bits to denote edge kind. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00125">GenericGraph.h:125</a></div></div>
|
|
@@ -151,7 +151,7 @@ $(function() {
|
|
|
151
151
|
<div class="ttc" id="classSVF_1_1CmpVFGNode_html_aae30d80fd848d62467476d21c691573c"><div class="ttname"><a href="classSVF_1_1CmpVFGNode.html#aae30d80fd848d62467476d21c691573c">SVF::CmpVFGNode::opVers</a></div><div class="ttdeci">OPVers opVers</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00330">VFGNode.h:330</a></div></div>
|
|
152
152
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html_a691dc39c5ed3f3fa1ea518b5ec802c60"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html#a691dc39c5ed3f3fa1ea518b5ec802c60">SVF::FormalParmVFGNode::classof</a></div><div class="ttdeci">static bool classof(const GenericVFGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00953">VFGNode.h:953</a></div></div>
|
|
153
153
|
<div class="ttc" id="classSVF_1_1BinaryOPVFGNode_html_adaff45c46c4cc8158bd3147d304deab5"><div class="ttname"><a href="classSVF_1_1BinaryOPVFGNode.html#adaff45c46c4cc8158bd3147d304deab5">SVF::BinaryOPVFGNode::opVerBegin</a></div><div class="ttdeci">OPVers::const_iterator opVerBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00446">VFGNode.h:446</a></div></div>
|
|
154
|
-
<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="SVFType_8h_source.html#
|
|
154
|
+
<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="SVFType_8h_source.html#l00049">SVFType.h:49</a></div></div>
|
|
155
155
|
<div class="ttc" id="classSVF_1_1ArgumentVFGNode_html_ab6179be01a029e52df59480c20a92ef2"><div class="ttname"><a href="classSVF_1_1ArgumentVFGNode.html#ab6179be01a029e52df59480c20a92ef2">SVF::ArgumentVFGNode::classof</a></div><div class="ttdeci">static bool classof(const ArgumentVFGNode *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00819">VFGNode.h:819</a></div></div>
|
|
156
156
|
<div class="ttc" id="classSVF_1_1SVFVar_html_a3b61042079a6c9dc395f38925c6a1271"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">SVF::SVFVar::isPointer</a></div><div class="ttdeci">virtual bool isPointer() const</div><div class="ttdoc">Whether it is a pointer. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00112">SVFVariables.h:112</a></div></div>
|
|
157
157
|
<div class="ttc" id="classSVF_1_1GepVFGNode_html_aae7c25ec33e4531778be58c28a0575c4"><div class="ttname"><a href="classSVF_1_1GepVFGNode.html#aae7c25ec33e4531778be58c28a0575c4">SVF::GepVFGNode::classof</a></div><div class="ttdeci">static bool classof(const StmtVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00613">VFGNode.h:613</a></div></div>
|
|
@@ -324,7 +324,7 @@ $(function() {
|
|
|
324
324
|
<div class="ttc" id="classSVF_1_1UnaryOPVFGNode_html_af31a06d33f41bdcff625ac23e269708c"><div class="ttname"><a href="classSVF_1_1UnaryOPVFGNode.html#af31a06d33f41bdcff625ac23e269708c">SVF::UnaryOPVFGNode::opVerEnd</a></div><div class="ttdeci">OPVers::const_iterator opVerEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00525">VFGNode.h:525</a></div></div>
|
|
325
325
|
<div class="ttc" id="classSVF_1_1FormalRetVFGNode_html_a75f6357396c84bfc08c9b08f95ae6b40"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html#a75f6357396c84bfc08c9b08f95ae6b40">SVF::FormalRetVFGNode::classof</a></div><div class="ttdeci">static bool classof(const ArgumentVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01073">VFGNode.h:1073</a></div></div>
|
|
326
326
|
<div class="ttc" id="classSVF_1_1BranchVFGNode_html_ae611eb1d27846c15b7301017e1864a30"><div class="ttname"><a href="classSVF_1_1BranchVFGNode.html#ae611eb1d27846c15b7301017e1864a30">SVF::BranchVFGNode::getSuccessor</a></div><div class="ttdeci">const ICFGNode * getSuccessor(u32_t i) const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00580">VFGNode.h:580</a></div></div>
|
|
327
|
-
<div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#
|
|
327
|
+
<div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00048">SVFType.h:48</a></div></div>
|
|
328
328
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_ade2eb6475fdc3d2fa107c9adf508b72a"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#ade2eb6475fdc3d2fa107c9adf508b72a">SVF::StmtVFGNode::classof</a></div><div class="ttdeci">static bool classof(const StmtVFGNode *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00164">VFGNode.h:164</a></div></div>
|
|
329
329
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html_ad53fc9b2922c6c0145864bce59991d54"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html#ad53fc9b2922c6c0145864bce59991d54">SVF::FormalParmVFGNode::classof</a></div><div class="ttdeci">static bool classof(const ArgumentVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00949">VFGNode.h:949</a></div></div>
|
|
330
330
|
<div class="ttc" id="classSVF_1_1BranchStmt_html_a022d355bde3d0d0a9471cd125b24583b"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a022d355bde3d0d0a9471cd125b24583b">SVF::BranchStmt::getNumSuccessors</a></div><div class="ttdeci">u32_t getNumSuccessors() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01050">SVFStatements.h:1050</a></div></div>
|
|
@@ -116,7 +116,7 @@ $(function() {
|
|
|
116
116
|
<div class="ttc" id="classSVF_1_1VFG_html_a2e182f7e90a3519a2147a300470a88f1"><div class="ttname"><a href="classSVF_1_1VFG.html#a2e182f7e90a3519a2147a300470a88f1">SVF::VFG::getPAGEdgeSet</a></div><div class="ttdeci">virtual SVFStmt::SVFStmtSetTy & getPAGEdgeSet(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get PAGEdge set. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00436">VFG.h:436</a></div></div>
|
|
117
117
|
<div class="ttc" id="classSVF_1_1CopyVFGNode_html"><div class="ttname"><a href="classSVF_1_1CopyVFGNode.html">SVF::CopyVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00281">VFGNode.h:281</a></div></div>
|
|
118
118
|
<div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4_html_a59a5e6cd5edb423e927bd1d08bc78aa9"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a59a5e6cd5edb423e927bd1d08bc78aa9">SVF::DOTGraphTraits< VFG * >::getEdgeSourceLabel</a></div><div class="ttdeci">static std::string getEdgeSourceLabel(NodeType *, EdgeIter EI)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l01344">VFG.cpp:1344</a></div></div>
|
|
119
|
-
<div class="ttc" id="SVFType_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="
|
|
119
|
+
<div class="ttc" id="SVFType_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00441">SVFType.h:441</a></div></div>
|
|
120
120
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a0931220d7a38e03f206cbdc6465d32ad"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">SVF::GenericNode::hasOutgoingEdge</a></div><div class="ttdeci">bool hasOutgoingEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00200">GenericGraph.h:200</a></div></div>
|
|
121
121
|
<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>
|
|
122
122
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode< SVFVar, SVFStmt >::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00182">SVFStatements.h:182</a></div></div>
|
|
@@ -200,12 +200,12 @@ $(function() {
|
|
|
200
200
|
<div class="ttc" id="SVFGNode_8h_html"><div class="ttname"><a href="SVFGNode_8h.html">SVFGNode.h</a></div></div>
|
|
201
201
|
<div class="ttc" id="classSVF_1_1VFGEdge_html_a8777555f00696706de250159b920d14b"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a8777555f00696706de250159b920d14b">SVF::VFGEdge::isDirectVFGEdge</a></div><div class="ttdeci">bool isDirectVFGEdge() const</div><div class="ttdoc">Get methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00076">VFGEdge.h:76</a></div></div>
|
|
202
202
|
<div class="ttc" id="classSVF_1_1VFG_html_a3c97d77bc0348471d6c098d5655f15b2"><div class="ttname"><a href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">SVF::VFG::addIntraDirectVFEdge</a></div><div class="ttdeci">VFGEdge * addIntraDirectVFEdge(NodeID srcId, NodeID dstId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00675">VFG.cpp:675</a></div></div>
|
|
203
|
-
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#
|
|
203
|
+
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00057">SVFType.h:57</a></div></div>
|
|
204
204
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac1422cd8b449fdb4a1f7c539364e4c41"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">SVF::PointerAnalysis::FunctionSet</a></div><div class="ttdeci">Set< const SVFFunction * > FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00105">PointerAnalysis.h:105</a></div></div>
|
|
205
205
|
<div class="ttc" id="classSVF_1_1VFG_html_a88f6468b9b43bbb06ef757d884580a50"><div class="ttname"><a href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50">SVF::VFG::hasBlackHoleConstObjAddrAsDef</a></div><div class="ttdeci">bool hasBlackHoleConstObjAddrAsDef(const PAGNode *pagNode) const</div><div class="ttdoc">Whether a PAGNode has a blackhole or const object as its definition. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00265">VFG.h:265</a></div></div>
|
|
206
206
|
<div class="ttc" id="classSVF_1_1VFGNode_html_a99a54cf322b0eec3a1ef109ce5f2db75"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75">SVF::VFGNode::VFGNodeK</a></div><div class="ttdeci">VFGNodeK</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00052">VFGNode.h:52</a></div></div>
|
|
207
207
|
<div class="ttc" id="classSVF_1_1VFG_html_afc4268e4abd973aecd29451c99172662"><div class="ttname"><a href="classSVF_1_1VFG.html#afc4268e4abd973aecd29451c99172662">SVF::VFG::addIntraPHIVFGNode</a></div><div class="ttdeci">void addIntraPHIVFGNode(const MultiOpndStmt *edge)</div><div class="ttdoc">Add an llvm PHI VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00579">VFG.h:579</a></div></div>
|
|
208
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#
|
|
208
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
|
|
209
209
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html_a84792b8a380dc157487374ddaa24d62a"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html#a84792b8a380dc157487374ddaa24d62a">SVF::FormalParmVFGNode::getDefSVFVars</a></div><div class="ttdeci">const NodeBS getDefSVFVars() const override</div><div class="ttdoc">Return the left hand side SVF Vars. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00298">VFG.cpp:298</a></div></div>
|
|
210
210
|
<div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
|
|
211
211
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a1ca30dfa42702071b65d363c76d25cbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">SVF::PointerAnalysis::getIndCallMap</a></div><div class="ttdeci">CallEdgeMap & getIndCallMap()</div><div class="ttdoc">Get callees from an indirect callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00375">PointerAnalysis.h:375</a></div></div>
|
|
@@ -228,7 +228,7 @@ $(function() {
|
|
|
228
228
|
<div class="ttc" id="classSVF_1_1FormalRetVFGNode_html_ab1ae2339d7408d9156cdfe5ab4559e66"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html#ab1ae2339d7408d9156cdfe5ab4559e66">SVF::FormalRetVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00340">VFG.cpp:340</a></div></div>
|
|
229
229
|
<div class="ttc" id="classSVF_1_1CmpVFGNode_html_adba761312556c9a4cfc1ef9e5f3a7c10"><div class="ttname"><a href="classSVF_1_1CmpVFGNode.html#adba761312556c9a4cfc1ef9e5f3a7c10">SVF::CmpVFGNode::getDefSVFVars</a></div><div class="ttdeci">const NodeBS getDefSVFVars() const override</div><div class="ttdoc">Return the left hand side SVF Vars. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00111">VFG.cpp:111</a></div></div>
|
|
230
230
|
<div class="ttc" id="classSVF_1_1TDForkPE_html"><div class="ttname"><a href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01074">SVFStatements.h:1074</a></div></div>
|
|
231
|
-
<div class="ttc" id="namespaceSVF_html_aa7b6a13e52671de8524b130738aeb564"><div class="ttname"><a href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">SVF::NodeBS</a></div><div class="ttdeci">SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#
|
|
231
|
+
<div class="ttc" id="namespaceSVF_html_aa7b6a13e52671de8524b130738aeb564"><div class="ttname"><a href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">SVF::NodeBS</a></div><div class="ttdeci">SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00060">SVFType.h:60</a></div></div>
|
|
232
232
|
<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>
|
|
233
233
|
<div class="ttc" id="classSVF_1_1BinaryOPVFGNode_html_aa743cf19c5dc91dbb0c7b8981fecc6c4"><div class="ttname"><a href="classSVF_1_1BinaryOPVFGNode.html#aa743cf19c5dc91dbb0c7b8981fecc6c4">SVF::BinaryOPVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00142">VFG.cpp:142</a></div></div>
|
|
234
234
|
<div class="ttc" id="classSVF_1_1VFG_html_a18afc4baf33eb700e0510928016019f5"><div class="ttname"><a href="classSVF_1_1VFG.html#a18afc4baf33eb700e0510928016019f5">SVF::VFG::addBranchVFGNode</a></div><div class="ttdeci">void addBranchVFGNode(const BranchStmt *edge)</div><div class="ttdoc">Add a BranchVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00630">VFG.h:630</a></div></div>
|
|
@@ -302,7 +302,7 @@ $(function() {
|
|
|
302
302
|
<div class="ttc" id="classSVF_1_1NullPtrVFGNode_html"><div class="ttname"><a href="classSVF_1_1NullPtrVFGNode.html">SVF::NullPtrVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01154">VFGNode.h:1154</a></div></div>
|
|
303
303
|
<div class="ttc" id="classSVF_1_1VFG_html_a75eb519e4f89a116db98fccb263af4d6"><div class="ttname"><a href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6">SVF::VFG::getFormalParmVFGNode</a></div><div class="ttdeci">FormalParmVFGNode * getFormalParmVFGNode(const PAGNode *fparm) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00247">VFG.h:247</a></div></div>
|
|
304
304
|
<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>
|
|
305
|
-
<div class="ttc" id="SVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#
|
|
305
|
+
<div class="ttc" id="SVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00435">SVFType.h:435</a></div></div>
|
|
306
306
|
<div class="ttc" id="classSVF_1_1CmpVFGNode_html_aa08c4475c47beb0d026acab859d68117"><div class="ttname"><a href="classSVF_1_1CmpVFGNode.html#aa08c4475c47beb0d026acab859d68117">SVF::CmpVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00118">VFG.cpp:118</a></div></div>
|
|
307
307
|
<div class="ttc" id="classSVF_1_1CopyStmt_html"><div class="ttname"><a href="classSVF_1_1CopyStmt.html">SVF::CopyStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00312">SVFStatements.h:312</a></div></div>
|
|
308
308
|
<div class="ttc" id="classSVF_1_1RetDirSVFGEdge_html_a6282c2619d843cf90575886a0ef81edf"><div class="ttname"><a href="classSVF_1_1RetDirSVFGEdge.html#a6282c2619d843cf90575886a0ef81edf">SVF::RetDirSVFGEdge::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00412">VFG.cpp:412</a></div></div>
|