svf-tools 1.0.587 → 1.0.589
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +6 -6
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +25 -25
- package/SVF-doxygen/html/html/Andersen_8h_source.html +17 -17
- package/SVF-doxygen/html/html/Annotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/BasicTypes_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +2 -2
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +11 -11
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +7 -7
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +6 -6
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +27 -27
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/html/CHG_8cpp.html +3 -3
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/CHG_8h_source.html +8 -8
- package/SVF-doxygen/html/html/CPPUtil_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +26 -26
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/CSC_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/Casting_8h.html +1 -0
- package/SVF-doxygen/html/html/Casting_8h_source.html +42 -42
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +8 -8
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +21 -21
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +38 -38
- package/SVF-doxygen/html/html/ConsG_8h_source.html +28 -28
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +25 -23
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +11 -11
- package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +5 -5
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +36 -36
- package/SVF-doxygen/html/html/DCHG_8h_source.html +15 -15
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +4 -4
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +4 -4
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +16 -16
- package/SVF-doxygen/html/html/DPItem_8h_source.html +5 -5
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +11 -11
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ExeState_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ExtAPI_8cpp.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +13 -13
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +8 -8
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +61 -61
- package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +37 -34
- package/SVF-doxygen/html/html/ICFG_8h_source.html +30 -30
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +28 -28
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +10 -10
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +28 -28
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +7 -7
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +26 -26
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +18 -18
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +7 -7
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +11 -11
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MHP_8cpp.html +3 -3
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +35 -36
- package/SVF-doxygen/html/html/MHP_8h_source.html +15 -15
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +8 -8
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +28 -28
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +11 -11
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/MTA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +41 -41
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +14 -14
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +8 -8
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +7 -7
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/PCG_8h_source.html +7 -7
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +9 -9
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +34 -34
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +31 -31
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +63 -63
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +83 -84
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/PointsTo_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +10 -10
- package/SVF-doxygen/html/html/SCC_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +5 -1
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +85 -85
- package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +23 -27
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +73 -74
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +14 -14
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +25 -25
- package/SVF-doxygen/html/html/SVFG_8h_source.html +12 -12
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +58 -58
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +75 -75
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +34 -34
- package/SVF-doxygen/html/html/SVFLoop_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +13 -13
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +10 -10
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +23 -23
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +8 -8
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +34 -34
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +47 -47
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +59 -59
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +4 -4
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SymState_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +40 -40
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +13 -13
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +22 -23
- package/SVF-doxygen/html/html/TCT_8h_source.html +21 -21
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +8 -8
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +6 -6
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +6 -6
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -14
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +97 -97
- package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +8 -8
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +72 -69
- package/SVF-doxygen/html/html/VFG_8h_source.html +57 -57
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +24 -24
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +7 -7
- package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +5 -5
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +6 -6
- package/SVF-doxygen/html/html/WPASolver_8h_source.html +3 -3
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WorkList_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +249 -250
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +64 -66
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +216 -217
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +15 -17
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +259 -260
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +16 -18
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +271 -272
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +12 -14
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +257 -258
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +6 -8
- package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +164 -165
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +67 -69
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +191 -192
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +20 -22
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +185 -186
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +9 -11
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +189 -190
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +2 -4
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +57 -57
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +153 -154
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +19 -21
- package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +80 -80
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +120 -120
- package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +255 -256
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +52 -52
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +88 -88
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +283 -284
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +3 -5
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +249 -250
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +28 -30
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +274 -275
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +88 -90
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +41 -42
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +71 -67
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +60 -60
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +67 -67
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +70 -71
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +108 -108
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +40 -40
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +52 -52
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +120 -121
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +258 -276
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +97 -97
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +52 -52
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +79 -79
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +255 -255
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +132 -132
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +103 -103
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +45 -45
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +228 -229
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +5 -7
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +71 -71
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +59 -60
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +221 -222
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +24 -26
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +168 -165
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +324 -325
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +70 -72
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +1 -1
- package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
- package/SVF-doxygen/html/html/functions_a.html +9 -12
- package/SVF-doxygen/html/html/functions_func.html +4 -4
- package/SVF-doxygen/html/html/functions_func_i.html +3 -3
- package/SVF-doxygen/html/html/functions_func_r.html +8 -8
- package/SVF-doxygen/html/html/functions_func_s.html +1 -1
- package/SVF-doxygen/html/html/functions_i.html +2 -2
- package/SVF-doxygen/html/html/functions_l.html +8 -8
- package/SVF-doxygen/html/html/functions_n.html +4 -4
- package/SVF-doxygen/html/html/functions_o.html +8 -8
- package/SVF-doxygen/html/html/functions_p.html +14 -16
- package/SVF-doxygen/html/html/functions_r.html +10 -12
- package/SVF-doxygen/html/html/functions_s.html +7 -7
- package/SVF-doxygen/html/html/functions_type.html +0 -3
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_w.html +11 -11
- package/SVF-doxygen/html/html/namespaceSVF.html +175 -193
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +55 -55
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +44 -44
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +46 -46
- package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type_s.html +0 -3
- package/SVF-doxygen/html/html/search/all_1.js +4 -5
- package/SVF-doxygen/html/html/search/all_10.js +6 -6
- package/SVF-doxygen/html/html/search/all_11.js +10 -10
- package/SVF-doxygen/html/html/search/all_12.js +5 -6
- package/SVF-doxygen/html/html/search/all_13.js +4 -4
- package/SVF-doxygen/html/html/search/all_15.js +3 -3
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_9.js +2 -2
- package/SVF-doxygen/html/html/search/all_c.js +5 -5
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +4 -4
- package/SVF-doxygen/html/html/search/functions_10.js +8 -8
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_8.js +1 -1
- package/SVF-doxygen/html/html/search/functions_f.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_0.js +0 -1
- package/SVF-doxygen/html/html/search/typedefs_10.js +0 -1
- package/SVF-doxygen/html/html/search/variables_13.js +2 -2
- package/SVF-doxygen/html/html/search/variables_9.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +4 -4
- package/SVF-doxygen/html/html/structSVF_1_1Hash.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +5 -5
- package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter_3_01T_00_018_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val.html +5 -5
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html +4 -4
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__simple__type.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__wrap.html +5 -5
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1simplify__type.html +4 -4
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html +6 -6
- package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +15 -15
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +17 -17
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +17 -17
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +4 -4
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +21 -21
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html +14 -14
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +20 -20
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +16 -16
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +6 -6
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SymState_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +8 -8
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +9 -9
- package/include/Graphs/ConsGNode.h +48 -24
- package/include/Graphs/GenericGraph.h +4 -2
- package/include/Graphs/ICFG.h +3 -2
- package/include/Graphs/SVFGOPT.h +7 -7
- package/include/Graphs/VFG.h +3 -2
- package/include/MSSA/MemSSA.h +6 -6
- package/include/MemoryModel/PersistentPointsToDS.h +1 -1
- package/include/MemoryModel/PointerAnalysis.h +0 -1
- package/include/MemoryModel/SVFIR.h +3 -1
- package/include/SABER/SaberCondAllocator.h +7 -2
- package/include/SVF-FE/BasicTypes.h +7 -1
- package/include/SVF-FE/IRAnnotator.h +3 -1
- package/include/Util/BasicTypes.h +1 -22
- package/include/Util/Casting.h +1 -0
- package/include/Util/SVFBasicTypes.h +0 -5
- package/include/Util/SparseBitVector.h +2 -0
- package/lib/DDA/ContextDDA.cpp +8 -5
- package/lib/Graphs/ConsG.cpp +46 -23
- package/lib/Graphs/ICFG.cpp +8 -4
- package/lib/Graphs/VFG.cpp +6 -3
- package/lib/MSSA/MemRegion.cpp +1 -0
- package/lib/MTA/MHP.cpp +4 -4
- package/lib/MTA/TCT.cpp +2 -1
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +3 -1
- package/lib/SABER/SaberCondAllocator.cpp +3 -1
- package/lib/SVF-FE/CHGBuilder.cpp +2 -2
- package/lib/SVF-FE/SVFIRBuilder.cpp +4 -1
- package/lib/WPA/AndersenSFR.cpp +3 -0
- package/lib/WPA/TypeAnalysis.cpp +1 -0
- package/package.json +1 -1
|
@@ -66,7 +66,7 @@ $(function() {
|
|
|
66
66
|
<div class="title">MemSSA.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="MemSSA_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">//===- MemSSA.h -- Memory SSA-------------------------------------------------//</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-> <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"> * MemorySSAPass.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Jul 14, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * The implementation is based on</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> * Yulei Sui, Hua Yan, Yunpeng Zhang, Jingling Xue and Zheng Zheng.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * "Parallel Construction of Interprocedural Memory SSA Form".</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> * Journal of Systems and Software (JSS'16), Algorithm 3 in the paper</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 MEMORYSSAPASS_H_</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define MEMORYSSAPASS_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> <span class="preprocessor">#include "<a class="code" href="MemRegion_8h.html">MSSA/MemRegion.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="MSSAMuChi_8h.html">MSSA/MSSAMuChi.h</a>"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">class </span>PointerAnalysis;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">class </span>MemSSAStat;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">/*</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment"> * Memory SSA implementation on top of partial SSA</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment"> */</span></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html"> 52</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MemSSA.html">MemSSA</a></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0c8f70b6283e26e70dafe02fcb5180a"> 58</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5">MemRegion::Condition</a> <a class="code" href="classSVF_1_1MemSSA.html#ac0c8f70b6283e26e70dafe02fcb5180a">Condition</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b"> 59</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAMU.html">MSSAMU<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b">MU</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a"> 60</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1RetMU.html">RetMU<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1"> 61</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1LoadMU.html">LoadMU<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25"> 62</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallMU.html">CallMU<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e"> 63</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSACHI.html">MSSACHI<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e">CHI</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5"> 64</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1EntryCHI.html">EntryCHI<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4"> 65</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1StoreCHI.html">StoreCHI<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9"> 66</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallCHI.html">CallCHI<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1"> 67</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAPHI.html">MSSAPHI<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">PHI</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c"> 68</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a> <a class="code" href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c">MDEF</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112"> 70</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<MU*></a> <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4"> 71</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<CHI*></a> <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f"> 72</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<PHI*></a> <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1"> 75</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRGenerator::MRSet</a> <a class="code" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1">MRSet</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e"> 76</a></span>  <span class="keyword">typedef</span> std::vector<const MemRegion*> <a class="code" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">MRVector</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35"> 80</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const LoadStmt*, MUSet></a> <a class="code" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35">LoadToMUSetMap</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9"> 81</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const StoreStmt*, CHISet></a> <a class="code" href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9">StoreToChiSetMap</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a5d4ba728fb55e615cacfc5278e6bc4b7"> 82</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const CallICFGNode*, MUSet></a> <a class="code" href="classSVF_1_1MemSSA.html#a5d4ba728fb55e615cacfc5278e6bc4b7">CallSiteToMUSetMap</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab"> 83</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const CallICFGNode*, CHISet></a> <a class="code" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab">CallSiteToCHISetMap</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a"> 84</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<const BasicBlock*, PHISet></a> <a class="code" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">BBToPhiSetMap</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"><a class="line" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca"> 88</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, CHISet></a> <a class="code" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca">FunToEntryChiSetMap</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92"> 89</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, MUSet></a> <a class="code" href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92">FunToReturnMuSetMap</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa"> 93</a></span>  <span class="keyword">typedef</span> std::vector<const BasicBlock*> <a class="code" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">BBList</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14"> 94</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const BasicBlock*, MRSet></a> <a class="code" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14">BBToMRSetMap</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8d0c1a00d7db194da66c685d79e73de5"> 95</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const MemRegion*, BBList></a> <a class="code" href="classSVF_1_1MemSSA.html#a8d0c1a00d7db194da66c685d79e73de5">MemRegToBBsMap</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aa9dbaf51f0498f3bd878827744208899"> 99</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const MemRegion*, std::vector<MRVer*></a> > <a class="code" href="classSVF_1_1MemSSA.html#aa9dbaf51f0498f3bd878827744208899">MemRegToVerStackMap</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0"> 100</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const MemRegion*, MRVERSION></a> <a class="code" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0">MemRegToCounterMap</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e"> 103</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a> <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5"> 107</a></span>  <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5">timeOfGeneratingMemRegions</a>; </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198"> 108</a></span>  <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198">timeOfCreateMUCHI</a>; </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44"> 109</a></span>  <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44">timeOfInsertingPHI</a>; </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd"> 110</a></span>  <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd">timeOfSSARenaming</a>; </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671"> 113</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671">MemPartition</a></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a9da5f4ad2a43befdbc4be319bffc80ea"> 115</a></span>  <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a9da5f4ad2a43befdbc4be319bffc80ea">Distinct</a>,</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671ac9388cc44f91bd9a00666c0d69b32ef1"> 116</a></span>  <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671ac9388cc44f91bd9a00666c0d69b32ef1">IntraDisjoint</a>,</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03"> 117</a></span>  <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03">InterDisjoint</a></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  };</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3"> 121</a></span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5"> 122</a></span>  <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>* <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04"> 123</a></span>  <a class="code" href="classSVF_1_1MemSSAStat.html">MemSSAStat</a>* <a class="code" href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04">stat</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a695adf83e8c40b9628b1866053f68033">createMUCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>& fun);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#acc6f72d96cf29e36093ba08ea86b8983">insertPHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>& fun);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a16114eb55775f6ee812c1648dcaede0c">SSARename</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>& fun);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SSARenameBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6"> 134</a></span>  LoadToMUSetMap <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a"> 135</a></span>  StoreToChiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a"> 136</a></span>  CallSiteToMUSetMap <a class="code" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">callsiteToMuSetMap</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195"> 137</a></span>  CallSiteToCHISetMap <a class="code" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23"> 138</a></span>  BBToPhiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec"> 140</a></span>  FunToEntryChiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c"> 141</a></span>  FunToReturnMuSetMap <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d"> 143</a></span>  MemRegToVerStackMap <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634"> 144</a></span>  MemRegToCounterMap <a class="code" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634">mr2CounterMap</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// (see algorithm in book Engineering A Compiler section 9.3)</span></div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa"> 150</a></span> <span class="comment"></span> MRSet <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#add1d4ff17d0860906d2f5f7172176121"> 152</a></span>  MemRegToBBsMap <a class="code" href="classSVF_1_1MemSSA.html#add1d4ff17d0860906d2f5f7172176121">reg2BBMap</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43"> 154</a></span>  MRSet <a class="code" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43">varKills</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">destroy</a>();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr, <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a>* def);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79"> 164</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  std::vector<MRVer*> &stack = mr2VerStackMap[mr];</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  assert(!stack.empty() && <span class="stringliteral">"stack is empty!!"</span>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">return</span> stack.back();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390"> 173</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (0 == varKills.count(mr))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  usedRegs.insert(mr);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a"> 178</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  varKills.insert(mr);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  reg2BBMap[mr].push_back(bb);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42"> 187</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load, <span class="keyword">const</span> MRSet& mrSet)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(bb,load,*iter);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5"> 192</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store, <span class="keyword">const</span> MRSet& mrSet)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(bb,store,*iter);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24"> 197</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> MRSet& mrSet)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a>(cs,*iter);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d"> 202</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">AddCallSiteCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> MRSet& mrSet)</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> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">AddCallSiteCHI</a>(cs,*iter);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e"> 207</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> MRSet& mrSet)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <a class="code" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a>(bb,*iter);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f"> 212</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f">AddLoadMU</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  LOADMU* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>(bb,load, mr);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  load2MuSetMap[load].insert(mu);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf"> 218</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf">AddStoreCHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</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>  STORECHI* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>(bb,store, mr);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  store2ChiSetMap[store].insert(chi);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(bb,mr);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e"> 225</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e">AddCallSiteMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  CALLMU* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a>(cs, mr);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  callsiteToMuSetMap[cs].insert(mu);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af7991c1393ef3c8b090833bc27036a49"> 231</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#af7991c1393ef3c8b090833bc27036a49">AddCallSiteCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  CALLCHI* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a>(cs, mr);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  callsiteToChiSetMap[cs].insert(chi);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(chi-><a class="code" href="classSVF_1_1CallCHI.html#a69f83ff81ea017d645aadeb46334880f">getBasicBlock</a>(),mr);</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_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2"> 238</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2">AddMSSAPHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</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>  bb2PhiSetMap[bb].insert(<span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">PHI</a>(bb, mr));</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </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>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<span class="keyword">const</span> MUSet& muSet)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">for</span> (MUSet::const_iterator mit = muSet.begin(), emit = muSet.end();</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  mit != emit; ++mit)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  MU* mu = (*mit);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  mu-><a class="code" href="classSVF_1_1MSSAMU.html#a2af1e639aabbc5997aa4e6526f6595fb">setVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(mu-><a class="code" href="classSVF_1_1MSSAMU.html#a6bd671839ec0376439ccd81d5b2eff30">getMR</a>()));</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8"> 258</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<span class="keyword">const</span> CHISet& chiSet, MRVector& memRegs)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">for</span> (CHISet::const_iterator cit = chiSet.begin(), ecit = chiSet.end();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  cit != ecit; ++cit)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  CHI* chi = (*cit);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  chi-><a class="code" href="classSVF_1_1MSSACHI.html#a245d8ee9e81ba4fe6f41533baf471331">setOpVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(chi-><a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>()));</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  chi-><a class="code" href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">setResVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(chi-><a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>(),chi));</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  memRegs.push_back(chi-><a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3"> 271</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">RenamePhiRes</a>(<span class="keyword">const</span> PHISet& phiSet, MRVector& memRegs)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">for</span> (PHISet::const_iterator iter = phiSet.begin(), eiter = phiSet.end();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  iter != eiter; ++iter)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  PHI* phi = *iter;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  phi-><a class="code" href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">setResVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(phi-><a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>(),phi));</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  memRegs.push_back(phi-><a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>());</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b"> 283</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b">RenamePhiOps</a>(<span class="keyword">const</span> PHISet& phiSet, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos, MRVector&)</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">for</span> (PHISet::const_iterator iter = phiSet.begin(), eiter = phiSet.end();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  iter != eiter; ++iter)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  PHI* phi = *iter;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  phi-><a class="code" href="classSVF_1_1MSSAPHI.html#a74f663dc5ecc659e98542a53414b7988">setOpVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(phi-><a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>()), pos);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classSVF_1_1MemSSA.html#a6bd57451370f5f4c92ce212be4cddd15">MemSSA</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>, <span class="keywordtype">bool</span> ptrOnlyMSSA);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc"> 299</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc">~MemSSA</a>()</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <a class="code" href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">destroy</a>();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1MemSSA.html#a41b153f2f8f3a27be63750e73a290569">getPAG</a>();</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac"> 306</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09"> 311</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>* <a class="code" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">getMRGenerator</a>()</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a4f3c4374ba4b06a819721a8e05efe221">buildMemSSA</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>& fun);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a89c40c8fad70f3aead6531261e5a3cc3">performStat</a>();</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc"> 323</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load = SVFUtil::dyn_cast<LoadStmt>(inst))</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  assert(0 != load2MuSetMap.count(load)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  && <span class="stringliteral">"not associated with mem region!"</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1"> 334</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::dyn_cast<StoreStmt>(</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  inst))</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  assert(0 != store2ChiSetMap.count(store)</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  && <span class="stringliteral">"not associated with mem region!"</span>);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</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">else</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6bd9390c6cd2a3d7a3752fba76acfb46"> 346</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a6bd9390c6cd2a3d7a3752fba76acfb46">hasMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">return</span> callsiteToMuSetMap.find(cs)!=callsiteToMuSetMap.end();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae16120dfc9436861f719e605617f353d"> 350</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#ae16120dfc9436861f719e605617f353d">hasCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> callsiteToChiSetMap.find(cs)!=callsiteToChiSetMap.end();</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c"> 358</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c">hasFuncEntryChi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)<span class="keyword"> const</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">return</span> (funToEntryChiSetMap.find(fun) != funToEntryChiSetMap.end());</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f"> 362</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">hasReturnMu</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)<span class="keyword"> const</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">return</span> (funToReturnMuSetMap.find(fun) != funToReturnMuSetMap.end());</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800"> 367</a></span>  <span class="keyword">inline</span> CHISet& <a class="code" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">getFuncEntryChiSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">return</span> funToEntryChiSetMap[fun];</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93"> 371</a></span>  <span class="keyword">inline</span> MUSet& <a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">return</span> funToReturnMuSetMap[fun];</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847"> 379</a></span>  <span class="keyword">inline</span> MUSet& <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* ld)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">return</span> load2MuSetMap[ld];</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  }</div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418"> 383</a></span>  <span class="keyword">inline</span> CHISet& <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* st)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">return</span> store2ChiSetMap[st];</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af1a7b3ca0144ebff3747715e89646fbb"> 387</a></span>  <span class="keyword">inline</span> MUSet& <a class="code" href="classSVF_1_1MemSSA.html#af1a7b3ca0144ebff3747715e89646fbb">getMUSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span> callsiteToMuSetMap[cs];</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a959e932912b924ec91e1526947493204"> 391</a></span>  <span class="keyword">inline</span> CHISet& <a class="code" href="classSVF_1_1MemSSA.html#a959e932912b924ec91e1526947493204">getCHISet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> callsiteToChiSetMap[cs];</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div><div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274"> 395</a></span>  <span class="keyword">inline</span> PHISet& <a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">return</span> bb2PhiSetMap[bb];</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  }</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298"> 399</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)<span class="keyword"> const</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">return</span> bb2PhiSetMap.find(bb)!=bb2PhiSetMap.end();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div><div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c"> 403</a></span>  <span class="keyword">inline</span> LoadToMUSetMap& <a class="code" href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c">getLoadToMUSetMap</a>()</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0"> 407</a></span>  <span class="keyword">inline</span> StoreToChiSetMap& <a class="code" href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0">getStoreToChiSetMap</a>()</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  }</div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a"> 411</a></span>  <span class="keyword">inline</span> FunToReturnMuSetMap& <a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>()</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198"> 415</a></span>  <span class="keyword">inline</span> FunToEntryChiSetMap& <a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>()</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43"> 419</a></span>  <span class="keyword">inline</span> CallSiteToMUSetMap& <a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>()</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">callsiteToMuSetMap</a>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  }</div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d"> 423</a></span>  <span class="keyword">inline</span> CallSiteToCHISetMap& <a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>()</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d"> 427</a></span>  <span class="keyword">inline</span> BBToPhiSetMap& <a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>()</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a>;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#aafc83f7f22ebf3b3683607440c488bef">getLoadMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#aa8c45b455e6fc60cab955534c3e50bfa">getStoreChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a15272a4ed019d1c323d1826c1bedb70f">getFunEntryChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a67175188232e08f5c5374f92ff61810f">getFunRetMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a9e8c5b85957485635d0f72c2f48bb8b5">getCallSiteMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a2c65795ca63a53c833f5ac17a752b6dc">getCallSiteChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a9bb6512999cbf9c7c03153be77c8af20">getBBPhiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a749df6d6b28dd1bae569989bffeb7746">dumpMSSA</a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> & Out = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>());</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> };</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="preprocessor">#endif </span><span class="comment">/* MEMORYSSAPASS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
|
|
69
|
+
<a href="MemSSA_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">//===- MemSSA.h -- Memory SSA-------------------------------------------------//</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-> <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"> * MemorySSAPass.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Jul 14, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * The implementation is based on</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> * Yulei Sui, Hua Yan, Yunpeng Zhang, Jingling Xue and Zheng Zheng.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * "Parallel Construction of Interprocedural Memory SSA Form".</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> * Journal of Systems and Software (JSS'16), Algorithm 3 in the paper</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 MEMORYSSAPASS_H_</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define MEMORYSSAPASS_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> <span class="preprocessor">#include "<a class="code" href="MemRegion_8h.html">MSSA/MemRegion.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="MSSAMuChi_8h.html">MSSA/MSSAMuChi.h</a>"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">class </span>PointerAnalysis;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">class </span>MemSSAStat;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">/*</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment"> * Memory SSA implementation on top of partial SSA</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment"> */</span></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html"> 52</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MemSSA.html">MemSSA</a></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0c8f70b6283e26e70dafe02fcb5180a"> 58</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5">MemRegion::Condition</a> <a class="code" href="classSVF_1_1MemSSA.html#ac0c8f70b6283e26e70dafe02fcb5180a">Condition</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b"> 59</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAMU.html">MSSAMU<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b">MU</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a"> 60</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1RetMU.html">RetMU<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1"> 61</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1LoadMU.html">LoadMU<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25"> 62</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallMU.html">CallMU<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e"> 63</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSACHI.html">MSSACHI<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e">CHI</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5"> 64</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1EntryCHI.html">EntryCHI<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4"> 65</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1StoreCHI.html">StoreCHI<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9"> 66</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallCHI.html">CallCHI<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1"> 67</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAPHI.html">MSSAPHI<Condition></a> <a class="code" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">PHI</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c"> 68</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a> <a class="code" href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c">MDEF</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112"> 70</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<MU*></a> <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4"> 71</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<CHI*></a> <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f"> 72</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<PHI*></a> <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1"> 75</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRGenerator::MRSet</a> <a class="code" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1">MRSet</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e"> 76</a></span>  <span class="keyword">typedef</span> std::vector<const MemRegion*> <a class="code" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">MRVector</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35"> 80</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const LoadStmt*, MUSet></a> <a class="code" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35">LoadToMUSetMap</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9"> 81</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const StoreStmt*, CHISet></a> <a class="code" href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9">StoreToChiSetMap</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a5d4ba728fb55e615cacfc5278e6bc4b7"> 82</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const CallICFGNode*, MUSet></a> <a class="code" href="classSVF_1_1MemSSA.html#a5d4ba728fb55e615cacfc5278e6bc4b7">CallSiteToMUSetMap</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab"> 83</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const CallICFGNode*, CHISet></a> <a class="code" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab">CallSiteToCHISetMap</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a"> 84</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<const BasicBlock*, PHISet></a> <a class="code" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">BBToPhiSetMap</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"><a class="line" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca"> 88</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, CHISet></a> <a class="code" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca">FunToEntryChiSetMap</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92"> 89</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, MUSet></a> <a class="code" href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92">FunToReturnMuSetMap</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa"> 93</a></span>  <span class="keyword">typedef</span> std::vector<const BasicBlock*> <a class="code" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">BBList</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14"> 94</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const BasicBlock*, MRSet></a> <a class="code" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14">BBToMRSetMap</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8d0c1a00d7db194da66c685d79e73de5"> 95</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const MemRegion*, BBList></a> <a class="code" href="classSVF_1_1MemSSA.html#a8d0c1a00d7db194da66c685d79e73de5">MemRegToBBsMap</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aa9dbaf51f0498f3bd878827744208899"> 99</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const MemRegion*, std::vector<MRVer*></a> > <a class="code" href="classSVF_1_1MemSSA.html#aa9dbaf51f0498f3bd878827744208899">MemRegToVerStackMap</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0"> 100</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const MemRegion*, MRVERSION></a> <a class="code" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0">MemRegToCounterMap</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e"> 103</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a> <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5"> 107</a></span>  <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5">timeOfGeneratingMemRegions</a>; </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198"> 108</a></span>  <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198">timeOfCreateMUCHI</a>; </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44"> 109</a></span>  <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44">timeOfInsertingPHI</a>; </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd"> 110</a></span>  <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd">timeOfSSARenaming</a>; </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671"> 113</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671">MemPartition</a></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a9da5f4ad2a43befdbc4be319bffc80ea"> 115</a></span>  <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a9da5f4ad2a43befdbc4be319bffc80ea">Distinct</a>,</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671ac9388cc44f91bd9a00666c0d69b32ef1"> 116</a></span>  <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671ac9388cc44f91bd9a00666c0d69b32ef1">IntraDisjoint</a>,</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03"> 117</a></span>  <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03">InterDisjoint</a></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  };</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3"> 121</a></span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5"> 122</a></span>  <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>* <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04"> 123</a></span>  <a class="code" href="classSVF_1_1MemSSAStat.html">MemSSAStat</a>* <a class="code" href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04">stat</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a695adf83e8c40b9628b1866053f68033">createMUCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>& fun);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#acc6f72d96cf29e36093ba08ea86b8983">insertPHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>& fun);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a16114eb55775f6ee812c1648dcaede0c">SSARename</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>& fun);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SSARenameBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6"> 134</a></span>  LoadToMUSetMap <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a"> 135</a></span>  StoreToChiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a"> 136</a></span>  CallSiteToMUSetMap <a class="code" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">callsiteToMuSetMap</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195"> 137</a></span>  CallSiteToCHISetMap <a class="code" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23"> 138</a></span>  BBToPhiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec"> 140</a></span>  FunToEntryChiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c"> 141</a></span>  FunToReturnMuSetMap <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d"> 143</a></span>  MemRegToVerStackMap <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634"> 144</a></span>  MemRegToCounterMap <a class="code" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634">mr2CounterMap</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// (see algorithm in book Engineering A Compiler section 9.3)</span></div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa"> 150</a></span> <span class="comment"></span> MRSet <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#add1d4ff17d0860906d2f5f7172176121"> 152</a></span>  MemRegToBBsMap <a class="code" href="classSVF_1_1MemSSA.html#add1d4ff17d0860906d2f5f7172176121">reg2BBMap</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43"> 154</a></span>  MRSet <a class="code" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43">varKills</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">destroy</a>();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr, <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a>* def);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79"> 164</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  std::vector<MRVer*> &stack = mr2VerStackMap[mr];</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  assert(!stack.empty() && <span class="stringliteral">"stack is empty!!"</span>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">return</span> stack.back();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390"> 173</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (0 == varKills.count(mr))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  usedRegs.insert(mr);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a"> 178</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  varKills.insert(mr);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  reg2BBMap[mr].push_back(bb);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42"> 187</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load, <span class="keyword">const</span> MRSet& mrSet)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(bb,load,*iter);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5"> 192</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store, <span class="keyword">const</span> MRSet& mrSet)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(bb,store,*iter);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24"> 197</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> MRSet& mrSet)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a>(cs,*iter);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d"> 202</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">AddCallSiteCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> MRSet& mrSet)</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> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">AddCallSiteCHI</a>(cs,*iter);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e"> 207</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> MRSet& mrSet)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <a class="code" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a>(bb,*iter);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f"> 212</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f">AddLoadMU</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  LOADMU* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>(bb,load, mr);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  load2MuSetMap[load].insert(mu);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf"> 218</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf">AddStoreCHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</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>  STORECHI* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>(bb,store, mr);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  store2ChiSetMap[store].insert(chi);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(bb,mr);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e"> 225</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e">AddCallSiteMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  CALLMU* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a>(cs, mr);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  callsiteToMuSetMap[cs].insert(mu);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af7991c1393ef3c8b090833bc27036a49"> 231</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#af7991c1393ef3c8b090833bc27036a49">AddCallSiteCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  CALLCHI* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a>(cs, mr);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  callsiteToChiSetMap[cs].insert(chi);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(chi-><a class="code" href="classSVF_1_1CallCHI.html#a69f83ff81ea017d645aadeb46334880f">getBasicBlock</a>(),mr);</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_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2"> 238</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2">AddMSSAPHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</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>  bb2PhiSetMap[bb].insert(<span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">PHI</a>(bb, mr));</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </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>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<span class="keyword">const</span> MUSet& muSet)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">for</span> (MUSet::const_iterator mit = muSet.begin(), emit = muSet.end();</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  mit != emit; ++mit)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  MU* mu = (*mit);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  mu-><a class="code" href="classSVF_1_1MSSAMU.html#a2af1e639aabbc5997aa4e6526f6595fb">setVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(mu-><a class="code" href="classSVF_1_1MSSAMU.html#a6bd671839ec0376439ccd81d5b2eff30">getMR</a>()));</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8"> 258</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<span class="keyword">const</span> CHISet& chiSet, MRVector& memRegs)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">for</span> (CHISet::const_iterator cit = chiSet.begin(), ecit = chiSet.end();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  cit != ecit; ++cit)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  CHI* chi = (*cit);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  chi-><a class="code" href="classSVF_1_1MSSACHI.html#a245d8ee9e81ba4fe6f41533baf471331">setOpVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(chi-><a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>()));</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  chi-><a class="code" href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">setResVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(chi-><a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>(),chi));</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  memRegs.push_back(chi-><a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3"> 271</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">RenamePhiRes</a>(<span class="keyword">const</span> PHISet& phiSet, MRVector& memRegs)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">for</span> (PHISet::const_iterator iter = phiSet.begin(), eiter = phiSet.end();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  iter != eiter; ++iter)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  PHI* phi = *iter;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  phi-><a class="code" href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">setResVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(phi-><a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>(),phi));</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  memRegs.push_back(phi-><a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>());</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b"> 283</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b">RenamePhiOps</a>(<span class="keyword">const</span> PHISet& phiSet, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos, MRVector&)</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">for</span> (PHISet::const_iterator iter = phiSet.begin(), eiter = phiSet.end();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  iter != eiter; ++iter)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  PHI* phi = *iter;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  phi-><a class="code" href="classSVF_1_1MSSAPHI.html#a74f663dc5ecc659e98542a53414b7988">setOpVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(phi-><a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>()), pos);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classSVF_1_1MemSSA.html#a6bd57451370f5f4c92ce212be4cddd15">MemSSA</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>, <span class="keywordtype">bool</span> ptrOnlyMSSA);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc"> 299</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc">~MemSSA</a>()</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <a class="code" href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">destroy</a>();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1MemSSA.html#a41b153f2f8f3a27be63750e73a290569">getPAG</a>();</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac"> 306</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09"> 311</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>* <a class="code" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">getMRGenerator</a>()</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a4f3c4374ba4b06a819721a8e05efe221">buildMemSSA</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>& fun);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a89c40c8fad70f3aead6531261e5a3cc3">performStat</a>();</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc"> 323</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load = SVFUtil::dyn_cast<LoadStmt>(inst))</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordtype">bool</span> hasMu = load2MuSetMap.count(load) != 0;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  assert(hasMu && <span class="stringliteral">"not associated with mem region!"</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">return</span> hasMu;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1"> 334</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::dyn_cast<StoreStmt>(</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  inst))</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordtype">bool</span> has_store = store2ChiSetMap.count(store) != 0;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  assert(has_store && <span class="stringliteral">"not associated with mem region!"</span>);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">return</span> has_store;</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">else</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6bd9390c6cd2a3d7a3752fba76acfb46"> 346</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a6bd9390c6cd2a3d7a3752fba76acfb46">hasMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">return</span> callsiteToMuSetMap.find(cs)!=callsiteToMuSetMap.end();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae16120dfc9436861f719e605617f353d"> 350</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#ae16120dfc9436861f719e605617f353d">hasCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> callsiteToChiSetMap.find(cs)!=callsiteToChiSetMap.end();</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c"> 358</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c">hasFuncEntryChi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)<span class="keyword"> const</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">return</span> (funToEntryChiSetMap.find(fun) != funToEntryChiSetMap.end());</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f"> 362</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">hasReturnMu</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)<span class="keyword"> const</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">return</span> (funToReturnMuSetMap.find(fun) != funToReturnMuSetMap.end());</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800"> 367</a></span>  <span class="keyword">inline</span> CHISet& <a class="code" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">getFuncEntryChiSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">return</span> funToEntryChiSetMap[fun];</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93"> 371</a></span>  <span class="keyword">inline</span> MUSet& <a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">return</span> funToReturnMuSetMap[fun];</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847"> 379</a></span>  <span class="keyword">inline</span> MUSet& <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* ld)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">return</span> load2MuSetMap[ld];</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  }</div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418"> 383</a></span>  <span class="keyword">inline</span> CHISet& <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* st)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">return</span> store2ChiSetMap[st];</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af1a7b3ca0144ebff3747715e89646fbb"> 387</a></span>  <span class="keyword">inline</span> MUSet& <a class="code" href="classSVF_1_1MemSSA.html#af1a7b3ca0144ebff3747715e89646fbb">getMUSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span> callsiteToMuSetMap[cs];</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a959e932912b924ec91e1526947493204"> 391</a></span>  <span class="keyword">inline</span> CHISet& <a class="code" href="classSVF_1_1MemSSA.html#a959e932912b924ec91e1526947493204">getCHISet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> callsiteToChiSetMap[cs];</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div><div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274"> 395</a></span>  <span class="keyword">inline</span> PHISet& <a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">return</span> bb2PhiSetMap[bb];</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  }</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298"> 399</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)<span class="keyword"> const</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">return</span> bb2PhiSetMap.find(bb)!=bb2PhiSetMap.end();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div><div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c"> 403</a></span>  <span class="keyword">inline</span> LoadToMUSetMap& <a class="code" href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c">getLoadToMUSetMap</a>()</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0"> 407</a></span>  <span class="keyword">inline</span> StoreToChiSetMap& <a class="code" href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0">getStoreToChiSetMap</a>()</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  }</div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a"> 411</a></span>  <span class="keyword">inline</span> FunToReturnMuSetMap& <a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>()</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198"> 415</a></span>  <span class="keyword">inline</span> FunToEntryChiSetMap& <a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>()</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43"> 419</a></span>  <span class="keyword">inline</span> CallSiteToMUSetMap& <a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>()</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">callsiteToMuSetMap</a>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  }</div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d"> 423</a></span>  <span class="keyword">inline</span> CallSiteToCHISetMap& <a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>()</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d"> 427</a></span>  <span class="keyword">inline</span> BBToPhiSetMap& <a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>()</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a>;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#aafc83f7f22ebf3b3683607440c488bef">getLoadMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#aa8c45b455e6fc60cab955534c3e50bfa">getStoreChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a15272a4ed019d1c323d1826c1bedb70f">getFunEntryChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a67175188232e08f5c5374f92ff61810f">getFunRetMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a9e8c5b85957485635d0f72c2f48bb8b5">getCallSiteMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a2c65795ca63a53c833f5ac17a752b6dc">getCallSiteChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a9bb6512999cbf9c7c03153be77c8af20">getBBPhiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a749df6d6b28dd1bae569989bffeb7746">dumpMSSA</a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> & Out = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>());</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> };</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="preprocessor">#endif </span><span class="comment">/* MEMORYSSAPASS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet & getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00383">MemSSA.h:383</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
|
|
72
72
|
<div class="ttc" id="cJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
|
|
@@ -82,7 +82,7 @@ $(function() {
|
|
|
82
82
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a4f3c4374ba4b06a819721a8e05efe221"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a4f3c4374ba4b06a819721a8e05efe221">SVF::MemSSA::buildMemSSA</a></div><div class="ttdeci">virtual void buildMemSSA(const SVFFunction &fun)</div><div class="ttdoc">We start from here. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00079">MemSSA.cpp:79</a></div></div>
|
|
83
83
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a7c0bb1406f0e583c38e522ca06dfa73a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">SVF::MemSSA::collectRegDefs</a></div><div class="ttdeci">void collectRegDefs(const BasicBlock *bb, const MemRegion *mr)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00178">MemSSA.h:178</a></div></div>
|
|
84
84
|
<div class="ttc" id="classSVF_1_1MemSSA_html_acf840b71b67cabe831f01f2d358f27fa"><div class="ttname"><a href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">SVF::MemSSA::usedRegs</a></div><div class="ttdeci">MRSet usedRegs</div><div class="ttdoc">The following three set are used for prune SSA phi insertion. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00150">MemSSA.h:150</a></div></div>
|
|
85
|
-
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
85
|
+
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00049">BasicTypes.h:49</a></div></div>
|
|
86
86
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a8032c530b44e264544881d53d2fac390"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">SVF::MemSSA::collectRegUses</a></div><div class="ttdeci">void collectRegUses(const MemRegion *mr)</div><div class="ttdoc">Collect region uses and region defs according to mus/chis, in order to insert phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00173">MemSSA.h:173</a></div></div>
|
|
87
87
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a6bc360d2604ae4a0af74530b263b10d9"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVF::SVFIR::SVFStmtList</a></div><div class="ttdeci">std::vector< const SVFStmt * > SVFStmtList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00056">SVFIR.h:56</a></div></div>
|
|
88
88
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a16114eb55775f6ee812c1648dcaede0c"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a16114eb55775f6ee812c1648dcaede0c">SVF::MemSSA::SSARename</a></div><div class="ttdeci">virtual void SSARename(const SVFFunction &fun)</div><div class="ttdoc">SSA rename for a function. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00251">MemSSA.cpp:251</a></div></div>
|
|
@@ -90,7 +90,7 @@ $(function() {
|
|
|
90
90
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a3d6096aeb4155444b532b02bb8559113"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">SVF::MemSSA::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Release the memory. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00371">MemSSA.cpp:371</a></div></div>
|
|
91
91
|
<div class="ttc" id="classSVF_1_1StoreCHI_html"><div class="ttname"><a href="classSVF_1_1StoreCHI.html">SVF::StoreCHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00461">MSSAMuChi.h:461</a></div></div>
|
|
92
92
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a7be50dd82679b45a8c400f5a12056a25"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">SVF::MemSSA::CALLMU</a></div><div class="ttdeci">CallMU< Condition > CALLMU</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00062">MemSSA.h:62</a></div></div>
|
|
93
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
93
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
|
|
94
94
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a4fc930040ec54eb60629da18fb6a4d04"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04">SVF::MemSSA::stat</a></div><div class="ttdeci">MemSSAStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00123">MemSSA.h:123</a></div></div>
|
|
95
95
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a964f3fe39ece9a7b8b2033428b75a274"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">SVF::MemSSA::getPHISet</a></div><div class="ttdeci">PHISet & getPHISet(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00395">MemSSA.h:395</a></div></div>
|
|
96
96
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a6bd57451370f5f4c92ce212be4cddd15"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a6bd57451370f5f4c92ce212be4cddd15">SVF::MemSSA::MemSSA</a></div><div class="ttdeci">MemSSA(BVDataPTAImpl *p, bool ptrOnlyMSSA)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00046">MemSSA.cpp:46</a></div></div>
|
|
@@ -101,14 +101,14 @@ $(function() {
|
|
|
101
101
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a8f88acad31782bfa962e4349d8f4185d"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">SVF::MemSSA::getCallSiteToChiSetMap</a></div><div class="ttdeci">CallSiteToCHISetMap & getCallSiteToChiSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00423">MemSSA.h:423</a></div></div>
|
|
102
102
|
<div class="ttc" id="classSVF_1_1MSSAPHI_html_a74f663dc5ecc659e98542a53414b7988"><div class="ttname"><a href="classSVF_1_1MSSAPHI.html#a74f663dc5ecc659e98542a53414b7988">SVF::MSSAPHI::setOpVer</a></div><div class="ttdeci">void setOpVer(const MRVer *v, u32_t pos)</div><div class="ttdoc">Set operand ver. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00651">MSSAMuChi.h:651</a></div></div>
|
|
103
103
|
<div class="ttc" id="classSVF_1_1MemSSA_html_ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03">SVF::MemSSA::InterDisjoint</a></div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00117">MemSSA.h:117</a></div></div>
|
|
104
|
-
<div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
104
|
+
<div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00106">SVFBasicTypes.h:106</a></div></div>
|
|
105
105
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a2b4f3b19b32ac61dd1932faa82b93d8b"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b">SVF::MemSSA::MU</a></div><div class="ttdeci">MSSAMU< Condition > MU</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00059">MemSSA.h:59</a></div></div>
|
|
106
106
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a630be375832b1477989af85dce6760f3"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">SVF::MemSSA::RenamePhiRes</a></div><div class="ttdeci">void RenamePhiRes(const PHISet &phiSet, MRVector &memRegs)</div><div class="ttdoc">Rename result (LHS) of phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00271">MemSSA.h:271</a></div></div>
|
|
107
107
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a3af850d2fe9b2e75b2705c6d1355eda2"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2">SVF::MemSSA::AddMSSAPHI</a></div><div class="ttdeci">void AddMSSAPHI(const BasicBlock *bb, const MemRegion *mr)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00238">MemSSA.h:238</a></div></div>
|
|
108
108
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a4d4f7039c2972e671dc15b8c75abad14"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14">SVF::MemSSA::BBToMRSetMap</a></div><div class="ttdeci">Map< const BasicBlock *, MRSet > BBToMRSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00094">MemSSA.h:94</a></div></div>
|
|
109
109
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a6bd9390c6cd2a3d7a3752fba76acfb46"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a6bd9390c6cd2a3d7a3752fba76acfb46">SVF::MemSSA::hasMU</a></div><div class="ttdeci">bool hasMU(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00346">MemSSA.h:346</a></div></div>
|
|
110
110
|
<div class="ttc" id="classSVF_1_1MemSSA_html_ac34aa1ac96600bfc27b3c2eb0b1510ca"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca">SVF::MemSSA::FunToEntryChiSetMap</a></div><div class="ttdeci">Map< const SVFFunction *, CHISet > FunToEntryChiSetMap</div><div class="ttdoc">Map from fun to its entry chi set and return mu set. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00088">MemSSA.h:88</a></div></div>
|
|
111
|
-
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
111
|
+
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00081">SVFBasicTypes.h:81</a></div></div>
|
|
112
112
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a468e1481926df6865678b7232bb79bf3"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">SVF::MemSSA::pta</a></div><div class="ttdeci">BVDataPTAImpl * pta</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00121">MemSSA.h:121</a></div></div>
|
|
113
113
|
<div class="ttc" id="classSVF_1_1MSSADEF_html"><div class="ttname"><a href="classSVF_1_1MSSADEF.html">SVF::MSSADEF</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00325">MSSAMuChi.h:325</a></div></div>
|
|
114
114
|
<div class="ttc" id="classSVF_1_1MemSSA_html_ae1aca020147c270deca2a1241e3847d0"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0">SVF::MemSSA::MemRegToCounterMap</a></div><div class="ttdeci">Map< const MemRegion *, MRVERSION > MemRegToCounterMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00100">MemSSA.h:100</a></div></div>
|
|
@@ -133,7 +133,7 @@ $(function() {
|
|
|
133
133
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a97166aa7102816a16734d7e2f1c130b0"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0">SVF::MemSSA::getStoreToChiSetMap</a></div><div class="ttdeci">StoreToChiSetMap & getStoreToChiSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00407">MemSSA.h:407</a></div></div>
|
|
134
134
|
<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>
|
|
135
135
|
<div class="ttc" id="MSSAMuChi_8h_html"><div class="ttname"><a href="MSSAMuChi_8h.html">MSSAMuChi.h</a></div></div>
|
|
136
|
-
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
136
|
+
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00101">SVFBasicTypes.h:101</a></div></div>
|
|
137
137
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a89c40c8fad70f3aead6531261e5a3cc3"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a89c40c8fad70f3aead6531261e5a3cc3">SVF::MemSSA::performStat</a></div><div class="ttdeci">void performStat()</div><div class="ttdoc">Perform statistics. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00454">MemSSA.cpp:454</a></div></div>
|
|
138
138
|
<div class="ttc" id="classSVF_1_1MemRegion_html_a7ed54700c976f9738012bc051b7f41f5"><div class="ttname"><a href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5">SVF::MemRegion::Condition</a></div><div class="ttdeci">bool Condition</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00059">MemRegion.h:59</a></div></div>
|
|
139
139
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a81bba824495a882b49e687683954b112"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">SVF::MemSSA::MUSet</a></div><div class="ttdeci">Set< MU * > MUSet</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00070">MemSSA.h:70</a></div></div>
|
|
@@ -201,7 +201,7 @@ $(function() {
|
|
|
201
201
|
<div class="ttc" id="classSVF_1_1MemSSA_html_acfee1bb5534026ce991a1ab5e796c6b9"><div class="ttname"><a href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9">SVF::MemSSA::StoreToChiSetMap</a></div><div class="ttdeci">Map< const StoreStmt *, CHISet > StoreToChiSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00081">MemSSA.h:81</a></div></div>
|
|
202
202
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a8a5d3597f3dba9744e170cc8c32bf25f"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">SVF::MemSSA::PHISet</a></div><div class="ttdeci">Set< PHI * > PHISet</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00072">MemSSA.h:72</a></div></div>
|
|
203
203
|
<div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
|
|
204
|
-
<div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
204
|
+
<div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00079">SVFBasicTypes.h:79</a></div></div>
|
|
205
205
|
<div class="ttc" id="classSVF_1_1MemSSA_html_ae4c7b17d8da8278dca362af79f9f268d"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">SVF::MemSSA::mr2VerStackMap</a></div><div class="ttdeci">MemRegToVerStackMap mr2VerStackMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00143">MemSSA.h:143</a></div></div>
|
|
206
206
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a8f121e686d36748e4528d0ea66dcaa24"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">SVF::MemSSA::AddCallSiteMU</a></div><div class="ttdeci">void AddCallSiteMU(const CallICFGNode *cs, const MRSet &mrSet)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00197">MemSSA.h:197</a></div></div>
|
|
207
207
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a445d282890dbd2fb51e903255af1cc3e"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVF::MemSSA::SVFStmtList</a></div><div class="ttdeci">SVFIR::SVFStmtList SVFStmtList</div><div class="ttdoc">SVFIR edge list. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00103">MemSSA.h:103</a></div></div>
|
|
@@ -219,7 +219,7 @@ $(function() {
|
|
|
219
219
|
<div class="ttc" id="classSVF_1_1MemSSA_html_adbaf4715d5d4c9d0be1e934178efe13e"><div class="ttname"><a href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e">SVF::MemSSA::AddCallSiteMU</a></div><div class="ttdeci">void AddCallSiteMU(const CallICFGNode *cs, const MemRegion *mr)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00225">MemSSA.h:225</a></div></div>
|
|
220
220
|
<div class="ttc" id="classSVF_1_1MemSSA_html_abfb338ce36ad46a9654d50dd6e2b07f1"><div class="ttname"><a href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">SVF::MemSSA::hasCHI</a></div><div class="ttdeci">bool hasCHI(const PAGEdge *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00334">MemSSA.h:334</a></div></div>
|
|
221
221
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a44cbdb1231c2709c24d19ad2bae2475a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">SVF::MemSSA::getFunToRetMuSetMap</a></div><div class="ttdeci">FunToReturnMuSetMap & getFunToRetMuSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00411">MemSSA.h:411</a></div></div>
|
|
222
|
-
<div class="ttc" id="namespaceSVF_html_aedf0d6718ca176e0b9e17ab4b30729c6"><div class="ttname"><a href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">SVF::OrderedMap</a></div><div class="ttdeci">std::map< Key, Value, Compare, Allocator > OrderedMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
222
|
+
<div class="ttc" id="namespaceSVF_html_aedf0d6718ca176e0b9e17ab4b30729c6"><div class="ttname"><a href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">SVF::OrderedMap</a></div><div class="ttdeci">std::map< Key, Value, Compare, Allocator > OrderedMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00113">SVFBasicTypes.h:113</a></div></div>
|
|
223
223
|
</div><!-- fragment --></div><!-- contents -->
|
|
224
224
|
<!-- start footer part -->
|
|
225
225
|
<hr class="footer"/><address class="footer"><small>
|