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
|
@@ -66,33 +66,33 @@ $(function() {
|
|
|
66
66
|
<div class="title">SVFGOPT.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="SVFGOPT_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- SVFGOPT.h -- SVFG optimizer--------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * @file: SVFGOPT.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * @date: 20/03/2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * @version: 1.0</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * @section LICENSE</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> *</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * @section DESCRIPTION</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef SVFGOPT_H_</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define SVFGOPT_H_</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="SVFG_8h.html">Graphs/SVFG.h</a>"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html"> 56</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFGOPT.html">SVFGOPT</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a07874e1a77bcd5ff593757d202a4edd6"> 58</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<SVFGNode*></a> <a class="code" href="classSVF_1_1SVFGOPT.html#a07874e1a77bcd5ff593757d202a4edd6">SVFGNodeSet</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a581349a9fc0066945ca4ce9706a81646"> 59</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, NodeID></a> <a class="code" href="classSVF_1_1SVFGOPT.html#a581349a9fc0066945ca4ce9706a81646">NodeIDToNodeIDMap</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a3ee399dc45e90a512be7575642855f40"> 60</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const MSSAPHISVFGNode*></a> <a class="code" href="classSVF_1_1SVFGOPT.html#a3ee399dc45e90a512be7575642855f40">WorkList</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a239475c15b39d54c632427307b8e9350"> 64</a></span>  <a class="code" href="classSVF_1_1SVFGOPT.html#a239475c15b39d54c632427307b8e9350">SVFGOPT</a>(<a class="code" href="classSVF_1_1MemSSA.html">MemSSA</a>* _mssa, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>) : <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>(_mssa, kind)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#a65bba62d9b62bf2bdbbda69540eeb38d">keepAllSelfCycle</a> = <a class="code" href="classSVF_1_1SVFGOPT.html#ac68a53c567929ba8b69c00e3e8d9d30f">keepContextSelfCycle</a> = <a class="code" href="classSVF_1_1SVFGOPT.html#a7e57ca56a587a5b59543b5bab7fe794d">keepActualOutFormalIn</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#af45feec9a906f9df86e244bb62f603b8"> 69</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SVFGOPT.html#af45feec9a906f9df86e244bb62f603b8">~SVFGOPT</a>() {}</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#af0c1bb4055d3c4b7f5c6133c433144ad"> 71</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#af0c1bb4055d3c4b7f5c6133c433144ad">setTokeepActualOutFormalIn</a>()</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>  <a class="code" href="classSVF_1_1SVFGOPT.html#a7e57ca56a587a5b59543b5bab7fe794d">keepActualOutFormalIn</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a99cce24804a9116f9bf4e773b2f28e85"> 75</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a99cce24804a9116f9bf4e773b2f28e85">setTokeepAllSelfCycle</a>()</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>  <a class="code" href="classSVF_1_1SVFGOPT.html#a65bba62d9b62bf2bdbbda69540eeb38d">keepAllSelfCycle</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#abe2392e0971f6c46537727f001fa44de"> 79</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#abe2392e0971f6c46537727f001fa44de">setTokeepContextSelfCycle</a>()</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#ac68a53c567929ba8b69c00e3e8d9d30f">keepContextSelfCycle</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#af4d2c6d2e3b316b256f860801fe3b178">buildSVFG</a>();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a5e65ac95b96fb87a11a765c51f366ec1"> 89</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a5e65ac95b96fb87a11a765c51f366ec1">connectAParamAndFParam</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_arg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_arg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>*, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> phiId = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(fun_arg);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">addCallEdge</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(cs_arg), phiId, csId);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>* phi = SVFUtil::cast<PHISVFGNode>(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(phiId));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#a30a4165300d0b7ac9b31d9f9c496d943">addInterPHIOperands</a>(phi, cs_arg);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  edges.insert(edge);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#aad3217fa932738ab8ba09e1e9f48ac56"> 101</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#aad3217fa932738ab8ba09e1e9f48ac56">connectFRetAndARet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_ret, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_ret, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> phiId = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(cs_ret);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> retdef = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(fun_ret);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">isPhiNode</a>(fun_ret)==<span class="keyword">false</span>)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(retdef, phiId, csId);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</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_1PHIVFGNode.html">PHISVFGNode</a>* phi = SVFUtil::cast<PHISVFGNode>(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(phiId));</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#a30a4165300d0b7ac9b31d9f9c496d943">addInterPHIOperands</a>(phi, fun_ret);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  edges.insert(edge);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#aa39900e11f5689f8bd70f3ec45865225"> 120</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#aa39900e11f5689f8bd70f3ec45865225">connectAInAndFIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> intersection = actualIn-><a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  intersection &= formalIn-><a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (intersection.<a class="code" href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">empty</a>() == <span class="keyword">false</span>)</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>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> aiDef = <a class="code" href="classSVF_1_1SVFGOPT.html#a550f93b640a6fd68773fbafd2944d7df">getActualINDef</a>(actualIn-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFGOPT.html#a11dc712bf74ba61160fed7a5c3efaeee">addCallIndirectSVFGEdge</a>(aiDef,formalIn-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),csId,intersection);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  edges.insert(edge);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a79ace9bac7f2e075c27209ea56fc6032"> 133</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a79ace9bac7f2e075c27209ea56fc6032">connectFOutAndAOut</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</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>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> intersection = formalOut-><a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  intersection &= actualOut-><a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (intersection.<a class="code" href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">empty</a>() == <span class="keyword">false</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>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> foDef = <a class="code" href="classSVF_1_1SVFGOPT.html#a8d0b44ba9f3e6f9344a10d085d7be2b4">getFormalOUTDef</a>(formalOut-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFGOPT.html#afa99da68ef756d968d39a85f0fac3649">addRetIndirectSVFGEdge</a>(foDef,actualOut-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),csId,intersection);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  edges.insert(edge);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a550f93b640a6fd68773fbafd2944d7df"> 149</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1SVFGOPT.html#a550f93b640a6fd68773fbafd2944d7df">getActualINDef</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> ai)<span class="keyword"> const</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  NodeIDToNodeIDMap::const_iterator it = <a class="code" href="classSVF_1_1SVFGOPT.html#a9741514d915bf7f14787cc346b9d7c98">actualInToDefMap</a>.find(ai);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  assert(it != <a class="code" href="classSVF_1_1SVFGOPT.html#a9741514d915bf7f14787cc346b9d7c98">actualInToDefMap</a>.end() && <span class="stringliteral">"can not find actual-in's def"</span>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a8d0b44ba9f3e6f9344a10d085d7be2b4"> 155</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1SVFGOPT.html#a8d0b44ba9f3e6f9344a10d085d7be2b4">getFormalOUTDef</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> fo)<span class="keyword"> const</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  NodeIDToNodeIDMap::const_iterator it = <a class="code" href="classSVF_1_1SVFGOPT.html#abbd6ac28826b9cc4c4981271393c8b19">formalOutToDefMap</a>.find(fo);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  assert(it != <a class="code" href="classSVF_1_1SVFGOPT.html#abbd6ac28826b9cc4c4981271393c8b19">formalOutToDefMap</a>.end() && <span class="stringliteral">"can not find formal-out's def"</span>);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ac3b14bf191cadb832e3a34affd7e569d">parseSelfCycleHandleOption</a>();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</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_1VFGEdge.html">SVFGEdge</a>* <a class="code" href="classSVF_1_1SVFGOPT.html#a11dc712bf74ba61160fed7a5c3efaeee">addCallIndirectSVFGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csid, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* <a class="code" href="classSVF_1_1SVFGOPT.html#afa99da68ef756d968d39a85f0fac3649">addRetIndirectSVFGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csid, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a4c698184cc23730fb44904d4048958da">handleInterValueFlow</a>();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a1fd6d26203d7d574b5664b8fcae54c1a">replaceFParamARetWithPHI</a>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>* phi, <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* svfgNode);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </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="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#abefe3efa0232106f1843351ff6dd1063">retargetEdgesOfAInFOut</a>(<a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a2285d20f7c4d128a8ede2e7f4f41f798">retargetEdgesOfAOutFIn</a>(<a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a21429d8c3fba209d9cdc22e3623c5573">handleIntraValueFlow</a>();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ae825e01893d3304379f72380d314f09c"> 202</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ae825e01893d3304379f72380d314f09c">initialWorkList</a>()</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVFG::const_iterator</a> it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != eit; ++it)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#a72c573ecbc12c44e6ce1d67527f888a8">addIntoWorklist</a>(it->second);</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> </div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a72c573ecbc12c44e6ce1d67527f888a8"> 211</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a72c573ecbc12c44e6ce1d67527f888a8">addIntoWorklist</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* phi = SVFUtil::dyn_cast<MSSAPHISVFGNode>(node))</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="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFGOPT.html#aa23c967a8fcadbaf47e93a5b3610c84d">isConnectingTwoCallSites</a>(phi) == <span class="keyword">false</span> && <a class="code" href="classSVF_1_1SVFGOPT.html#a0e78edc04f5e8bfcca7a3f04f7568665">isDefOfAInFOut</a>(phi) == <span class="keyword">false</span>)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a925f39665e13b18dfe66c2dded44c194">worklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(phi);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a4f3890f637ffe03c2a1981e75e3d2e16">bypassMSSAPHINode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* node);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#afb068fd46dfbf993decd7d6c8ca2c9ba">checkSelfCycleEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* node);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a6aeeb727f1d9d917ff6cffbb88350b7a">addNewSVFGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* preEdge, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* succEdge);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a6d5cdb3b78e4ed482b0da4c64323b463"> 231</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a6d5cdb3b78e4ed482b0da4c64323b463">bothInterEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge2)<span class="keyword"> const</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordtype">bool</span> inter1 = SVFUtil::isa<CallIndSVFGEdge, RetIndSVFGEdge>(edge1);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordtype">bool</span> inter2 = SVFUtil::isa<CallIndSVFGEdge, RetIndSVFGEdge>(edge2);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> (inter1 && inter2);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a30a4165300d0b7ac9b31d9f9c496d943"> 238</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a30a4165300d0b7ac9b31d9f9c496d943">addInterPHIOperands</a>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>* phi, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* operand)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  phi-><a class="code" href="classSVF_1_1PHIVFGNode.html#a36f469a129063b43161a8d1423414ce5">setOpVer</a>(phi-><a class="code" href="classSVF_1_1PHIVFGNode.html#aa147f43ddf3efac3e0143235ab611cf2">getOpVerNum</a>(), operand);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a374a31b9500ceda00477b03e9702d0a8"> 244</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* <a class="code" href="classSVF_1_1SVFGOPT.html#a374a31b9500ceda00477b03e9702d0a8">addInterPHIForFP</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmSVFGNode</a>* fp)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a0f7ff1d9a479df87241b45bb9c81d3ca">InterPHISVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++,fp);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(fp-><a class="code" href="classSVF_1_1FormalParmVFGNode.html#af3039ab67875b177f7ba0bf246cec2f8">getFun</a>()));</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#af504407e6cd42cfe2ea27165ff15df40">resetDef</a>(fp-><a class="code" href="classSVF_1_1FormalParmVFGNode.html#ab1a9031c1fc5102e072b5035151c131c">getParam</a>(),sNode);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> sNode;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ad4203fa8afbf0c0a5d6775be937c6e1d"> 252</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* <a class="code" href="classSVF_1_1SVFGOPT.html#ad4203fa8afbf0c0a5d6775be937c6e1d">addInterPHIForAR</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>* ar)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a0f7ff1d9a479df87241b45bb9c81d3ca">InterPHISVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++,ar);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(ar-><a class="code" href="classSVF_1_1ActualRetVFGNode.html#a06ea783375c18198b00121214c357c18">getCallSite</a>()-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()));</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#af504407e6cd42cfe2ea27165ff15df40">resetDef</a>(ar-><a class="code" href="classSVF_1_1ActualRetVFGNode.html#a4bcfddf05da46729c670b4f450f9d606">getRev</a>(),sNode);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> sNode;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#af504407e6cd42cfe2ea27165ff15df40"> 260</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#af504407e6cd42cfe2ea27165ff15df40">resetDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  PAGNodeToDefMapTy::iterator it = <a class="code" href="classSVF_1_1VFG.html#ac89b3917ed73ac70aac6205af8f7a4fe">PAGNodeToDefMap</a>.find(pagNode);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  assert(it != <a class="code" href="classSVF_1_1VFG.html#ac89b3917ed73ac70aac6205af8f7a4fe">PAGNodeToDefMap</a>.end() && <span class="stringliteral">"a SVFIR node doesn't have definition before"</span>);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  it->second = node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a490695ab536cd455c531fbdc57499cac"> 269</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a490695ab536cd455c531fbdc57499cac">setActualINDef</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> ai, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> def)</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1SVFGOPT.html#a9741514d915bf7f14787cc346b9d7c98">actualInToDefMap</a>.emplace(ai, def).second;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  assert(inserted && <span class="stringliteral">"can not set actual-in's def twice"</span>);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#abd524dca72261bbcc7ebb1103b693a2b">defNodes</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(def);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a3e2b811dd939c93bcf9fb94e91d553b1"> 276</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a3e2b811dd939c93bcf9fb94e91d553b1">setFormalOUTDef</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> fo, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> def)</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="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1SVFGOPT.html#abbd6ac28826b9cc4c4981271393c8b19">formalOutToDefMap</a>.emplace(fo, def).second;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  (void) inserted;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  assert(inserted && <span class="stringliteral">"can not set formal-out's def twice"</span>);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#abd524dca72261bbcc7ebb1103b693a2b">defNodes</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(def);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a0e78edc04f5e8bfcca7a3f04f7568665"> 285</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a0e78edc04f5e8bfcca7a3f04f7568665">isDefOfAInFOut</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFGOPT.html#abd524dca72261bbcc7ebb1103b693a2b">defNodes</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#af6fa424cd7518b330a6017839a789bf6"> 292</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#af6fa424cd7518b330a6017839a789bf6">actualInOfIndCS</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* ai)<span class="keyword"> const</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()->isIndirectCallSites(ai-><a class="code" href="classSVF_1_1ActualINSVFGNode.html#aab3b2931f60adeb9fd8c87087074d834">getCallSite</a>()));</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a79c435e456474b41e4402c2c9c269fc9"> 296</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a79c435e456474b41e4402c2c9c269fc9">actualOutOfIndCS</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* ao)<span class="keyword"> const</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()->isIndirectCallSites(ao-><a class="code" href="classSVF_1_1ActualOUTSVFGNode.html#a89cb274936513df411a75fb33a86702f">getCallSite</a>()));</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</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"><a class="line" href="classSVF_1_1SVFGOPT.html#a6eeec9fa475316f52689728a1af7bd05"> 304</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a6eeec9fa475316f52689728a1af7bd05">formalInOfAddressTakenFunc</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* fi)<span class="keyword"> const</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">return</span> (fi-><a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#a731b978178937e74c80d2882c429dc9e">hasAddressTaken</a>());</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a86cb63258b49077587d44ba45d023f02"> 308</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a86cb63258b49077587d44ba45d023f02">formalOutOfAddressTakenFunc</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* fo)<span class="keyword"> const</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">return</span> (fo-><a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#a731b978178937e74c80d2882c429dc9e">hasAddressTaken</a>());</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#aa23c967a8fcadbaf47e93a5b3610c84d">isConnectingTwoCallSites</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node) <span class="keyword">const</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ab72ce28409a440bbf5b84a68e5f82b85">canBeRemoved</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> * node);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ac15b3c2cb127b17ebad3a30fc04b6f40"> 330</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ac15b3c2cb127b17ebad3a30fc04b6f40">removeAllEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#a5a2fe12411de408dfb57e910e413957f">removeInEdges</a>(node);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#ae85391a5f0828362c61d55e162eef04d">removeOutEdges</a>(node);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a5a2fe12411de408dfb57e910e413957f"> 335</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a5a2fe12411de408dfb57e910e413957f">removeInEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">while</span> (node-><a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>())</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">removeSVFGEdge</a>(*(node-><a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>()));</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ae85391a5f0828362c61d55e162eef04d"> 341</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ae85391a5f0828362c61d55e162eef04d">removeOutEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">while</span> (node-><a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>())</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">removeSVFGEdge</a>(*(node-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>()));</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a9741514d915bf7f14787cc346b9d7c98"> 349</a></span>  NodeIDToNodeIDMap <a class="code" href="classSVF_1_1SVFGOPT.html#a9741514d915bf7f14787cc346b9d7c98">actualInToDefMap</a>; </div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#abbd6ac28826b9cc4c4981271393c8b19"> 350</a></span>  NodeIDToNodeIDMap <a class="code" href="classSVF_1_1SVFGOPT.html#abbd6ac28826b9cc4c4981271393c8b19">formalOutToDefMap</a>; </div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#abd524dca72261bbcc7ebb1103b693a2b"> 351</a></span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SVFGOPT.html#abd524dca72261bbcc7ebb1103b693a2b">defNodes</a>; </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a925f39665e13b18dfe66c2dded44c194"> 353</a></span>  WorkList <a class="code" href="classSVF_1_1SVFGOPT.html#a925f39665e13b18dfe66c2dded44c194">worklist</a>; </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a7e57ca56a587a5b59543b5bab7fe794d"> 355</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a7e57ca56a587a5b59543b5bab7fe794d">keepActualOutFormalIn</a>;</div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a65bba62d9b62bf2bdbbda69540eeb38d"> 356</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a65bba62d9b62bf2bdbbda69540eeb38d">keepAllSelfCycle</a>;</div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ac68a53c567929ba8b69c00e3e8d9d30f"> 357</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ac68a53c567929ba8b69c00e3e8d9d30f">keepContextSelfCycle</a>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> };</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="preprocessor">#endif </span><span class="comment">/* SVFGOPT_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SVFGOPT_html_ae85391a5f0828362c61d55e162eef04d"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#ae85391a5f0828362c61d55e162eef04d">SVF::SVFGOPT::removeOutEdges</a></div><div class="ttdeci">void removeOutEdges(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00341">SVFGOPT.h:341</a></div></div>
|
|
69
|
+
<a href="SVFGOPT_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- SVFGOPT.h -- SVFG optimizer--------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * @file: SVFGOPT.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * @date: 20/03/2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * @version: 1.0</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * @section LICENSE</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> *</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * @section DESCRIPTION</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef SVFGOPT_H_</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define SVFGOPT_H_</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="SVFG_8h.html">Graphs/SVFG.h</a>"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html"> 56</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFGOPT.html">SVFGOPT</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a07874e1a77bcd5ff593757d202a4edd6"> 58</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<SVFGNode*></a> <a class="code" href="classSVF_1_1SVFGOPT.html#a07874e1a77bcd5ff593757d202a4edd6">SVFGNodeSet</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a581349a9fc0066945ca4ce9706a81646"> 59</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, NodeID></a> <a class="code" href="classSVF_1_1SVFGOPT.html#a581349a9fc0066945ca4ce9706a81646">NodeIDToNodeIDMap</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a3ee399dc45e90a512be7575642855f40"> 60</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const MSSAPHISVFGNode*></a> <a class="code" href="classSVF_1_1SVFGOPT.html#a3ee399dc45e90a512be7575642855f40">WorkList</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a64c300c8a9f8cc2ac13eef65c1108d01"> 64</a></span>  <a class="code" href="classSVF_1_1SVFGOPT.html#a64c300c8a9f8cc2ac13eef65c1108d01">SVFGOPT</a>(std::unique_ptr<MemSSA> <a class="code" href="classSVF_1_1SVFG.html#aa6a563cab8678b2256ca6ae7838285c8">mssa</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>) : <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>(<a class="code" href="namespacestd.html">std</a>::<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">move</a>(mssa), kind)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#a65bba62d9b62bf2bdbbda69540eeb38d">keepAllSelfCycle</a> = <a class="code" href="classSVF_1_1SVFGOPT.html#ac68a53c567929ba8b69c00e3e8d9d30f">keepContextSelfCycle</a> = <a class="code" href="classSVF_1_1SVFGOPT.html#a7e57ca56a587a5b59543b5bab7fe794d">keepActualOutFormalIn</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#ac9c5f279353ceea5a93dbdf002e3be0c">~SVFGOPT</a>() <span class="keyword">override</span> = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#af0c1bb4055d3c4b7f5c6133c433144ad"> 71</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#af0c1bb4055d3c4b7f5c6133c433144ad">setTokeepActualOutFormalIn</a>()</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>  <a class="code" href="classSVF_1_1SVFGOPT.html#a7e57ca56a587a5b59543b5bab7fe794d">keepActualOutFormalIn</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a99cce24804a9116f9bf4e773b2f28e85"> 75</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a99cce24804a9116f9bf4e773b2f28e85">setTokeepAllSelfCycle</a>()</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>  <a class="code" href="classSVF_1_1SVFGOPT.html#a65bba62d9b62bf2bdbbda69540eeb38d">keepAllSelfCycle</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#abe2392e0971f6c46537727f001fa44de"> 79</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#abe2392e0971f6c46537727f001fa44de">setTokeepContextSelfCycle</a>()</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#ac68a53c567929ba8b69c00e3e8d9d30f">keepContextSelfCycle</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a788fded648d6d037dc7be4b7796a3e7a">buildSVFG</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a82c28afbba24b90ef0394c9dcd0aae57"> 89</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a82c28afbba24b90ef0394c9dcd0aae57">connectAParamAndFParam</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_arg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_arg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>*, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)<span class="keyword"> override</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> phiId = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(fun_arg);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">addCallEdge</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(cs_arg), phiId, csId);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>* phi = SVFUtil::cast<PHISVFGNode>(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(phiId));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#a30a4165300d0b7ac9b31d9f9c496d943">addInterPHIOperands</a>(phi, cs_arg);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  edges.insert(edge);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ae5648d1248af4e4ce755ee5d32f84a06"> 101</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ae5648d1248af4e4ce755ee5d32f84a06">connectFRetAndARet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_ret, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_ret, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)<span class="keyword"> override</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> phiId = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(cs_ret);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> retdef = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(fun_ret);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">isPhiNode</a>(fun_ret)==<span class="keyword">false</span>)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(retdef, phiId, csId);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</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_1PHIVFGNode.html">PHISVFGNode</a>* phi = SVFUtil::cast<PHISVFGNode>(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(phiId));</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#a30a4165300d0b7ac9b31d9f9c496d943">addInterPHIOperands</a>(phi, fun_ret);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  edges.insert(edge);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a624c36b40fd301d67a71952adf206e47"> 120</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a624c36b40fd301d67a71952adf206e47">connectAInAndFIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)<span class="keyword"> override</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> intersection = actualIn-><a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  intersection &= formalIn-><a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (intersection.<a class="code" href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">empty</a>() == <span class="keyword">false</span>)</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>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> aiDef = <a class="code" href="classSVF_1_1SVFGOPT.html#a550f93b640a6fd68773fbafd2944d7df">getActualINDef</a>(actualIn-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFGOPT.html#a11dc712bf74ba61160fed7a5c3efaeee">addCallIndirectSVFGEdge</a>(aiDef,formalIn-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),csId,intersection);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  edges.insert(edge);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ad88f85a4d5c397b3b6896608ba035bd3"> 133</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ad88f85a4d5c397b3b6896608ba035bd3">connectFOutAndAOut</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)<span class="keyword"> override</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> intersection = formalOut-><a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  intersection &= actualOut-><a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (intersection.<a class="code" href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">empty</a>() == <span class="keyword">false</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>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> foDef = <a class="code" href="classSVF_1_1SVFGOPT.html#a8d0b44ba9f3e6f9344a10d085d7be2b4">getFormalOUTDef</a>(formalOut-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFGOPT.html#afa99da68ef756d968d39a85f0fac3649">addRetIndirectSVFGEdge</a>(foDef,actualOut-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),csId,intersection);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  edges.insert(edge);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a550f93b640a6fd68773fbafd2944d7df"> 149</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1SVFGOPT.html#a550f93b640a6fd68773fbafd2944d7df">getActualINDef</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> ai)<span class="keyword"> const</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  NodeIDToNodeIDMap::const_iterator it = <a class="code" href="classSVF_1_1SVFGOPT.html#a9741514d915bf7f14787cc346b9d7c98">actualInToDefMap</a>.find(ai);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  assert(it != <a class="code" href="classSVF_1_1SVFGOPT.html#a9741514d915bf7f14787cc346b9d7c98">actualInToDefMap</a>.end() && <span class="stringliteral">"can not find actual-in's def"</span>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a8d0b44ba9f3e6f9344a10d085d7be2b4"> 155</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1SVFGOPT.html#a8d0b44ba9f3e6f9344a10d085d7be2b4">getFormalOUTDef</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> fo)<span class="keyword"> const</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  NodeIDToNodeIDMap::const_iterator it = <a class="code" href="classSVF_1_1SVFGOPT.html#abbd6ac28826b9cc4c4981271393c8b19">formalOutToDefMap</a>.find(fo);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  assert(it != <a class="code" href="classSVF_1_1SVFGOPT.html#abbd6ac28826b9cc4c4981271393c8b19">formalOutToDefMap</a>.end() && <span class="stringliteral">"can not find formal-out's def"</span>);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ac3b14bf191cadb832e3a34affd7e569d">parseSelfCycleHandleOption</a>();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</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_1VFGEdge.html">SVFGEdge</a>* <a class="code" href="classSVF_1_1SVFGOPT.html#a11dc712bf74ba61160fed7a5c3efaeee">addCallIndirectSVFGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csid, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* <a class="code" href="classSVF_1_1SVFGOPT.html#afa99da68ef756d968d39a85f0fac3649">addRetIndirectSVFGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csid, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a4c698184cc23730fb44904d4048958da">handleInterValueFlow</a>();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a1fd6d26203d7d574b5664b8fcae54c1a">replaceFParamARetWithPHI</a>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>* phi, <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* svfgNode);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </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="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#abefe3efa0232106f1843351ff6dd1063">retargetEdgesOfAInFOut</a>(<a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a2285d20f7c4d128a8ede2e7f4f41f798">retargetEdgesOfAOutFIn</a>(<a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a21429d8c3fba209d9cdc22e3623c5573">handleIntraValueFlow</a>();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ae825e01893d3304379f72380d314f09c"> 202</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ae825e01893d3304379f72380d314f09c">initialWorkList</a>()</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVFG::const_iterator</a> it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != eit; ++it)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#a72c573ecbc12c44e6ce1d67527f888a8">addIntoWorklist</a>(it->second);</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> </div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a72c573ecbc12c44e6ce1d67527f888a8"> 211</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a72c573ecbc12c44e6ce1d67527f888a8">addIntoWorklist</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* phi = SVFUtil::dyn_cast<MSSAPHISVFGNode>(node))</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="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFGOPT.html#aa23c967a8fcadbaf47e93a5b3610c84d">isConnectingTwoCallSites</a>(phi) == <span class="keyword">false</span> && <a class="code" href="classSVF_1_1SVFGOPT.html#a0e78edc04f5e8bfcca7a3f04f7568665">isDefOfAInFOut</a>(phi) == <span class="keyword">false</span>)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a925f39665e13b18dfe66c2dded44c194">worklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(phi);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a4f3890f637ffe03c2a1981e75e3d2e16">bypassMSSAPHINode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* node);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#afb068fd46dfbf993decd7d6c8ca2c9ba">checkSelfCycleEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* node);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a6aeeb727f1d9d917ff6cffbb88350b7a">addNewSVFGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* preEdge, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* succEdge);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a6d5cdb3b78e4ed482b0da4c64323b463"> 231</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a6d5cdb3b78e4ed482b0da4c64323b463">bothInterEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge2)<span class="keyword"> const</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordtype">bool</span> inter1 = SVFUtil::isa<CallIndSVFGEdge, RetIndSVFGEdge>(edge1);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordtype">bool</span> inter2 = SVFUtil::isa<CallIndSVFGEdge, RetIndSVFGEdge>(edge2);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> (inter1 && inter2);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a30a4165300d0b7ac9b31d9f9c496d943"> 238</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a30a4165300d0b7ac9b31d9f9c496d943">addInterPHIOperands</a>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>* phi, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* operand)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  phi-><a class="code" href="classSVF_1_1PHIVFGNode.html#a36f469a129063b43161a8d1423414ce5">setOpVer</a>(phi-><a class="code" href="classSVF_1_1PHIVFGNode.html#aa147f43ddf3efac3e0143235ab611cf2">getOpVerNum</a>(), operand);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a374a31b9500ceda00477b03e9702d0a8"> 244</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* <a class="code" href="classSVF_1_1SVFGOPT.html#a374a31b9500ceda00477b03e9702d0a8">addInterPHIForFP</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmSVFGNode</a>* fp)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a0f7ff1d9a479df87241b45bb9c81d3ca">InterPHISVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++,fp);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(fp-><a class="code" href="classSVF_1_1FormalParmVFGNode.html#af3039ab67875b177f7ba0bf246cec2f8">getFun</a>()));</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#af504407e6cd42cfe2ea27165ff15df40">resetDef</a>(fp-><a class="code" href="classSVF_1_1FormalParmVFGNode.html#ab1a9031c1fc5102e072b5035151c131c">getParam</a>(),sNode);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> sNode;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ad4203fa8afbf0c0a5d6775be937c6e1d"> 252</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* <a class="code" href="classSVF_1_1SVFGOPT.html#ad4203fa8afbf0c0a5d6775be937c6e1d">addInterPHIForAR</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>* ar)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a0f7ff1d9a479df87241b45bb9c81d3ca">InterPHISVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++,ar);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(ar-><a class="code" href="classSVF_1_1ActualRetVFGNode.html#a06ea783375c18198b00121214c357c18">getCallSite</a>()-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()));</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#af504407e6cd42cfe2ea27165ff15df40">resetDef</a>(ar-><a class="code" href="classSVF_1_1ActualRetVFGNode.html#a4bcfddf05da46729c670b4f450f9d606">getRev</a>(),sNode);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> sNode;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#af504407e6cd42cfe2ea27165ff15df40"> 260</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#af504407e6cd42cfe2ea27165ff15df40">resetDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  PAGNodeToDefMapTy::iterator it = <a class="code" href="classSVF_1_1VFG.html#ac89b3917ed73ac70aac6205af8f7a4fe">PAGNodeToDefMap</a>.find(pagNode);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  assert(it != <a class="code" href="classSVF_1_1VFG.html#ac89b3917ed73ac70aac6205af8f7a4fe">PAGNodeToDefMap</a>.end() && <span class="stringliteral">"a SVFIR node doesn't have definition before"</span>);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  it->second = node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a490695ab536cd455c531fbdc57499cac"> 269</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a490695ab536cd455c531fbdc57499cac">setActualINDef</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> ai, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> def)</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1SVFGOPT.html#a9741514d915bf7f14787cc346b9d7c98">actualInToDefMap</a>.emplace(ai, def).second;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  assert(inserted && <span class="stringliteral">"can not set actual-in's def twice"</span>);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#abd524dca72261bbcc7ebb1103b693a2b">defNodes</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(def);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a3e2b811dd939c93bcf9fb94e91d553b1"> 276</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a3e2b811dd939c93bcf9fb94e91d553b1">setFormalOUTDef</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> fo, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> def)</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="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1SVFGOPT.html#abbd6ac28826b9cc4c4981271393c8b19">formalOutToDefMap</a>.emplace(fo, def).second;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  (void) inserted;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  assert(inserted && <span class="stringliteral">"can not set formal-out's def twice"</span>);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#abd524dca72261bbcc7ebb1103b693a2b">defNodes</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(def);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a0e78edc04f5e8bfcca7a3f04f7568665"> 285</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a0e78edc04f5e8bfcca7a3f04f7568665">isDefOfAInFOut</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFGOPT.html#abd524dca72261bbcc7ebb1103b693a2b">defNodes</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#af6fa424cd7518b330a6017839a789bf6"> 292</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#af6fa424cd7518b330a6017839a789bf6">actualInOfIndCS</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* ai)<span class="keyword"> const</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()->isIndirectCallSites(ai-><a class="code" href="classSVF_1_1ActualINSVFGNode.html#aab3b2931f60adeb9fd8c87087074d834">getCallSite</a>()));</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a79c435e456474b41e4402c2c9c269fc9"> 296</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a79c435e456474b41e4402c2c9c269fc9">actualOutOfIndCS</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* ao)<span class="keyword"> const</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()->isIndirectCallSites(ao-><a class="code" href="classSVF_1_1ActualOUTSVFGNode.html#a89cb274936513df411a75fb33a86702f">getCallSite</a>()));</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</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"><a class="line" href="classSVF_1_1SVFGOPT.html#a6eeec9fa475316f52689728a1af7bd05"> 304</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a6eeec9fa475316f52689728a1af7bd05">formalInOfAddressTakenFunc</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* fi)<span class="keyword"> const</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">return</span> (fi-><a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#a731b978178937e74c80d2882c429dc9e">hasAddressTaken</a>());</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a86cb63258b49077587d44ba45d023f02"> 308</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a86cb63258b49077587d44ba45d023f02">formalOutOfAddressTakenFunc</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* fo)<span class="keyword"> const</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">return</span> (fo-><a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#a731b978178937e74c80d2882c429dc9e">hasAddressTaken</a>());</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#aa23c967a8fcadbaf47e93a5b3610c84d">isConnectingTwoCallSites</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node) <span class="keyword">const</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ab72ce28409a440bbf5b84a68e5f82b85">canBeRemoved</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> * node);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ac15b3c2cb127b17ebad3a30fc04b6f40"> 330</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ac15b3c2cb127b17ebad3a30fc04b6f40">removeAllEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#a5a2fe12411de408dfb57e910e413957f">removeInEdges</a>(node);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="classSVF_1_1SVFGOPT.html#ae85391a5f0828362c61d55e162eef04d">removeOutEdges</a>(node);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a5a2fe12411de408dfb57e910e413957f"> 335</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a5a2fe12411de408dfb57e910e413957f">removeInEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">while</span> (node-><a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>())</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">removeSVFGEdge</a>(*(node-><a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>()));</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ae85391a5f0828362c61d55e162eef04d"> 341</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ae85391a5f0828362c61d55e162eef04d">removeOutEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">while</span> (node-><a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>())</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">removeSVFGEdge</a>(*(node-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>()));</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a9741514d915bf7f14787cc346b9d7c98"> 349</a></span>  NodeIDToNodeIDMap <a class="code" href="classSVF_1_1SVFGOPT.html#a9741514d915bf7f14787cc346b9d7c98">actualInToDefMap</a>; </div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#abbd6ac28826b9cc4c4981271393c8b19"> 350</a></span>  NodeIDToNodeIDMap <a class="code" href="classSVF_1_1SVFGOPT.html#abbd6ac28826b9cc4c4981271393c8b19">formalOutToDefMap</a>; </div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#abd524dca72261bbcc7ebb1103b693a2b"> 351</a></span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SVFGOPT.html#abd524dca72261bbcc7ebb1103b693a2b">defNodes</a>; </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a925f39665e13b18dfe66c2dded44c194"> 353</a></span>  WorkList <a class="code" href="classSVF_1_1SVFGOPT.html#a925f39665e13b18dfe66c2dded44c194">worklist</a>; </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a7e57ca56a587a5b59543b5bab7fe794d"> 355</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a7e57ca56a587a5b59543b5bab7fe794d">keepActualOutFormalIn</a>;</div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a65bba62d9b62bf2bdbbda69540eeb38d"> 356</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a65bba62d9b62bf2bdbbda69540eeb38d">keepAllSelfCycle</a>;</div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ac68a53c567929ba8b69c00e3e8d9d30f"> 357</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ac68a53c567929ba8b69c00e3e8d9d30f">keepContextSelfCycle</a>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> };</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="preprocessor">#endif </span><span class="comment">/* SVFGOPT_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SVFGOPT_html_ae85391a5f0828362c61d55e162eef04d"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#ae85391a5f0828362c61d55e162eef04d">SVF::SVFGOPT::removeOutEdges</a></div><div class="ttdeci">void removeOutEdges(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00341">SVFGOPT.h:341</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
71
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a931d8b82e10a54d68c68cf6bd80264be"><div class="ttname"><a href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">SVF::SVFG::removeSVFGEdge</a></div><div class="ttdeci">void removeSVFGEdge(SVFGEdge *edge)</div><div class="ttdoc">Remove a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
71
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a931d8b82e10a54d68c68cf6bd80264be"><div class="ttname"><a href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">SVF::SVFG::removeSVFGEdge</a></div><div class="ttdeci">void removeSVFGEdge(SVFGEdge *edge)</div><div class="ttdoc">Remove a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00231">SVFG.h:231</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00196">GenericGraph.h:196</a></div></div>
|
|
73
|
-
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a239475c15b39d54c632427307b8e9350"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a239475c15b39d54c632427307b8e9350">SVF::SVFGOPT::SVFGOPT</a></div><div class="ttdeci">SVFGOPT(MemSSA *_mssa, VFGK kind)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00064">SVFGOPT.h:64</a></div></div>
|
|
74
|
-
<div class="ttc" id="classSVF_1_1SVFGOPT_html_aad3217fa932738ab8ba09e1e9f48ac56"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#aad3217fa932738ab8ba09e1e9f48ac56">SVF::SVFGOPT::connectFRetAndARet</a></div><div class="ttdeci">virtual void connectFRetAndARet(const PAGNode *fun_ret, const PAGNode *cs_ret, CallSiteID csId, SVFGEdgeSetTy &edges)</div><div class="ttdoc">Connect formal-ret and actual ret. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00101">SVFGOPT.h:101</a></div></div>
|
|
75
73
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a3ee399dc45e90a512be7575642855f40"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a3ee399dc45e90a512be7575642855f40">SVF::SVFGOPT::WorkList</a></div><div class="ttdeci">FIFOWorkList< const MSSAPHISVFGNode * > WorkList</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00060">SVFGOPT.h:60</a></div></div>
|
|
76
74
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_ad4203fa8afbf0c0a5d6775be937c6e1d"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#ad4203fa8afbf0c0a5d6775be937c6e1d">SVF::SVFGOPT::addInterPHIForAR</a></div><div class="ttdeci">InterPHISVFGNode * addInterPHIForAR(const ActualRetSVFGNode *ar)</div><div class="ttdoc">Add inter PHI SVFG node for actual return. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00252">SVFGOPT.h:252</a></div></div>
|
|
77
75
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a99cce24804a9116f9bf4e773b2f28e85"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a99cce24804a9116f9bf4e773b2f28e85">SVF::SVFGOPT::setTokeepAllSelfCycle</a></div><div class="ttdeci">void setTokeepAllSelfCycle()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00075">SVFGOPT.h:75</a></div></div>
|
|
78
76
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a5a2fe12411de408dfb57e910e413957f"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a5a2fe12411de408dfb57e910e413957f">SVF::SVFGOPT::removeInEdges</a></div><div class="ttdeci">void removeInEdges(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00335">SVFGOPT.h:335</a></div></div>
|
|
77
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_aa6a563cab8678b2256ca6ae7838285c8"><div class="ttname"><a href="classSVF_1_1SVFG.html#aa6a563cab8678b2256ca6ae7838285c8">SVF::SVFG::mssa</a></div><div class="ttdeci">std::unique_ptr< MemSSA > mssa</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00105">SVFG.h:105</a></div></div>
|
|
79
78
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a374a31b9500ceda00477b03e9702d0a8"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a374a31b9500ceda00477b03e9702d0a8">SVF::SVFGOPT::addInterPHIForFP</a></div><div class="ttdeci">InterPHISVFGNode * addInterPHIForFP(const FormalParmSVFGNode *fp)</div><div class="ttdoc">Add inter PHI SVFG node for formal parameter. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00244">SVFGOPT.h:244</a></div></div>
|
|
80
79
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a1fd6d26203d7d574b5664b8fcae54c1a"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a1fd6d26203d7d574b5664b8fcae54c1a">SVF::SVFGOPT::replaceFParamARetWithPHI</a></div><div class="ttdeci">void replaceFParamARetWithPHI(PHISVFGNode *phi, SVFGNode *svfgNode)</div><div class="ttdoc">Replace FormalParam/ActualRet node with PHI node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00151">SVFGOPT.cpp:151</a></div></div>
|
|
81
80
|
<div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
|
|
82
81
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html_ab1a9031c1fc5102e072b5035151c131c"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html#ab1a9031c1fc5102e072b5035151c131c">SVF::FormalParmVFGNode::getParam</a></div><div class="ttdeci">const PAGNode * getParam() const</div><div class="ttdoc">Return parameter. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00912">VFGNode.h:912</a></div></div>
|
|
83
82
|
<div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00208">GenericGraph.h:208</a></div></div>
|
|
84
83
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a65bba62d9b62bf2bdbbda69540eeb38d"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a65bba62d9b62bf2bdbbda69540eeb38d">SVF::SVFGOPT::keepAllSelfCycle</a></div><div class="ttdeci">bool keepAllSelfCycle</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00356">SVFGOPT.h:356</a></div></div>
|
|
84
|
+
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a64c300c8a9f8cc2ac13eef65c1108d01"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a64c300c8a9f8cc2ac13eef65c1108d01">SVF::SVFGOPT::SVFGOPT</a></div><div class="ttdeci">SVFGOPT(std::unique_ptr< MemSSA > mssa, VFGK kind)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00064">SVFGOPT.h:64</a></div></div>
|
|
85
85
|
<div class="ttc" id="classSVF_1_1VFG_html_a27ac8d60de7be75e831b4a28f8f8f1d2"><div class="ttname"><a href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">SVF::VFG::addRetEdge</a></div><div class="ttdeci">VFGEdge * addRetEdge(NodeID srcId, NodeID dstId, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00721">VFG.cpp:721</a></div></div>
|
|
86
86
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a7e57ca56a587a5b59543b5bab7fe794d"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a7e57ca56a587a5b59543b5bab7fe794d">SVF::SVFGOPT::keepActualOutFormalIn</a></div><div class="ttdeci">bool keepActualOutFormalIn</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00355">SVFGOPT.h:355</a></div></div>
|
|
87
87
|
<div class="ttc" id="classSVF_1_1FormalOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalOUTSVFGNode.html">SVF::FormalOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00138">SVFGNode.h:138</a></div></div>
|
|
88
88
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a72c573ecbc12c44e6ce1d67527f888a8"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a72c573ecbc12c44e6ce1d67527f888a8">SVF::SVFGOPT::addIntoWorklist</a></div><div class="ttdeci">bool addIntoWorklist(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00211">SVFGOPT.h:211</a></div></div>
|
|
89
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a112f2ede1240c95f9fe810f2882fab80"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">SVF::SparseBitVector::test</a></div><div class="ttdeci">bool test(unsigned Idx) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
89
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a112f2ede1240c95f9fe810f2882fab80"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">SVF::SparseBitVector::test</a></div><div class="ttdeci">bool test(unsigned Idx) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00700">SparseBitVector.h:700</a></div></div>
|
|
90
90
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a79c435e456474b41e4402c2c9c269fc9"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a79c435e456474b41e4402c2c9c269fc9">SVF::SVFGOPT::actualOutOfIndCS</a></div><div class="ttdeci">bool actualOutOfIndCS(const ActualOUTSVFGNode *ao) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00296">SVFGOPT.h:296</a></div></div>
|
|
91
91
|
<div class="ttc" id="classSVF_1_1ActualOUTSVFGNode_html_a89cb274936513df411a75fb33a86702f"><div class="ttname"><a href="classSVF_1_1ActualOUTSVFGNode.html#a89cb274936513df411a75fb33a86702f">SVF::ActualOUTSVFGNode::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite() const</div><div class="ttdoc">Callsite. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00244">SVFGNode.h:244</a></div></div>
|
|
92
92
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a925f39665e13b18dfe66c2dded44c194"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a925f39665e13b18dfe66c2dded44c194">SVF::SVFGOPT::worklist</a></div><div class="ttdeci">WorkList worklist</div><div class="ttdoc">storing MSSAPHI nodes which may be removed. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00353">SVFGOPT.h:353</a></div></div>
|
|
93
93
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a0931220d7a38e03f206cbdc6465d32ad"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">SVF::GenericNode::hasOutgoingEdge</a></div><div class="ttdeci">bool hasOutgoingEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00200">GenericGraph.h:200</a></div></div>
|
|
94
94
|
<div class="ttc" id="classSVF_1_1PHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html">SVF::PHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00635">VFGNode.h:635</a></div></div>
|
|
95
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
95
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00149">SVFG.h:149</a></div></div>
|
|
96
96
|
<div class="ttc" id="classSVF_1_1VFGNode_html_ab98e74dfd4756e70e3e3c5b7d5e5ae27"><div class="ttname"><a href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">SVF::VFGNode::getFun</a></div><div class="ttdeci">virtual const SVFFunction * getFun() const</div><div class="ttdoc">Get the function of this SVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00084">VFGNode.h:84</a></div></div>
|
|
97
97
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a11dc712bf74ba61160fed7a5c3efaeee"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a11dc712bf74ba61160fed7a5c3efaeee">SVF::SVFGOPT::addCallIndirectSVFGEdge</a></div><div class="ttdeci">SVFGEdge * addCallIndirectSVFGEdge(NodeID srcId, NodeID dstId, CallSiteID csid, const NodeBS &cpts)</div><div class="ttdoc">Add inter-procedural value flow edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00068">SVFGOPT.cpp:68</a></div></div>
|
|
98
98
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_af0c1bb4055d3c4b7f5c6133c433144ad"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#af0c1bb4055d3c4b7f5c6133c433144ad">SVF::SVFGOPT::setTokeepActualOutFormalIn</a></div><div class="ttdeci">void setTokeepActualOutFormalIn()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00071">SVFGOPT.h:71</a></div></div>
|
|
@@ -102,7 +102,7 @@ $(function() {
|
|
|
102
102
|
<div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
|
|
103
103
|
<div class="ttc" id="classSVF_1_1ActualOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualOUTSVFGNode.html">SVF::ActualOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00229">SVFGNode.h:229</a></div></div>
|
|
104
104
|
<div class="ttc" id="classSVF_1_1ICFG_html_a881fe977f3a6fde223bd786121e35fcf"><div class="ttname"><a href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00249">ICFG.cpp:249</a></div></div>
|
|
105
|
-
<div class="ttc" id="
|
|
105
|
+
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
|
|
106
106
|
<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>
|
|
107
107
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_a731b978178937e74c80d2882c429dc9e"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a731b978178937e74c80d2882c429dc9e">SVF::SVFFunction::hasAddressTaken</a></div><div class="ttdeci">bool hasAddressTaken() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00334">SVFValue.h:334</a></div></div>
|
|
108
108
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00216">GenericGraph.h:216</a></div></div>
|
|
@@ -111,34 +111,35 @@ $(function() {
|
|
|
111
111
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00347">GenericGraph.h:347</a></div></div>
|
|
112
112
|
<div class="ttc" id="classSVF_1_1ActualINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualINSVFGNode.html">SVF::ActualINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00180">SVFGNode.h:180</a></div></div>
|
|
113
113
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a6eeec9fa475316f52689728a1af7bd05"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a6eeec9fa475316f52689728a1af7bd05">SVF::SVFGOPT::formalInOfAddressTakenFunc</a></div><div class="ttdeci">bool formalInOfAddressTakenFunc(const FormalINSVFGNode *fi) const</div><div class="ttdoc">Check if formal-in/formal-out reside in address-taken function. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00304">SVFGOPT.h:304</a></div></div>
|
|
114
|
-
<div class="ttc" id="classSVF_1_1SVFGOPT_html_af4d2c6d2e3b316b256f860801fe3b178"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#af4d2c6d2e3b316b256f860801fe3b178">SVF::SVFGOPT::buildSVFG</a></div><div class="ttdeci">virtual void buildSVFG()</div><div class="ttdoc">Start building SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00047">SVFGOPT.cpp:47</a></div></div>
|
|
115
114
|
<div class="ttc" id="classSVF_1_1VFG_html_ac89b3917ed73ac70aac6205af8f7a4fe"><div class="ttname"><a href="classSVF_1_1VFG.html#ac89b3917ed73ac70aac6205af8f7a4fe">SVF::VFG::PAGNodeToDefMap</a></div><div class="ttdeci">PAGNodeToDefMapTy PAGNodeToDefMap</div><div class="ttdoc">map a pag node to its definition SVG node </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00089">VFG.h:89</a></div></div>
|
|
116
115
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a0df409a67428e528321869d201f2a474"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(const Data &data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00165">WorkList.h:165</a></div></div>
|
|
117
116
|
<div class="ttc" id="classSVF_1_1PHIVFGNode_html_aa147f43ddf3efac3e0143235ab611cf2"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html#aa147f43ddf3efac3e0143235ab611cf2">SVF::PHIVFGNode::getOpVerNum</a></div><div class="ttdeci">u32_t getOpVerNum() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00670">VFGNode.h:670</a></div></div>
|
|
118
117
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html_a90fd0b8e44fba1a7eb76d15bce085d66"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const SVFInstruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00380">ICFGNode.h:380</a></div></div>
|
|
119
118
|
<div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
|
|
119
|
+
<div class="ttc" id="classSVF_1_1SVFGOPT_html_ae5648d1248af4e4ce755ee5d32f84a06"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#ae5648d1248af4e4ce755ee5d32f84a06">SVF::SVFGOPT::connectFRetAndARet</a></div><div class="ttdeci">void connectFRetAndARet(const PAGNode *fun_ret, const PAGNode *cs_ret, CallSiteID csId, SVFGEdgeSetTy &edges) override</div><div class="ttdoc">Connect formal-ret and actual ret. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00101">SVFGOPT.h:101</a></div></div>
|
|
120
120
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a21429d8c3fba209d9cdc22e3623c5573"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a21429d8c3fba209d9cdc22e3623c5573">SVF::SVFGOPT::handleIntraValueFlow</a></div><div class="ttdeci">void handleIntraValueFlow()</div><div class="ttdoc">Remove MSSAPHI SVFG nodes. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00391">SVFGOPT.cpp:391</a></div></div>
|
|
121
121
|
<div class="ttc" id="classSVF_1_1ActualINSVFGNode_html_aab3b2931f60adeb9fd8c87087074d834"><div class="ttname"><a href="classSVF_1_1ActualINSVFGNode.html#aab3b2931f60adeb9fd8c87087074d834">SVF::ActualINSVFGNode::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite() const</div><div class="ttdoc">Callsite. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00194">SVFGNode.h:194</a></div></div>
|
|
122
122
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_afb068fd46dfbf993decd7d6c8ca2c9ba"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#afb068fd46dfbf993decd7d6c8ca2c9ba">SVF::SVFGOPT::checkSelfCycleEdges</a></div><div class="ttdeci">bool checkSelfCycleEdges(const MSSAPHISVFGNode *node)</div><div class="ttdoc">Remove self cycle edges if needed. Return TRUE if some self cycle edges remained. ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00442">SVFGOPT.cpp:442</a></div></div>
|
|
123
123
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_ac68a53c567929ba8b69c00e3e8d9d30f"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#ac68a53c567929ba8b69c00e3e8d9d30f">SVF::SVFGOPT::keepContextSelfCycle</a></div><div class="ttdeci">bool keepContextSelfCycle</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00357">SVFGOPT.h:357</a></div></div>
|
|
124
124
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a581349a9fc0066945ca4ce9706a81646"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a581349a9fc0066945ca4ce9706a81646">SVF::SVFGOPT::NodeIDToNodeIDMap</a></div><div class="ttdeci">Map< NodeID, NodeID > NodeIDToNodeIDMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00059">SVFGOPT.h:59</a></div></div>
|
|
125
|
-
<div class="ttc" id="
|
|
125
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference< T >::type && move(T &&t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00657">SVFUtil.h:657</a></div></div>
|
|
126
|
+
<div class="ttc" id="classSVF_1_1SVFGOPT_html_ac9c5f279353ceea5a93dbdf002e3be0c"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#ac9c5f279353ceea5a93dbdf002e3be0c">SVF::SVFGOPT::~SVFGOPT</a></div><div class="ttdeci">~SVFGOPT() override=default</div><div class="ttdoc">Destructor. </div></div>
|
|
126
127
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00373">GenericGraph.h:373</a></div></div>
|
|
127
128
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a07874e1a77bcd5ff593757d202a4edd6"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a07874e1a77bcd5ff593757d202a4edd6">SVF::SVFGOPT::SVFGNodeSet</a></div><div class="ttdeci">Set< SVFGNode * > SVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00058">SVFGOPT.h:58</a></div></div>
|
|
128
129
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_ae825e01893d3304379f72380d314f09c"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#ae825e01893d3304379f72380d314f09c">SVF::SVFGOPT::initialWorkList</a></div><div class="ttdeci">void initialWorkList()</div><div class="ttdoc">Initial work list with MSSAPHI nodes which may be removed. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00202">SVFGOPT.h:202</a></div></div>
|
|
129
130
|
<div class="ttc" id="classSVF_1_1ActualRetVFGNode_html_a06ea783375c18198b00121214c357c18"><div class="ttname"><a href="classSVF_1_1ActualRetVFGNode.html#a06ea783375c18198b00121214c357c18">SVF::ActualRetVFGNode::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00983">VFGNode.h:983</a></div></div>
|
|
130
|
-
<div class="ttc" id="classSVF_1_1MemSSA_html"><div class="ttname"><a href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00052">MemSSA.h:52</a></div></div>
|
|
131
131
|
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00094">SVFType.h:94</a></div></div>
|
|
132
132
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a550f93b640a6fd68773fbafd2944d7df"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a550f93b640a6fd68773fbafd2944d7df">SVF::SVFGOPT::getActualINDef</a></div><div class="ttdeci">NodeID getActualINDef(NodeID ai) const</div><div class="ttdoc">Get def-site of actual-in/formal-out. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00149">SVFGOPT.h:149</a></div></div>
|
|
133
133
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a4f3890f637ffe03c2a1981e75e3d2e16"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a4f3890f637ffe03c2a1981e75e3d2e16">SVF::SVFGOPT::bypassMSSAPHINode</a></div><div class="ttdeci">void bypassMSSAPHINode(const MSSAPHISVFGNode *node)</div><div class="ttdoc">Remove MSSAPHI node if possible. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00480">SVFGOPT.cpp:480</a></div></div>
|
|
134
134
|
<div class="ttc" id="classSVF_1_1VFG_html_ac97ef8c479556f9ca2c40cd4d8a18694"><div class="ttname"><a href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVF::VFG::SVFGEdgeSetTy</a></div><div class="ttdeci">VFGEdge::SVFGEdgeSetTy SVFGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00078">VFG.h:78</a></div></div>
|
|
135
|
-
<div class="ttc" id="
|
|
135
|
+
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a788fded648d6d037dc7be4b7796a3e7a"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a788fded648d6d037dc7be4b7796a3e7a">SVF::SVFGOPT::buildSVFG</a></div><div class="ttdeci">void buildSVFG() override</div><div class="ttdoc">Start building SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00047">SVFGOPT.cpp:47</a></div></div>
|
|
136
136
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_ab72ce28409a440bbf5b84a68e5f82b85"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#ab72ce28409a440bbf5b84a68e5f82b85">SVF::SVFGOPT::canBeRemoved</a></div><div class="ttdeci">bool canBeRemoved(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00334">SVFGOPT.cpp:334</a></div></div>
|
|
137
|
-
<div class="ttc" id="
|
|
138
|
-
<div class="ttc" id="classSVF_1_1SVFIR_html_a5de67390d38bfacd5b63b776a0ecbfff"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">SVF::SVFIR::isPhiNode</a></div><div class="ttdeci">bool isPhiNode(const SVFVar *node) const</div><div class="ttdoc">Whether this SVFVar is a result operand a of phi node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00230">SVFIR.h:230</a></div></div>
|
|
137
|
+
<div class="ttc" id="classSVF_1_1SVFIR_html_a5de67390d38bfacd5b63b776a0ecbfff"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">SVF::SVFIR::isPhiNode</a></div><div class="ttdeci">bool isPhiNode(const SVFVar *node) const</div><div class="ttdoc">Whether this SVFVar is a result operand a of phi node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00228">SVFIR.h:228</a></div></div>
|
|
139
138
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a8d0b44ba9f3e6f9344a10d085d7be2b4"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a8d0b44ba9f3e6f9344a10d085d7be2b4">SVF::SVFGOPT::getFormalOUTDef</a></div><div class="ttdeci">NodeID getFormalOUTDef(NodeID fo) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00155">SVFGOPT.h:155</a></div></div>
|
|
140
139
|
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00058">SVFType.h:58</a></div></div>
|
|
140
|
+
<div class="ttc" id="classSVF_1_1SVFGOPT_html_ad88f85a4d5c397b3b6896608ba035bd3"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#ad88f85a4d5c397b3b6896608ba035bd3">SVF::SVFGOPT::connectFOutAndAOut</a></div><div class="ttdeci">void connectFOutAndAOut(const FormalOUTSVFGNode *formalOut, const ActualOUTSVFGNode *actualOut, CallSiteID csId, SVFGEdgeSetTy &edges) override</div><div class="ttdoc">Connect formal-out and actual-out. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00133">SVFGOPT.h:133</a></div></div>
|
|
141
141
|
<div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
|
|
142
|
+
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a624c36b40fd301d67a71952adf206e47"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a624c36b40fd301d67a71952adf206e47">SVF::SVFGOPT::connectAInAndFIn</a></div><div class="ttdeci">void connectAInAndFIn(const ActualINSVFGNode *actualIn, const FormalINSVFGNode *formalIn, CallSiteID csId, SVFGEdgeSetTy &edges) override</div><div class="ttdoc">Connect actual-in and formal-in. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00120">SVFGOPT.h:120</a></div></div>
|
|
142
143
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a86cb63258b49077587d44ba45d023f02"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a86cb63258b49077587d44ba45d023f02">SVF::SVFGOPT::formalOutOfAddressTakenFunc</a></div><div class="ttdeci">bool formalOutOfAddressTakenFunc(const FormalOUTSVFGNode *fo) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00308">SVFGOPT.h:308</a></div></div>
|
|
143
144
|
<div class="ttc" id="classSVF_1_1VFG_html_a3867c591a231bad0aa2e6ab7c095a42f"><div class="ttname"><a href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">SVF::VFG::kind</a></div><div class="ttdeci">VFGK kind</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00105">VFG.h:105</a></div></div>
|
|
144
145
|
<div class="ttc" id="classSVF_1_1MRSVFGNode_html_a28fe266d0e4618aa4448aa218495a332"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">SVF::MRSVFGNode::getPointsTo</a></div><div class="ttdeci">const NodeBS & getPointsTo() const</div><div class="ttdoc">Return points-to of the MR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00052">SVFGNode.h:52</a></div></div>
|
|
@@ -149,14 +150,15 @@ $(function() {
|
|
|
149
150
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_af6fa424cd7518b330a6017839a789bf6"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#af6fa424cd7518b330a6017839a789bf6">SVF::SVFGOPT::actualInOfIndCS</a></div><div class="ttdeci">bool actualInOfIndCS(const ActualINSVFGNode *ai) const</div><div class="ttdoc">Check if actual-in/actual-out exist at indirect call site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00292">SVFGOPT.h:292</a></div></div>
|
|
150
151
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a2285d20f7c4d128a8ede2e7f4f41f798"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a2285d20f7c4d128a8ede2e7f4f41f798">SVF::SVFGOPT::retargetEdgesOfAOutFIn</a></div><div class="ttdeci">void retargetEdgesOfAOutFIn(SVFGNode *node)</div><div class="ttdoc">Connect actual-out/formal-in&#39;s predecessors to their successors directly. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00250">SVFGOPT.cpp:250</a></div></div>
|
|
151
152
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_abe2392e0971f6c46537727f001fa44de"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#abe2392e0971f6c46537727f001fa44de">SVF::SVFGOPT::setTokeepContextSelfCycle</a></div><div class="ttdeci">void setTokeepContextSelfCycle()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00079">SVFGOPT.h:79</a></div></div>
|
|
152
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
153
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00349">SVFG.h:349</a></div></div>
|
|
153
154
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a490695ab536cd455c531fbdc57499cac"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a490695ab536cd455c531fbdc57499cac">SVF::SVFGOPT::setActualINDef</a></div><div class="ttdeci">void setActualINDef(NodeID ai, NodeID def)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00269">SVFGOPT.h:269</a></div></div>
|
|
154
155
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_aa23c967a8fcadbaf47e93a5b3610c84d"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#aa23c967a8fcadbaf47e93a5b3610c84d">SVF::SVFGOPT::isConnectingTwoCallSites</a></div><div class="ttdeci">bool isConnectingTwoCallSites(const SVFGNode *node) const</div><div class="ttdoc">Return TRUE if this node has both incoming call/ret and outgoing call/ret edges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00292">SVFGOPT.cpp:292</a></div></div>
|
|
155
156
|
<div class="ttc" id="classSVF_1_1ActualRetVFGNode_html_a4bcfddf05da46729c670b4f450f9d606"><div class="ttname"><a href="classSVF_1_1ActualRetVFGNode.html#a4bcfddf05da46729c670b4f450f9d606">SVF::ActualRetVFGNode::getRev</a></div><div class="ttdeci">const PAGNode * getRev() const</div><div class="ttdoc">Receive parameter at callsite. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00993">VFGNode.h:993</a></div></div>
|
|
156
157
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList< const MSSAPHISVFGNode * ></a></div></div>
|
|
157
158
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a3e2b811dd939c93bcf9fb94e91d553b1"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a3e2b811dd939c93bcf9fb94e91d553b1">SVF::SVFGOPT::setFormalOUTDef</a></div><div class="ttdeci">void setFormalOUTDef(NodeID fo, NodeID def)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00276">SVFGOPT.h:276</a></div></div>
|
|
158
159
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
159
|
-
<div class="ttc" id="
|
|
160
|
+
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a82c28afbba24b90ef0394c9dcd0aae57"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a82c28afbba24b90ef0394c9dcd0aae57">SVF::SVFGOPT::connectAParamAndFParam</a></div><div class="ttdeci">void connectAParamAndFParam(const PAGNode *cs_arg, const PAGNode *fun_arg, const CallICFGNode *, CallSiteID csId, SVFGEdgeSetTy &edges) override</div><div class="ttdoc">Connect SVFG nodes between caller and callee for indirect call sites. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00089">SVFGOPT.h:89</a></div></div>
|
|
161
|
+
<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>
|
|
160
162
|
<div class="ttc" id="classSVF_1_1SVFG_html"><div class="ttname"><a href="classSVF_1_1SVFG.html">SVF::SVFG</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00065">SVFG.h:65</a></div></div>
|
|
161
163
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_abbd6ac28826b9cc4c4981271393c8b19"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#abbd6ac28826b9cc4c4981271393c8b19">SVF::SVFGOPT::formalOutToDefMap</a></div><div class="ttdeci">NodeIDToNodeIDMap formalOutToDefMap</div><div class="ttdoc">map formal-out to its def-site node </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00350">SVFGOPT.h:350</a></div></div>
|
|
162
164
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_abd524dca72261bbcc7ebb1103b693a2b"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#abd524dca72261bbcc7ebb1103b693a2b">SVF::SVFGOPT::defNodes</a></div><div class="ttdeci">NodeBS defNodes</div><div class="ttdoc">preserved def nodes of formal-in/actual-out </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00351">SVFGOPT.h:351</a></div></div>
|
|
@@ -167,21 +169,21 @@ $(function() {
|
|
|
167
169
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html_af3039ab67875b177f7ba0bf246cec2f8"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html#af3039ab67875b177f7ba0bf246cec2f8">SVF::FormalParmVFGNode::getFun</a></div><div class="ttdeci">const SVFFunction * getFun() const override</div><div class="ttdoc">Return function. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00918">VFGNode.h:918</a></div></div>
|
|
168
170
|
<div class="ttc" id="classSVF_1_1ICFG_html_a0dca4655c2f6112a5be1f921b8e81076"><div class="ttname"><a href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">SVF::ICFG::getFunEntryICFGNode</a></div><div class="ttdeci">FunEntryICFGNode * getFunEntryICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function entry node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00269">ICFG.cpp:269</a></div></div>
|
|
169
171
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_afa99da68ef756d968d39a85f0fac3649"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#afa99da68ef756d968d39a85f0fac3649">SVF::SVFGOPT::addRetIndirectSVFGEdge</a></div><div class="ttdeci">SVFGEdge * addRetIndirectSVFGEdge(NodeID srcId, NodeID dstId, CallSiteID csid, const NodeBS &cpts)</div><div class="ttdoc">Add indirect ret edge from src to dst with one call site ID. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00079">SVFGOPT.cpp:79</a></div></div>
|
|
170
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
172
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00739">SparseBitVector.h:739</a></div></div>
|
|
171
173
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_abefe3efa0232106f1843351ff6dd1063"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#abefe3efa0232106f1843351ff6dd1063">SVF::SVFGOPT::retargetEdgesOfAInFOut</a></div><div class="ttdeci">void retargetEdgesOfAInFOut(SVFGNode *node)</div><div class="ttdoc">Retarget edges related to actual-in/-out and formal-in/-out. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00204">SVFGOPT.cpp:204</a></div></div>
|
|
172
174
|
<div class="ttc" id="WorkList_8h_html"><div class="ttname"><a href="WorkList_8h.html">WorkList.h</a></div></div>
|
|
173
175
|
<div class="ttc" id="classSVF_1_1PHIVFGNode_html_a36f469a129063b43161a8d1423414ce5"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html#a36f469a129063b43161a8d1423414ce5">SVF::PHIVFGNode::setOpVer</a></div><div class="ttdeci">void setOpVer(u32_t pos, const PAGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00662">VFGNode.h:662</a></div></div>
|
|
174
176
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html">SVF::FormalParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00898">VFGNode.h:898</a></div></div>
|
|
175
177
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a6d5cdb3b78e4ed482b0da4c64323b463"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a6d5cdb3b78e4ed482b0da4c64323b463">SVF::SVFGOPT::bothInterEdges</a></div><div class="ttdeci">bool bothInterEdges(const SVFGEdge *edge1, const SVFGEdge *edge2) const</div><div class="ttdoc">Return TRUE if both edges are indirect call/ret edges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00231">SVFGOPT.h:231</a></div></div>
|
|
176
178
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_af504407e6cd42cfe2ea27165ff15df40"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#af504407e6cd42cfe2ea27165ff15df40">SVF::SVFGOPT::resetDef</a></div><div class="ttdeci">void resetDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00260">SVFGOPT.h:260</a></div></div>
|
|
177
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
178
|
-
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
179
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00390">SVFG.h:390</a></div></div>
|
|
180
|
+
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00163">SVFIR.h:163</a></div></div>
|
|
179
181
|
<div class="ttc" id="classSVF_1_1VFG_html_ac2e2f555975063da3fa1932ac35802c6"><div class="ttname"><a href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">SVF::VFG::VFGK</a></div><div class="ttdeci">VFGK</div><div class="ttdoc">VFG kind. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00055">VFG.h:55</a></div></div>
|
|
180
182
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a4c698184cc23730fb44904d4048958da"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a4c698184cc23730fb44904d4048958da">SVF::SVFGOPT::handleInterValueFlow</a></div><div class="ttdeci">void handleInterValueFlow()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00090">SVFGOPT.cpp:90</a></div></div>
|
|
181
183
|
<div class="ttc" id="classSVF_1_1FormalINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalINSVFGNode.html">SVF::FormalINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00093">SVFGNode.h:93</a></div></div>
|
|
182
184
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_ac3b14bf191cadb832e3a34affd7e569d"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#ac3b14bf191cadb832e3a34affd7e569d">SVF::SVFGOPT::parseSelfCycleHandleOption</a></div><div class="ttdeci">void parseSelfCycleHandleOption()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00372">SVFGOPT.cpp:372</a></div></div>
|
|
183
185
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html">SVF::SVFGOPT</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00056">SVFGOPT.h:56</a></div></div>
|
|
184
|
-
<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#
|
|
186
|
+
<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>
|
|
185
187
|
<div class="ttc" id="classSVF_1_1SVFGOPT_html_a9741514d915bf7f14787cc346b9d7c98"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a9741514d915bf7f14787cc346b9d7c98">SVF::SVFGOPT::actualInToDefMap</a></div><div class="ttdeci">NodeIDToNodeIDMap actualInToDefMap</div><div class="ttdoc">map actual-in to its def-site node </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8h_source.html#l00349">SVFGOPT.h:349</a></div></div>
|
|
186
188
|
<div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|
|
187
189
|
<div class="ttc" id="classSVF_1_1InterPHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1InterPHIVFGNode.html">SVF::InterPHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01091">VFGNode.h:1091</a></div></div>
|