svf-tools 1.0.613 → 1.0.614
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/CMakeLists.txt +13 -0
- package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +7 -6
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/Andersen_8h_source.html +16 -16
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +7 -7
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +14 -14
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ConsG_8h_source.html +9 -9
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +9 -9
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +4 -6
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +22 -22
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -28
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +65 -65
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +23 -28
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +8 -8
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MHP_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +12 -17
- package/SVF-doxygen/html/html/MTA_8h_source.html +3 -4
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +34 -34
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +16 -15
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +53 -52
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +7 -8
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/Options_8cpp_source.html +52 -53
- package/SVF-doxygen/html/html/Options_8h_source.html +53 -54
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +33 -33
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +91 -95
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +31 -39
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +85 -92
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +16 -16
- package/SVF-doxygen/html/html/PointsTo_8cpp.html +1 -0
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +51 -51
- package/SVF-doxygen/html/html/PointsTo_8h_source.html +38 -38
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SCC_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +11 -22
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +14 -17
- package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +21 -19
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +49 -62
- package/SVF-doxygen/html/html/SVFG_8h_source.html +45 -45
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +10 -16
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +83 -83
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/SVFType_8h.html +22 -22
- package/SVF-doxygen/html/html/SVFType_8h_source.html +76 -77
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +11 -11
- package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -3
- package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +69 -71
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +39 -39
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +49 -51
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +13 -13
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/VFG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +33 -33
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
- package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +11 -11
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +2 -2
- package/SVF-doxygen/html/html/WPASolver_8h_source.html +25 -25
- package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -5
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -5
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +187 -188
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +104 -107
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +163 -164
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +47 -50
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +194 -195
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +45 -48
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +204 -205
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +35 -38
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +191 -192
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +29 -32
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +122 -123
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +158 -219
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +137 -138
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +57 -49
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +138 -139
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +140 -141
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +114 -114
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +17 -31
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +40 -40
- package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +228 -229
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +62 -65
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +194 -195
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +219 -220
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +335 -342
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +57 -57
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +20 -14
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +106 -92
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +87 -87
- package/SVF-doxygen/html/html/classSVF_1_1MTA-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +27 -33
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder-members.html +41 -43
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +57 -80
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
- package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +4 -3
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +170 -143
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +13 -15
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +17 -18
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +53 -79
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PTData.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData-members.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +174 -177
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData-members.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +99 -102
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData-members.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +125 -127
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData-members.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +83 -86
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +122 -122
- package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData-members.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +137 -140
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +56 -56
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo-members.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +183 -178
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator-members.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +87 -65
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFArrayType.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +13 -16
- package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +5 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunctionType.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +211 -236
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder-members.html +7 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +50 -138
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +82 -82
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +203 -215
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +79 -79
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIntergerType.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +0 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFPointerType.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +4 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +12 -14
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +42 -68
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +108 -109
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +146 -146
- package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +48 -61
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +178 -179
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +35 -38
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +42 -46
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +169 -170
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +29 -32
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +263 -264
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +112 -115
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +76 -81
- package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +2 -2
- 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/functions.html +1 -1
- package/SVF-doxygen/html/html/functions_0x7e.html +16 -16
- package/SVF-doxygen/html/html/functions_a.html +7 -7
- package/SVF-doxygen/html/html/functions_b.html +6 -6
- package/SVF-doxygen/html/html/functions_c.html +27 -27
- package/SVF-doxygen/html/html/functions_d.html +10 -11
- package/SVF-doxygen/html/html/functions_e.html +2 -2
- package/SVF-doxygen/html/html/functions_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func.html +6 -6
- package/SVF-doxygen/html/html/functions_func_0x7e.html +16 -16
- package/SVF-doxygen/html/html/functions_func_b.html +6 -6
- package/SVF-doxygen/html/html/functions_func_c.html +27 -27
- package/SVF-doxygen/html/html/functions_func_d.html +10 -11
- package/SVF-doxygen/html/html/functions_func_e.html +2 -2
- package/SVF-doxygen/html/html/functions_func_f.html +5 -5
- package/SVF-doxygen/html/html/functions_func_g.html +22 -22
- package/SVF-doxygen/html/html/functions_func_h.html +3 -3
- package/SVF-doxygen/html/html/functions_func_i.html +2 -2
- package/SVF-doxygen/html/html/functions_func_o.html +3 -3
- package/SVF-doxygen/html/html/functions_func_p.html +5 -5
- package/SVF-doxygen/html/html/functions_func_r.html +5 -8
- package/SVF-doxygen/html/html/functions_func_s.html +5 -5
- package/SVF-doxygen/html/html/functions_func_t.html +1 -1
- package/SVF-doxygen/html/html/functions_func_u.html +23 -23
- package/SVF-doxygen/html/html/functions_g.html +25 -28
- package/SVF-doxygen/html/html/functions_h.html +3 -3
- package/SVF-doxygen/html/html/functions_i.html +5 -5
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_o.html +13 -13
- package/SVF-doxygen/html/html/functions_p.html +19 -19
- package/SVF-doxygen/html/html/functions_r.html +11 -12
- package/SVF-doxygen/html/html/functions_s.html +32 -35
- package/SVF-doxygen/html/html/functions_t.html +12 -12
- package/SVF-doxygen/html/html/functions_type_t.html +1 -1
- package/SVF-doxygen/html/html/functions_u.html +26 -23
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_i.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_p.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_s.html +5 -8
- package/SVF-doxygen/html/html/functions_vars_t.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_u.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +3 -7
- package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +35 -35
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +4 -4
- package/SVF-doxygen/html/html/saber_8cpp.html +1 -5
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -5
- package/SVF-doxygen/html/html/search/all_0.js +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +4 -4
- package/SVF-doxygen/html/html/search/all_10.js +15 -15
- package/SVF-doxygen/html/html/search/all_11.js +1 -2
- package/SVF-doxygen/html/html/search/all_12.js +19 -20
- package/SVF-doxygen/html/html/search/all_13.js +8 -8
- package/SVF-doxygen/html/html/search/all_14.js +13 -12
- package/SVF-doxygen/html/html/search/all_15.js +4 -4
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_19.js +16 -16
- package/SVF-doxygen/html/html/search/all_2.js +6 -6
- package/SVF-doxygen/html/html/search/all_3.js +14 -14
- package/SVF-doxygen/html/html/search/all_4.js +5 -5
- package/SVF-doxygen/html/html/search/all_5.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +5 -5
- package/SVF-doxygen/html/html/search/all_7.js +11 -12
- package/SVF-doxygen/html/html/search/all_8.js +3 -3
- package/SVF-doxygen/html/html/search/all_9.js +3 -3
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_d.js +3 -3
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +5 -5
- package/SVF-doxygen/html/html/search/functions_0.js +4 -4
- package/SVF-doxygen/html/html/search/functions_1.js +6 -6
- package/SVF-doxygen/html/html/search/functions_10.js +1 -2
- package/SVF-doxygen/html/html/search/functions_11.js +10 -10
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +12 -12
- package/SVF-doxygen/html/html/search/functions_17.js +16 -16
- package/SVF-doxygen/html/html/search/functions_2.js +14 -14
- package/SVF-doxygen/html/html/search/functions_3.js +5 -5
- package/SVF-doxygen/html/html/search/functions_4.js +2 -2
- package/SVF-doxygen/html/html/search/functions_5.js +4 -4
- package/SVF-doxygen/html/html/search/functions_6.js +11 -11
- package/SVF-doxygen/html/html/search/functions_7.js +3 -3
- package/SVF-doxygen/html/html/search/functions_8.js +2 -2
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +3 -3
- package/SVF-doxygen/html/html/search/functions_f.js +5 -5
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/variables_0.js +1 -1
- package/SVF-doxygen/html/html/search/variables_10.js +2 -2
- package/SVF-doxygen/html/html/search/variables_12.js +5 -6
- package/SVF-doxygen/html/html/search/variables_13.js +3 -3
- package/SVF-doxygen/html/html/search/variables_14.js +1 -0
- package/SVF-doxygen/html/html/search/variables_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +0 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +14 -14
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement-members.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +47 -57
- 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_1PointsTo_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +5 -5
- 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 +6 -7
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/build.sh +2 -2
- package/include/DDA/DDAPass.h +1 -1
- package/include/DDA/FlowDDA.h +1 -1
- package/include/Graphs/ICFG.h +1 -1
- package/include/Graphs/SVFG.h +3 -4
- package/include/Graphs/SVFGOPT.h +7 -7
- package/include/MSSA/MemSSA.h +2 -0
- package/include/MSSA/SVFGBuilder.h +5 -14
- package/include/MTA/MTA.h +2 -2
- package/include/MemoryModel/MutablePointsToDS.h +3 -3
- package/include/MemoryModel/PersistentPointsToCache.h +7 -8
- package/include/MemoryModel/PersistentPointsToDS.h +93 -93
- package/include/MemoryModel/PointerAnalysisImpl.h +17 -28
- package/include/MemoryModel/PointsTo.h +24 -24
- package/include/SABER/SrcSnkDDA.h +10 -13
- package/include/SVF-LLVM/LLVMLoopAnalysis.h +2 -1
- package/include/SVF-LLVM/LLVMModule.h +6 -6
- package/include/SVFIR/SVFIR.h +3 -5
- package/include/SVFIR/SVFType.h +6 -8
- package/include/SVFIR/SVFValue.h +3 -3
- package/include/Util/Options.h +0 -1
- package/include/Util/SparseBitVector.h +6 -14
- package/include/WPA/FlowSensitive.h +13 -20
- package/include/WPA/WPASolver.h +5 -9
- package/lib/DDA/DDAPass.cpp +4 -4
- package/lib/Graphs/CFLGraph.cpp +3 -0
- package/lib/Graphs/SVFG.cpp +1 -1
- package/lib/MSSA/MemSSA.cpp +5 -3
- package/lib/MSSA/SVFGBuilder.cpp +9 -27
- package/lib/MTA/MTA.cpp +4 -4
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +10 -10
- package/lib/MemoryModel/PointsTo.cpp +23 -19
- package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +3 -4
- package/lib/SVF-LLVM/LLVMModule.cpp +32 -21
- package/lib/SVFIR/SVFIR.cpp +1 -1
- package/lib/SVFIR/SymbolTableInfo.cpp +4 -15
- package/lib/Util/Options.cpp +0 -6
- package/lib/WPA/AndersenSFR.cpp +1 -1
- package/lib/WPA/FlowSensitive.cpp +1 -1
- package/package.json +1 -1
- package/tools/CFL/cfl.cpp +5 -4
- package/tools/DDA/dda.cpp +3 -2
- package/tools/Example/svf-ex.cpp +3 -2
- package/tools/MTA/mta.cpp +6 -4
- package/tools/SABER/saber.cpp +7 -5
- package/tools/WPA/wpa.cpp +3 -2
|
@@ -409,12 +409,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
409
409
|
<p>Add a <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> edge into edge map </p>
|
|
410
410
|
|
|
411
411
|
<p class="definition">Definition at line <a class="el" href="IRGraph_8cpp_source.html#l00045">45</a> of file <a class="el" href="IRGraph_8cpp_source.html">IRGraph.cpp</a>.</p>
|
|
412
|
-
<div class="fragment"><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="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"add edge from "</span> << src-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() << <span class="stringliteral">" kind :"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  << src-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() << <span class="stringliteral">" to "</span> << dst-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  << <span class="stringliteral">" kind :"</span> << dst-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  src-><a class="code" href="classSVF_1_1SVFVar.html#a21a44c7a30e4e3743f6c3186fd7dbe8f">addOutEdge</a>(edge);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  dst-><a class="code" href="classSVF_1_1SVFVar.html#a9376133075b0d44ff09876af933c8618">addInEdge</a>(edge);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="ttc" id="SVFType_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#
|
|
412
|
+
<div class="fragment"><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="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"add edge from "</span> << src-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() << <span class="stringliteral">" kind :"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  << src-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() << <span class="stringliteral">" to "</span> << dst-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  << <span class="stringliteral">" kind :"</span> << dst-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  src-><a class="code" href="classSVF_1_1SVFVar.html#a21a44c7a30e4e3743f6c3186fd7dbe8f">addOutEdge</a>(edge);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  dst-><a class="code" href="classSVF_1_1SVFVar.html#a9376133075b0d44ff09876af933c8618">addInEdge</a>(edge);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="ttc" id="SVFType_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00424">SVFType.h:424</a></div></div>
|
|
413
413
|
<div class="ttc" id="classSVF_1_1SVFVar_html_a9376133075b0d44ff09876af933c8618"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a9376133075b0d44ff09876af933c8618">SVF::SVFVar::addInEdge</a></div><div class="ttdeci">void addInEdge(SVFStmt *inEdge)</div><div class="ttdoc">add methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00206">SVFVariables.h:206</a></div></div>
|
|
414
414
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a391e996d695b114530120723da1d003e"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">SVF::GenericNode::getNodeKind</a></div><div class="ttdeci">GNodeK getNodeKind() const</div><div class="ttdoc">Get node kind. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00177">GenericGraph.h:177</a></div></div>
|
|
415
415
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
416
416
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00171">GenericGraph.h:171</a></div></div>
|
|
417
|
-
<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#
|
|
417
|
+
<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#l00417">SVFType.h:417</a></div></div>
|
|
418
418
|
<div class="ttc" id="classSVF_1_1SVFVar_html_a21a44c7a30e4e3743f6c3186fd7dbe8f"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a21a44c7a30e4e3743f6c3186fd7dbe8f">SVF::SVFVar::addOutEdge</a></div><div class="ttdeci">void addOutEdge(SVFStmt *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00213">SVFVariables.h:213</a></div></div>
|
|
419
419
|
</div><!-- fragment -->
|
|
420
420
|
</div>
|
|
@@ -1012,7 +1012,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1012
1012
|
|
|
1013
1013
|
<p class="definition">Definition at line <a class="el" href="IRGraph_8h_source.html#l00128">128</a> of file <a class="el" href="IRGraph_8h_source.html">IRGraph.h</a>.</p>
|
|
1014
1014
|
<div class="fragment"><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a679145e7bf818b0a19005dc8e2845fe1">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a72be51342f633844f59c5a46b7e01583">getValSym</a>(V);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="ttc" id="classSVF_1_1IRGraph_html_a679145e7bf818b0a19005dc8e2845fe1"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a679145e7bf818b0a19005dc8e2845fe1">SVF::IRGraph::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00061">IRGraph.h:61</a></div></div>
|
|
1015
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a72be51342f633844f59c5a46b7e01583"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a72be51342f633844f59c5a46b7e01583">SVF::SymbolTableInfo::getValSym</a></div><div class="ttdeci">SymID getValSym(const SVFValue *val)</div><div class="ttdoc">Get different kinds of syms. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
1015
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a72be51342f633844f59c5a46b7e01583"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a72be51342f633844f59c5a46b7e01583">SVF::SymbolTableInfo::getValSym</a></div><div class="ttdeci">SymID getValSym(const SVFValue *val)</div><div class="ttdoc">Get different kinds of syms. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00542">SymbolTableInfo.cpp:542</a></div></div>
|
|
1016
1016
|
</div><!-- fragment -->
|
|
1017
1017
|
</div>
|
|
1018
1018
|
</div>
|
|
@@ -1263,7 +1263,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1263
1263
|
</div><div class="memdoc">
|
|
1264
1264
|
|
|
1265
1265
|
<p class="definition">Definition at line <a class="el" href="IRGraph_8h_source.html#l00132">132</a> of file <a class="el" href="IRGraph_8h_source.html">IRGraph.h</a>.</p>
|
|
1266
|
-
<div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a679145e7bf818b0a19005dc8e2845fe1">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#af5e91f2ace726b1f05b045681d2bd117">hasValSym</a>(V);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af5e91f2ace726b1f05b045681d2bd117"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af5e91f2ace726b1f05b045681d2bd117">SVF::SymbolTableInfo::hasValSym</a></div><div class="ttdeci">bool hasValSym(const SVFValue *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
1266
|
+
<div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a679145e7bf818b0a19005dc8e2845fe1">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#af5e91f2ace726b1f05b045681d2bd117">hasValSym</a>(V);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af5e91f2ace726b1f05b045681d2bd117"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af5e91f2ace726b1f05b045681d2bd117">SVF::SymbolTableInfo::hasValSym</a></div><div class="ttdeci">bool hasValSym(const SVFValue *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00557">SymbolTableInfo.cpp:557</a></div></div>
|
|
1267
1267
|
<div class="ttc" id="classSVF_1_1IRGraph_html_a679145e7bf818b0a19005dc8e2845fe1"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a679145e7bf818b0a19005dc8e2845fe1">SVF::IRGraph::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00061">IRGraph.h:61</a></div></div>
|
|
1268
1268
|
</div><!-- fragment -->
|
|
1269
1269
|
</div>
|
|
@@ -476,9 +476,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
476
476
|
<div class="fragment"><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">for</span>(FunToPointsTosMap::iterator it = <a class="code" href="classSVF_1_1MRGenerator.html#a1331e6f0941838064d77a5adaa5c6303">getFunToPointsToList</a>().begin(),</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  eit = <a class="code" href="classSVF_1_1MRGenerator.html#a1331e6f0941838064d77a5adaa5c6303">getFunToPointsToList</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">for</span>(PointsToList::iterator cit = it->second.begin(), ecit = it->second.end();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  cit!=ecit; ++cit)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts = *cit;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="classSVF_1_1IntraDisjointMRG.html#adb3ed119aee3f1bc62b9679ee095580d">computeIntersections</a>(cpts, <a class="code" href="classSVF_1_1InterDisjointMRG.html#a104134d0f7c8b16abe8f5f3899c3bbf0">inters</a>);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">for</span>(FunToPointsTosMap::iterator it = <a class="code" href="classSVF_1_1MRGenerator.html#a1331e6f0941838064d77a5adaa5c6303">getFunToPointsToList</a>().begin(),</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  eit = <a class="code" href="classSVF_1_1MRGenerator.html#a1331e6f0941838064d77a5adaa5c6303">getFunToPointsToList</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = it->first;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">for</span>(PointsToList::iterator cit = it->second.begin(), ecit = it->second.end();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  cit!=ecit; ++cit)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts = *cit;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">for</span> (PointsToList::const_iterator interIt = <a class="code" href="classSVF_1_1InterDisjointMRG.html#a104134d0f7c8b16abe8f5f3899c3bbf0">inters</a>.begin(), interEit = <a class="code" href="classSVF_1_1InterDisjointMRG.html#a104134d0f7c8b16abe8f5f3899c3bbf0">inters</a>.end();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  interIt != interEit; ++interIt)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& inter = *interIt;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">if</span> (cpts.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(inter))</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <a class="code" href="classSVF_1_1IntraDisjointMRG.html#a17d0ad0c62982d2b03121e935469e7b2">createDisjointMR</a>(fun, inter);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> }</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
|
|
477
477
|
<div class="ttc" id="classSVF_1_1InterDisjointMRG_html_a104134d0f7c8b16abe8f5f3899c3bbf0"><div class="ttname"><a href="classSVF_1_1InterDisjointMRG.html#a104134d0f7c8b16abe8f5f3899c3bbf0">SVF::InterDisjointMRG::inters</a></div><div class="ttdeci">PointsToList inters</div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00164">MemPartition.h:164</a></div></div>
|
|
478
478
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_adb3ed119aee3f1bc62b9679ee095580d"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#adb3ed119aee3f1bc62b9679ee095580d">SVF::IntraDisjointMRG::computeIntersections</a></div><div class="ttdeci">void computeIntersections(const NodeBS &cpts, PointsToList &inters)</div><div class="ttdoc">Compute intersections between cpts and computed cpts intersections before. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00152">MemPartition.cpp:152</a></div></div>
|
|
479
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html_abbd0e0cf759fad7858224ed8a63aade8"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">SVF::SparseBitVector::contains</a></div><div class="ttdeci">bool contains(const SparseBitVector< ElementSize > &RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
479
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html_abbd0e0cf759fad7858224ed8a63aade8"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">SVF::SparseBitVector::contains</a></div><div class="ttdeci">bool contains(const SparseBitVector< ElementSize > &RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01065">SparseBitVector.h:1065</a></div></div>
|
|
480
480
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_a1331e6f0941838064d77a5adaa5c6303"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a1331e6f0941838064d77a5adaa5c6303">SVF::MRGenerator::getFunToPointsToList</a></div><div class="ttdeci">FunToPointsTosMap & getFunToPointsToList()</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00371">MemRegion.h:371</a></div></div>
|
|
481
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
481
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00454">SparseBitVector.h:454</a></div></div>
|
|
482
482
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_a17d0ad0c62982d2b03121e935469e7b2"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#a17d0ad0c62982d2b03121e935469e7b2">SVF::IntraDisjointMRG::createDisjointMR</a></div><div class="ttdeci">void createDisjointMR(const SVFFunction *func, const NodeBS &cpts)</div><div class="ttdoc">Create disjoint memory region. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00232">MemPartition.cpp:232</a></div></div>
|
|
483
483
|
</div><!-- fragment -->
|
|
484
484
|
</div>
|
|
@@ -483,12 +483,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
483
483
|
<p>Compute intersections between cpts and computed cpts intersections before. </p>
|
|
484
484
|
|
|
485
485
|
<p class="definition">Definition at line <a class="el" href="MemPartition_8cpp_source.html#l00152">152</a> of file <a class="el" href="MemPartition_8cpp_source.html">MemPartition.cpp</a>.</p>
|
|
486
|
-
<div class="fragment"><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> (inters.find(cpts) != inters.end())</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>  <span class="comment">// Skip this cpts if it is already in the map.</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">return</span>;</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cpts.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>() == 1)</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>  <span class="comment">// If this cpts has only one element, it will not intersect with any cpts in inters,</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// just add it into intersection set.</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  inters.insert(cpts);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a> toBeDeleted;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a> newInters;</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>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> cpts_copy = cpts; <span class="comment">// make a copy since cpts may be changed.</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// check intersections with existing cpts in subSetMap</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">for</span> (PointsToList::const_iterator interIt = inters.begin(), interEit = inters.end();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  interIt != interEit; ++interIt)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& inter = *interIt;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (cpts_copy.<a class="code" href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">intersects</a>(inter))</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// compute intersection between cpts and inter</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> new_inter = inter;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  new_inter &= cpts_copy;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// remove old intersection and add new one if possible</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (new_inter != inter)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  toBeDeleted.insert(inter);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  newInters.insert(new_inter);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// compute complement after intersection</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> complement = inter;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  complement.<a class="code" href="classSVF_1_1SparseBitVector.html#a8b481ef53a27a351affecab90310b1ef">intersectWithComplement</a>(new_inter);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (complement.<a class="code" href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">empty</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  newInters.insert(complement);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  cpts_copy.<a class="code" href="classSVF_1_1SparseBitVector.html#a8b481ef53a27a351affecab90310b1ef">intersectWithComplement</a>(new_inter);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span> (cpts_copy.<a class="code" href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">empty</a>())</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// remove old intersections</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">for</span> (PointsToList::const_iterator it = toBeDeleted.begin(), eit = toBeDeleted.end();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  it != eit; ++it)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& temp_cpts = *it;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  inters.erase(temp_cpts);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">// add new intersections</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">for</span> (PointsToList::const_iterator it = newInters.begin(), eit = newInters.end();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  it != eit; ++it)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& temp_cpts = *it;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  inters.insert(temp_cpts);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// add remaining set into inters</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span> (cpts_copy.<a class="code" href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">empty</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  inters.insert(cpts_copy);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> }</div><div class="ttc" id="classSVF_1_1SparseBitVector_html_a8b481ef53a27a351affecab90310b1ef"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a8b481ef53a27a351affecab90310b1ef">SVF::SparseBitVector::intersectWithComplement</a></div><div class="ttdeci">bool intersectWithComplement(const SparseBitVector &RHS)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00905">SparseBitVector.h:905</a></div></div>
|
|
487
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a9f96e6a886fa69e07cda5dbfaed8b7c9"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">SVF::SparseBitVector::count</a></div><div class="ttdeci">unsigned count() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
486
|
+
<div class="fragment"><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> (inters.find(cpts) != inters.end())</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>  <span class="comment">// Skip this cpts if it is already in the map.</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">return</span>;</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cpts.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>() == 1)</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>  <span class="comment">// If this cpts has only one element, it will not intersect with any cpts in inters,</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// just add it into intersection set.</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  inters.insert(cpts);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a> toBeDeleted;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a> newInters;</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>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> cpts_copy = cpts; <span class="comment">// make a copy since cpts may be changed.</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// check intersections with existing cpts in subSetMap</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">for</span> (PointsToList::const_iterator interIt = inters.begin(), interEit = inters.end();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  interIt != interEit; ++interIt)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& inter = *interIt;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (cpts_copy.<a class="code" href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">intersects</a>(inter))</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// compute intersection between cpts and inter</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> new_inter = inter;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  new_inter &= cpts_copy;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// remove old intersection and add new one if possible</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (new_inter != inter)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  toBeDeleted.insert(inter);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  newInters.insert(new_inter);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// compute complement after intersection</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> complement = inter;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  complement.<a class="code" href="classSVF_1_1SparseBitVector.html#a8b481ef53a27a351affecab90310b1ef">intersectWithComplement</a>(new_inter);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (complement.<a class="code" href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">empty</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  newInters.insert(complement);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  cpts_copy.<a class="code" href="classSVF_1_1SparseBitVector.html#a8b481ef53a27a351affecab90310b1ef">intersectWithComplement</a>(new_inter);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span> (cpts_copy.<a class="code" href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">empty</a>())</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// remove old intersections</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">for</span> (PointsToList::const_iterator it = toBeDeleted.begin(), eit = toBeDeleted.end();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  it != eit; ++it)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& temp_cpts = *it;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  inters.erase(temp_cpts);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">// add new intersections</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">for</span> (PointsToList::const_iterator it = newInters.begin(), eit = newInters.end();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  it != eit; ++it)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& temp_cpts = *it;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  inters.insert(temp_cpts);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// add remaining set into inters</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span> (cpts_copy.<a class="code" href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">empty</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  inters.insert(cpts_copy);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> }</div><div class="ttc" id="classSVF_1_1SparseBitVector_html_a8b481ef53a27a351affecab90310b1ef"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a8b481ef53a27a351affecab90310b1ef">SVF::SparseBitVector::intersectWithComplement</a></div><div class="ttdeci">bool intersectWithComplement(const SparseBitVector &RHS)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00897">SparseBitVector.h:897</a></div></div>
|
|
487
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a9f96e6a886fa69e07cda5dbfaed8b7c9"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">SVF::SparseBitVector::count</a></div><div class="ttdeci">unsigned count() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01096">SparseBitVector.h:1096</a></div></div>
|
|
488
488
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_a8b254a0c5063e25f297d1b00fb0b515e"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">SVF::MRGenerator::PointsToList</a></div><div class="ttdeci">OrderedSet< NodeBS, SVFUtil::equalNodeBS > PointsToList</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00143">MemRegion.h:143</a></div></div>
|
|
489
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a16756e0545fd3d50ab89f45a2e83bb79"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">SVF::SparseBitVector::intersects</a></div><div class="ttdeci">bool intersects(const SparseBitVector< ElementSize > *RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
490
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
491
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html_aea5389ad7e5fe4c8bef686940a1a6056"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">SVF::SparseBitVector::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
489
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a16756e0545fd3d50ab89f45a2e83bb79"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">SVF::SparseBitVector::intersects</a></div><div class="ttdeci">bool intersects(const SparseBitVector< ElementSize > *RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01023">SparseBitVector.h:1023</a></div></div>
|
|
490
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00454">SparseBitVector.h:454</a></div></div>
|
|
491
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html_aea5389ad7e5fe4c8bef686940a1a6056"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">SVF::SparseBitVector::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01091">SparseBitVector.h:1091</a></div></div>
|
|
492
492
|
</div><!-- fragment -->
|
|
493
493
|
</div>
|
|
494
494
|
</div>
|
|
@@ -714,9 +714,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
714
714
|
</div><div class="memdoc">
|
|
715
715
|
|
|
716
716
|
<p class="definition">Definition at line <a class="el" href="MemPartition_8cpp_source.html#l00241">241</a> of file <a class="el" href="MemPartition_8cpp_source.html">MemPartition.cpp</a>.</p>
|
|
717
|
-
<div class="fragment"><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  PointsToList::const_iterator it = inters.begin();</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  PointsToList::const_iterator eit = inters.end();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& inter = *it;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">if</span> (cpts.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(inter))</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a> mr(inter);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  MRSet::iterator mit = <a class="code" href="classSVF_1_1MRGenerator.html#af94bd8155a23273aab2396334d905119">memRegSet</a>.find(&mr);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  assert(mit!=<a class="code" href="classSVF_1_1MRGenerator.html#af94bd8155a23273aab2396334d905119">memRegSet</a>.end() && <span class="stringliteral">"memory region not found!!"</span>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  mrs.insert(*mit);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> }</div><div class="ttc" id="classSVF_1_1SparseBitVector_html_abbd0e0cf759fad7858224ed8a63aade8"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">SVF::SparseBitVector::contains</a></div><div class="ttdeci">bool contains(const SparseBitVector< ElementSize > &RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
717
|
+
<div class="fragment"><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  PointsToList::const_iterator it = inters.begin();</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  PointsToList::const_iterator eit = inters.end();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& inter = *it;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">if</span> (cpts.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(inter))</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a> mr(inter);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  MRSet::iterator mit = <a class="code" href="classSVF_1_1MRGenerator.html#af94bd8155a23273aab2396334d905119">memRegSet</a>.find(&mr);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  assert(mit!=<a class="code" href="classSVF_1_1MRGenerator.html#af94bd8155a23273aab2396334d905119">memRegSet</a>.end() && <span class="stringliteral">"memory region not found!!"</span>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  mrs.insert(*mit);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> }</div><div class="ttc" id="classSVF_1_1SparseBitVector_html_abbd0e0cf759fad7858224ed8a63aade8"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">SVF::SparseBitVector::contains</a></div><div class="ttdeci">bool contains(const SparseBitVector< ElementSize > &RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01065">SparseBitVector.h:1065</a></div></div>
|
|
718
718
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_af94bd8155a23273aab2396334d905119"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#af94bd8155a23273aab2396334d905119">SVF::MRGenerator::memRegSet</a></div><div class="ttdeci">MRSet memRegSet</div><div class="ttdoc">A set of All memory regions. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00278">MemRegion.h:278</a></div></div>
|
|
719
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
719
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00454">SparseBitVector.h:454</a></div></div>
|
|
720
720
|
<div class="ttc" id="classSVF_1_1MemRegion_html"><div class="ttname"><a href="classSVF_1_1MemRegion.html">SVF::MemRegion</a></div><div class="ttdoc">Memory Region class. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00055">MemRegion.h:55</a></div></div>
|
|
721
721
|
</div><!-- fragment -->
|
|
722
722
|
</div>
|
|
@@ -814,7 +814,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
814
814
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_adb3ed119aee3f1bc62b9679ee095580d"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#adb3ed119aee3f1bc62b9679ee095580d">SVF::IntraDisjointMRG::computeIntersections</a></div><div class="ttdeci">void computeIntersections(const NodeBS &cpts, PointsToList &inters)</div><div class="ttdoc">Compute intersections between cpts and computed cpts intersections before. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00152">MemPartition.cpp:152</a></div></div>
|
|
815
815
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_a1331e6f0941838064d77a5adaa5c6303"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a1331e6f0941838064d77a5adaa5c6303">SVF::MRGenerator::getFunToPointsToList</a></div><div class="ttdeci">FunToPointsTosMap & getFunToPointsToList()</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00371">MemRegion.h:371</a></div></div>
|
|
816
816
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_a8b254a0c5063e25f297d1b00fb0b515e"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">SVF::MRGenerator::PointsToList</a></div><div class="ttdeci">OrderedSet< NodeBS, SVFUtil::equalNodeBS > PointsToList</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00143">MemRegion.h:143</a></div></div>
|
|
817
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
817
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00454">SparseBitVector.h:454</a></div></div>
|
|
818
818
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_a17d0ad0c62982d2b03121e935469e7b2"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#a17d0ad0c62982d2b03121e935469e7b2">SVF::IntraDisjointMRG::createDisjointMR</a></div><div class="ttdeci">void createDisjointMR(const SVFFunction *func, const NodeBS &cpts)</div><div class="ttdoc">Create disjoint memory region. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00232">MemPartition.cpp:232</a></div></div>
|
|
819
819
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_aa8c653e895ff0889615cdbf349be7652"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#aa8c653e895ff0889615cdbf349be7652">SVF::IntraDisjointMRG::getIntersList</a></div><div class="ttdeci">PointsToList & getIntersList(const SVFFunction *func)</div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00120">MemPartition.h:120</a></div></div>
|
|
820
820
|
</div><!-- fragment -->
|
|
@@ -70,7 +70,7 @@ $(function() {
|
|
|
70
70
|
<p>This is the complete list of members for <a class="el" href="classSVF_1_1LLVMLoopAnalysis.html">SVF::LLVMLoopAnalysis</a>, including all inherited members.</p>
|
|
71
71
|
<table class="directory">
|
|
72
72
|
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html#a17e4805c2db146430c58af35625a388d">build</a>(ICFG *icfg)</td><td class="entry"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html">SVF::LLVMLoopAnalysis</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
|
73
|
-
<tr><td class="entry"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html#
|
|
73
|
+
<tr><td class="entry"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html#a630e7efc4f2b04a6b814bb1730a5747e">buildLLVMLoops</a>(SVFModule *mod, std::vector< const Loop *> &llvmLoops, llvm::LoopInfoBase< llvm::BasicBlock, llvm::Loop > *loopInfo)</td><td class="entry"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html">SVF::LLVMLoopAnalysis</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
|
74
74
|
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html#a82b29fc1e138e082d7da6e016a5b7eb8">buildSVFLoops</a>(ICFG *icfg, std::vector< const Loop *> &llvmLoops)</td><td class="entry"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html">SVF::LLVMLoopAnalysis</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
|
75
75
|
<tr><td class="entry"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html#a93161bbdb47c74fce1d8e54a45df2df8">LLVMLoopAnalysis</a>()=default</td><td class="entry"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html">SVF::LLVMLoopAnalysis</a></td><td class="entry"></td></tr>
|
|
76
76
|
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html#aae766534e6dd2141a593b6f07aae6999">~LLVMLoopAnalysis</a>()=default</td><td class="entry"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html">SVF::LLVMLoopAnalysis</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
|
@@ -80,9 +80,9 @@ Public Member Functions</h2></td></tr>
|
|
|
80
80
|
<tr class="memitem:aae766534e6dd2141a593b6f07aae6999"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html#aae766534e6dd2141a593b6f07aae6999">~LLVMLoopAnalysis</a> ()=default</td></tr>
|
|
81
81
|
<tr class="memdesc:aae766534e6dd2141a593b6f07aae6999"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <a href="#aae766534e6dd2141a593b6f07aae6999">More...</a><br /></td></tr>
|
|
82
82
|
<tr class="separator:aae766534e6dd2141a593b6f07aae6999"><td class="memSeparator" colspan="2"> </td></tr>
|
|
83
|
-
<tr class="memitem:
|
|
84
|
-
<tr class="memdesc:
|
|
85
|
-
<tr class="separator:
|
|
83
|
+
<tr class="memitem:a630e7efc4f2b04a6b814bb1730a5747e"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html#a630e7efc4f2b04a6b814bb1730a5747e">buildLLVMLoops</a> (<a class="el" href="classSVF_1_1SVFModule.html">SVFModule</a> *mod, std::vector< const <a class="el" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *> &llvmLoops, llvm::LoopInfoBase< llvm::BasicBlock, llvm::Loop > *loopInfo)</td></tr>
|
|
84
|
+
<tr class="memdesc:a630e7efc4f2b04a6b814bb1730a5747e"><td class="mdescLeft"> </td><td class="mdescRight">Build llvm loops based on LoopInfo analysis. <a href="#a630e7efc4f2b04a6b814bb1730a5747e">More...</a><br /></td></tr>
|
|
85
|
+
<tr class="separator:a630e7efc4f2b04a6b814bb1730a5747e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
86
86
|
<tr class="memitem:a17e4805c2db146430c58af35625a388d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMLoopAnalysis.html#a17e4805c2db146430c58af35625a388d">build</a> (<a class="el" href="classSVF_1_1ICFG.html">ICFG</a> *icfg)</td></tr>
|
|
87
87
|
<tr class="memdesc:a17e4805c2db146430c58af35625a388d"><td class="mdescLeft"> </td><td class="mdescRight">Start from here. <a href="#a17e4805c2db146430c58af35625a388d">More...</a><br /></td></tr>
|
|
88
88
|
<tr class="separator:a17e4805c2db146430c58af35625a388d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
@@ -181,15 +181,15 @@ Public Member Functions</h2></td></tr>
|
|
|
181
181
|
</dd>
|
|
182
182
|
</dl>
|
|
183
183
|
|
|
184
|
-
<p class="definition">Definition at line <a class="el" href="LLVMLoopAnalysis_8cpp_source.html#
|
|
185
|
-
<div class="fragment"><div class="line"><a name="
|
|
186
|
-
<div class="ttc" id="classSVF_1_1LLVMLoopAnalysis_html_a82b29fc1e138e082d7da6e016a5b7eb8"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#a82b29fc1e138e082d7da6e016a5b7eb8">SVF::LLVMLoopAnalysis::buildSVFLoops</a></div><div class="ttdeci">virtual void buildSVFLoops(ICFG *icfg, std::vector< const Loop *> &llvmLoops)</div><div class="ttdoc">Build SVF loops based on llvm loops. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00098">LLVMLoopAnalysis.cpp:98</a></div></div>
|
|
184
|
+
<p class="definition">Definition at line <a class="el" href="LLVMLoopAnalysis_8cpp_source.html#l00084">84</a> of file <a class="el" href="LLVMLoopAnalysis_8cpp_source.html">LLVMLoopAnalysis.cpp</a>.</p>
|
|
185
|
+
<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::vector<const Loop *> llvmLoops;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  llvm::LoopInfoBase<llvm::BasicBlock, llvm::Loop> loopInfo;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classSVF_1_1LLVMLoopAnalysis.html#a630e7efc4f2b04a6b814bb1730a5747e">buildLLVMLoops</a>(<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()->getModule(), llvmLoops, &loopInfo);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="classSVF_1_1LLVMLoopAnalysis.html#a82b29fc1e138e082d7da6e016a5b7eb8">buildSVFLoops</a>(icfg, llvmLoops);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div><div class="ttc" id="classSVF_1_1LLVMLoopAnalysis_html_a82b29fc1e138e082d7da6e016a5b7eb8"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#a82b29fc1e138e082d7da6e016a5b7eb8">SVF::LLVMLoopAnalysis::buildSVFLoops</a></div><div class="ttdeci">virtual void buildSVFLoops(ICFG *icfg, std::vector< const Loop *> &llvmLoops)</div><div class="ttdoc">Build SVF loops based on llvm loops. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00097">LLVMLoopAnalysis.cpp:97</a></div></div>
|
|
187
186
|
<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>
|
|
187
|
+
<div class="ttc" id="classSVF_1_1LLVMLoopAnalysis_html_a630e7efc4f2b04a6b814bb1730a5747e"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#a630e7efc4f2b04a6b814bb1730a5747e">SVF::LLVMLoopAnalysis::buildLLVMLoops</a></div><div class="ttdeci">virtual void buildLLVMLoops(SVFModule *mod, std::vector< const Loop *> &llvmLoops, llvm::LoopInfoBase< llvm::BasicBlock, llvm::Loop > *loopInfo)</div><div class="ttdoc">Build llvm loops based on LoopInfo analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00047">LLVMLoopAnalysis.cpp:47</a></div></div>
|
|
188
188
|
</div><!-- fragment -->
|
|
189
189
|
</div>
|
|
190
190
|
</div>
|
|
191
|
-
<a id="
|
|
192
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
191
|
+
<a id="a630e7efc4f2b04a6b814bb1730a5747e"></a>
|
|
192
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a630e7efc4f2b04a6b814bb1730a5747e">◆ </a></span>buildLLVMLoops()</h2>
|
|
193
193
|
|
|
194
194
|
<div class="memitem">
|
|
195
195
|
<div class="memproto">
|
|
@@ -207,7 +207,13 @@ Public Member Functions</h2></td></tr>
|
|
|
207
207
|
<td class="paramkey"></td>
|
|
208
208
|
<td></td>
|
|
209
209
|
<td class="paramtype">std::vector< const <a class="el" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *> & </td>
|
|
210
|
-
<td class="paramname"><em>llvmLoops</em
|
|
210
|
+
<td class="paramname"><em>llvmLoops</em>, </td>
|
|
211
|
+
</tr>
|
|
212
|
+
<tr>
|
|
213
|
+
<td class="paramkey"></td>
|
|
214
|
+
<td></td>
|
|
215
|
+
<td class="paramtype">llvm::LoopInfoBase< llvm::BasicBlock, llvm::Loop > * </td>
|
|
216
|
+
<td class="paramname"><em>loopInfo</em> </td>
|
|
211
217
|
</tr>
|
|
212
218
|
<tr>
|
|
213
219
|
<td></td>
|
|
@@ -232,7 +238,7 @@ Public Member Functions</h2></td></tr>
|
|
|
232
238
|
</dl>
|
|
233
239
|
|
|
234
240
|
<p class="definition">Definition at line <a class="el" href="LLVMLoopAnalysis_8cpp_source.html#l00047">47</a> of file <a class="el" href="LLVMLoopAnalysis_8cpp_source.html">LLVMLoopAnalysis.cpp</a>.</p>
|
|
235
|
-
<div class="fragment"><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>  <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">llvm::DominatorTree</a> DT = <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">llvm::DominatorTree</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::vector<const Loop *> loop_stack;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getLLVMModules())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">for</span> (Module::const_iterator F = M.begin(), E = M.end(); F != E; ++F)</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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = &*F;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(func);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// do not analyze external call</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  DT.recalculate(const_cast<Function&>(*func));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> 
|
|
241
|
+
<div class="fragment"><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>  <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">llvm::DominatorTree</a> DT = <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">llvm::DominatorTree</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::vector<const Loop *> loop_stack;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getLLVMModules())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">for</span> (Module::const_iterator F = M.begin(), E = M.end(); F != E; ++F)</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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = &*F;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(func);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// do not analyze external call</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  DT.recalculate(const_cast<Function&>(*func));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  loopInfo->analyze(DT);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &loop: *loopInfo)</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>  loop_stack.push_back(loop);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// pre-order traversal on loop-subloop tree</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">while</span> (!loop_stack.empty())</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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *loop = loop_stack.<a class="code" href="classSVF_1_1SVFFunction.html#a60797e9e8b9cbd6b32cc71fa5d00d80c">back</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  loop_stack.pop_back();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  llvmLoops.push_back(loop);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &subloop: loop->getSubLoops())</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  loop_stack.push_back(subloop);</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"> 76</span>  }</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> }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00194">LLVMModule.h:194</a></div></div>
|
|
236
242
|
<div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00058">BasicTypes.h:58</a></div></div>
|
|
237
243
|
<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>
|
|
238
244
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_a60797e9e8b9cbd6b32cc71fa5d00d80c"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a60797e9e8b9cbd6b32cc71fa5d00d80c">SVF::SVFFunction::back</a></div><div class="ttdeci">const SVFBasicBlock * back() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00384">SVFValue.h:384</a></div></div>
|
|
@@ -287,8 +293,8 @@ Public Member Functions</h2></td></tr>
|
|
|
287
293
|
</dd>
|
|
288
294
|
</dl>
|
|
289
295
|
|
|
290
|
-
<p class="definition">Definition at line <a class="el" href="LLVMLoopAnalysis_8cpp_source.html#
|
|
291
|
-
<div class="fragment"><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &llvmLoop: llvmLoops)</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="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"loop name: "</span> << llvmLoop->getName().data() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// count all node id in loop</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<ICFGNode *></a> loop_ids;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const ICFGNode *></a> <a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &BB: llvmLoop->getBlocks())</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &ins: *BB)</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>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&ins);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  loop_ids.insert(icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInst));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  nodes.insert(icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInst));</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classSVF_1_1SVFLoop.html">SVFLoop</a> *svf_loop = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFLoop.html">SVFLoop</a>(nodes, <a class="code" href="classSVF_1_1Options.html#ab7161ca7a809792af82e5aabdfcc3bfb">Options::LoopBound</a>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &node: nodes)</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>  icfg-><a class="code" href="classSVF_1_1ICFG.html#a8cecaf4341ad2f943dc040c8e6d0dec4">addNodeToSVFLoop</a>(node, svf_loop);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// mark loop header's first inst</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* header_blk = llvmLoop->getHeader();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &in_ins = *header_blk->begin();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&in_ins);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *in_node = icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInInst);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &edge: in_node-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>())</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (loop_ids.find(edge->getSrcNode()) == loop_ids.end())</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// entry edge</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  svf_loop-><a class="code" href="classSVF_1_1SVFLoop.html#a774d05838ad9b3cac8d2fb6d7b7edd00">addEntryICFGEdge</a>(edge);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" entry edge: "</span> << edge->toString() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// back edge</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  svf_loop-><a class="code" href="classSVF_1_1SVFLoop.html#a03c6de676a1d8f99687ea973b9b25d58">addBackICFGEdge</a>(edge);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" back edge: "</span> << edge->toString() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// handle in edge</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">llvm::Instruction</a> &br_ins = header_blk->back();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfBrInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&br_ins);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *br_node = icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfBrInst);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &edge: br_node-><a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>())</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>  <span class="keywordflow">if</span> (loop_ids.find(edge->getDstNode()) != loop_ids.end())</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  svf_loop-><a class="code" href="classSVF_1_1SVFLoop.html#ae55b0dee93fb4298a1544d09312a258d">addInICFGEdge</a>(edge);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" in edge: "</span> << edge->toString() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">else</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">continue</span>;</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>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">// mark loop end's first inst</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  llvm::SmallVector<BasicBlock*, 8> ExitBlocks;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  llvmLoop->getExitBlocks(ExitBlocks);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& exit_blk: ExitBlocks)</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>  assert(!exit_blk->empty() && <span class="stringliteral">"exit block is empty?"</span>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">llvm::Instruction</a> &out_ins = *exit_blk->begin();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfOutInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&out_ins);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *out_node = icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfOutInst);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &edge: out_node-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>())</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  svf_loop-><a class="code" href="classSVF_1_1SVFLoop.html#a585d03a1ba76d63ae1dfa689b23b9835">addOutICFGEdge</a>(edge);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" out edge: "</span> << edge->toString() << <span class="stringliteral">"\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="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div><div class="ttc" id="SVFType_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00426">SVFType.h:426</a></div></div>
|
|
296
|
+
<p class="definition">Definition at line <a class="el" href="LLVMLoopAnalysis_8cpp_source.html#l00097">97</a> of file <a class="el" href="LLVMLoopAnalysis_8cpp_source.html">LLVMLoopAnalysis.cpp</a>.</p>
|
|
297
|
+
<div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &llvmLoop: llvmLoops)</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="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"loop name: "</span> << llvmLoop->getName().data() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// count all node id in loop</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<ICFGNode *></a> loop_ids;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const ICFGNode *></a> <a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &BB: llvmLoop->getBlocks())</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &ins: *BB)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&ins);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  loop_ids.insert(icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInst));</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  nodes.insert(icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInst));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="classSVF_1_1SVFLoop.html">SVFLoop</a> *svf_loop = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFLoop.html">SVFLoop</a>(nodes, <a class="code" href="classSVF_1_1Options.html#ab7161ca7a809792af82e5aabdfcc3bfb">Options::LoopBound</a>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &node: nodes)</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>  icfg-><a class="code" href="classSVF_1_1ICFG.html#a8cecaf4341ad2f943dc040c8e6d0dec4">addNodeToSVFLoop</a>(node, svf_loop);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// mark loop header's first inst</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* header_blk = llvmLoop->getHeader();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &in_ins = *header_blk->begin();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&in_ins);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *in_node = icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInInst);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &edge: in_node-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>())</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span> (loop_ids.find(edge->getSrcNode()) == loop_ids.end())</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// entry edge</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  svf_loop-><a class="code" href="classSVF_1_1SVFLoop.html#a774d05838ad9b3cac8d2fb6d7b7edd00">addEntryICFGEdge</a>(edge);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" entry edge: "</span> << edge->toString() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// back edge</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  svf_loop-><a class="code" href="classSVF_1_1SVFLoop.html#a03c6de676a1d8f99687ea973b9b25d58">addBackICFGEdge</a>(edge);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" back edge: "</span> << edge->toString() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// handle in edge</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">llvm::Instruction</a> &br_ins = header_blk->back();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfBrInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&br_ins);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *br_node = icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfBrInst);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &edge: br_node-><a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>())</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>  <span class="keywordflow">if</span> (loop_ids.find(edge->getDstNode()) != loop_ids.end())</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  svf_loop-><a class="code" href="classSVF_1_1SVFLoop.html#ae55b0dee93fb4298a1544d09312a258d">addInICFGEdge</a>(edge);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" in edge: "</span> << edge->toString() << <span class="stringliteral">"\n"</span>);</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="keywordflow">else</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">continue</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>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// mark loop end's first inst</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  llvm::SmallVector<BasicBlock*, 8> ExitBlocks;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  llvmLoop->getExitBlocks(ExitBlocks);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& exit_blk: ExitBlocks)</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>  assert(!exit_blk->empty() && <span class="stringliteral">"exit block is empty?"</span>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">llvm::Instruction</a> &out_ins = *exit_blk->begin();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfOutInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&out_ins);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *out_node = icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfOutInst);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &edge: out_node-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>())</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  svf_loop-><a class="code" href="classSVF_1_1SVFLoop.html#a585d03a1ba76d63ae1dfa689b23b9835">addOutICFGEdge</a>(edge);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" out edge: "</span> << edge->toString() << <span class="stringliteral">"\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="line"><a name="l00171"></a><span class="lineno"> 171</span> }</div><div class="ttc" id="SVFType_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00424">SVFType.h:424</a></div></div>
|
|
292
298
|
<div class="ttc" id="classSVF_1_1SVFLoop_html_ae55b0dee93fb4298a1544d09312a258d"><div class="ttname"><a href="classSVF_1_1SVFLoop.html#ae55b0dee93fb4298a1544d09312a258d">SVF::SVFLoop::addInICFGEdge</a></div><div class="ttdeci">void addInICFGEdge(const ICFGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFLoop_8h_source.html#l00136">SVFLoop.h:136</a></div></div>
|
|
293
299
|
<div class="ttc" id="classSVF_1_1SVFLoop_html"><div class="ttname"><a href="classSVF_1_1SVFLoop.html">SVF::SVFLoop</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFLoop_8h_source.html#l00038">SVFLoop.h:38</a></div></div>
|
|
294
300
|
<div class="ttc" id="classSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00570">SVFValue.h:570</a></div></div>
|
|
@@ -305,8 +311,8 @@ Public Member Functions</h2></td></tr>
|
|
|
305
311
|
<div class="ttc" id="classSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00087">ICFG.h:87</a></div></div>
|
|
306
312
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00095">LLVMModule.h:95</a></div></div>
|
|
307
313
|
<div class="ttc" id="classSVF_1_1SVFLoop_html_a03c6de676a1d8f99687ea973b9b25d58"><div class="ttname"><a href="classSVF_1_1SVFLoop.html#a03c6de676a1d8f99687ea973b9b25d58">SVF::SVFLoop::addBackICFGEdge</a></div><div class="ttdeci">void addBackICFGEdge(const ICFGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFLoop_8h_source.html#l00121">SVFLoop.h:121</a></div></div>
|
|
308
|
-
<div class="ttc" id="classSVF_1_1Options_html_ab7161ca7a809792af82e5aabdfcc3bfb"><div class="ttname"><a href="classSVF_1_1Options.html#ab7161ca7a809792af82e5aabdfcc3bfb">SVF::Options::LoopBound</a></div><div class="ttdeci">static const llvm::cl::opt< unsigned > LoopBound</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
309
|
-
<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#
|
|
314
|
+
<div class="ttc" id="classSVF_1_1Options_html_ab7161ca7a809792af82e5aabdfcc3bfb"><div class="ttname"><a href="classSVF_1_1Options.html#ab7161ca7a809792af82e5aabdfcc3bfb">SVF::Options::LoopBound</a></div><div class="ttdeci">static const llvm::cl::opt< unsigned > LoopBound</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00261">Options.h:261</a></div></div>
|
|
315
|
+
<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#l00417">SVFType.h:417</a></div></div>
|
|
310
316
|
<div class="ttc" id="namespaceSVF_html_ae6c7046834fe00382052ece7d06eb0ac"><div class="ttname"><a href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">SVF::nodes</a></div><div class="ttdeci">iter_range< typename GenericGraphTraits< GraphType >::nodes_iterator > nodes(const GraphType &G)</div><div class="ttdef"><b>Definition:</b> <a href="GraphTraits_8h_source.html#l00111">GraphTraits.h:111</a></div></div>
|
|
311
317
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00208">LLVMModule.h:208</a></div></div>
|
|
312
318
|
</div><!-- fragment -->
|