svf-tools 1.0.613 → 1.0.614
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CMakeLists.txt +13 -0
- package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +7 -6
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/Andersen_8h_source.html +16 -16
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +7 -7
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +14 -14
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ConsG_8h_source.html +9 -9
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +9 -9
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +4 -6
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +22 -22
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -28
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +65 -65
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +23 -28
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +8 -8
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MHP_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +12 -17
- package/SVF-doxygen/html/html/MTA_8h_source.html +3 -4
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +34 -34
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +16 -15
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +53 -52
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +7 -8
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/Options_8cpp_source.html +52 -53
- package/SVF-doxygen/html/html/Options_8h_source.html +53 -54
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +33 -33
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +91 -95
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +31 -39
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +85 -92
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +16 -16
- package/SVF-doxygen/html/html/PointsTo_8cpp.html +1 -0
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +51 -51
- package/SVF-doxygen/html/html/PointsTo_8h_source.html +38 -38
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SCC_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +11 -22
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +14 -17
- package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +21 -19
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +49 -62
- package/SVF-doxygen/html/html/SVFG_8h_source.html +45 -45
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +10 -16
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +83 -83
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/SVFType_8h.html +22 -22
- package/SVF-doxygen/html/html/SVFType_8h_source.html +76 -77
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +11 -11
- package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -3
- package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +69 -71
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +39 -39
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +49 -51
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +13 -13
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/VFG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +33 -33
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
- package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +11 -11
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +2 -2
- package/SVF-doxygen/html/html/WPASolver_8h_source.html +25 -25
- package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -5
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -5
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +187 -188
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +104 -107
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +163 -164
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +47 -50
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +194 -195
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +45 -48
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +204 -205
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +35 -38
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +191 -192
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +29 -32
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +122 -123
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +158 -219
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +137 -138
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +57 -49
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +138 -139
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +140 -141
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +114 -114
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +17 -31
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +40 -40
- package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +228 -229
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +62 -65
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +194 -195
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +219 -220
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +335 -342
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +57 -57
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +20 -14
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +106 -92
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +87 -87
- package/SVF-doxygen/html/html/classSVF_1_1MTA-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +27 -33
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder-members.html +41 -43
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +57 -80
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
- package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +4 -3
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +170 -143
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +13 -15
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +17 -18
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +53 -79
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PTData.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData-members.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +174 -177
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData-members.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +99 -102
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData-members.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +125 -127
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData-members.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +83 -86
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +122 -122
- package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData-members.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +137 -140
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +56 -56
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo-members.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +183 -178
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator-members.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +87 -65
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFArrayType.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +13 -16
- package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +5 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunctionType.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +211 -236
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder-members.html +7 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +50 -138
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +82 -82
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +203 -215
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +79 -79
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIntergerType.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +0 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFPointerType.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +4 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +12 -14
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +42 -68
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +108 -109
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +146 -146
- package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +48 -61
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +178 -179
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +35 -38
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +42 -46
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +169 -170
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +29 -32
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +263 -264
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +112 -115
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +76 -81
- package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +2 -2
- package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/functions.html +1 -1
- package/SVF-doxygen/html/html/functions_0x7e.html +16 -16
- package/SVF-doxygen/html/html/functions_a.html +7 -7
- package/SVF-doxygen/html/html/functions_b.html +6 -6
- package/SVF-doxygen/html/html/functions_c.html +27 -27
- package/SVF-doxygen/html/html/functions_d.html +10 -11
- package/SVF-doxygen/html/html/functions_e.html +2 -2
- package/SVF-doxygen/html/html/functions_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func.html +6 -6
- package/SVF-doxygen/html/html/functions_func_0x7e.html +16 -16
- package/SVF-doxygen/html/html/functions_func_b.html +6 -6
- package/SVF-doxygen/html/html/functions_func_c.html +27 -27
- package/SVF-doxygen/html/html/functions_func_d.html +10 -11
- package/SVF-doxygen/html/html/functions_func_e.html +2 -2
- package/SVF-doxygen/html/html/functions_func_f.html +5 -5
- package/SVF-doxygen/html/html/functions_func_g.html +22 -22
- package/SVF-doxygen/html/html/functions_func_h.html +3 -3
- package/SVF-doxygen/html/html/functions_func_i.html +2 -2
- package/SVF-doxygen/html/html/functions_func_o.html +3 -3
- package/SVF-doxygen/html/html/functions_func_p.html +5 -5
- package/SVF-doxygen/html/html/functions_func_r.html +5 -8
- package/SVF-doxygen/html/html/functions_func_s.html +5 -5
- package/SVF-doxygen/html/html/functions_func_t.html +1 -1
- package/SVF-doxygen/html/html/functions_func_u.html +23 -23
- package/SVF-doxygen/html/html/functions_g.html +25 -28
- package/SVF-doxygen/html/html/functions_h.html +3 -3
- package/SVF-doxygen/html/html/functions_i.html +5 -5
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_o.html +13 -13
- package/SVF-doxygen/html/html/functions_p.html +19 -19
- package/SVF-doxygen/html/html/functions_r.html +11 -12
- package/SVF-doxygen/html/html/functions_s.html +32 -35
- package/SVF-doxygen/html/html/functions_t.html +12 -12
- package/SVF-doxygen/html/html/functions_type_t.html +1 -1
- package/SVF-doxygen/html/html/functions_u.html +26 -23
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_i.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_p.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_s.html +5 -8
- package/SVF-doxygen/html/html/functions_vars_t.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_u.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +3 -7
- package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +35 -35
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +4 -4
- package/SVF-doxygen/html/html/saber_8cpp.html +1 -5
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -5
- package/SVF-doxygen/html/html/search/all_0.js +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +4 -4
- package/SVF-doxygen/html/html/search/all_10.js +15 -15
- package/SVF-doxygen/html/html/search/all_11.js +1 -2
- package/SVF-doxygen/html/html/search/all_12.js +19 -20
- package/SVF-doxygen/html/html/search/all_13.js +8 -8
- package/SVF-doxygen/html/html/search/all_14.js +13 -12
- package/SVF-doxygen/html/html/search/all_15.js +4 -4
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_19.js +16 -16
- package/SVF-doxygen/html/html/search/all_2.js +6 -6
- package/SVF-doxygen/html/html/search/all_3.js +14 -14
- package/SVF-doxygen/html/html/search/all_4.js +5 -5
- package/SVF-doxygen/html/html/search/all_5.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +5 -5
- package/SVF-doxygen/html/html/search/all_7.js +11 -12
- package/SVF-doxygen/html/html/search/all_8.js +3 -3
- package/SVF-doxygen/html/html/search/all_9.js +3 -3
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_d.js +3 -3
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +5 -5
- package/SVF-doxygen/html/html/search/functions_0.js +4 -4
- package/SVF-doxygen/html/html/search/functions_1.js +6 -6
- package/SVF-doxygen/html/html/search/functions_10.js +1 -2
- package/SVF-doxygen/html/html/search/functions_11.js +10 -10
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +12 -12
- package/SVF-doxygen/html/html/search/functions_17.js +16 -16
- package/SVF-doxygen/html/html/search/functions_2.js +14 -14
- package/SVF-doxygen/html/html/search/functions_3.js +5 -5
- package/SVF-doxygen/html/html/search/functions_4.js +2 -2
- package/SVF-doxygen/html/html/search/functions_5.js +4 -4
- package/SVF-doxygen/html/html/search/functions_6.js +11 -11
- package/SVF-doxygen/html/html/search/functions_7.js +3 -3
- package/SVF-doxygen/html/html/search/functions_8.js +2 -2
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +3 -3
- package/SVF-doxygen/html/html/search/functions_f.js +5 -5
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/variables_0.js +1 -1
- package/SVF-doxygen/html/html/search/variables_10.js +2 -2
- package/SVF-doxygen/html/html/search/variables_12.js +5 -6
- package/SVF-doxygen/html/html/search/variables_13.js +3 -3
- package/SVF-doxygen/html/html/search/variables_14.js +1 -0
- package/SVF-doxygen/html/html/search/variables_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +0 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +14 -14
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement-members.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +47 -57
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1PointsTo_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +5 -5
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +6 -7
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/build.sh +2 -2
- package/include/DDA/DDAPass.h +1 -1
- package/include/DDA/FlowDDA.h +1 -1
- package/include/Graphs/ICFG.h +1 -1
- package/include/Graphs/SVFG.h +3 -4
- package/include/Graphs/SVFGOPT.h +7 -7
- package/include/MSSA/MemSSA.h +2 -0
- package/include/MSSA/SVFGBuilder.h +5 -14
- package/include/MTA/MTA.h +2 -2
- package/include/MemoryModel/MutablePointsToDS.h +3 -3
- package/include/MemoryModel/PersistentPointsToCache.h +7 -8
- package/include/MemoryModel/PersistentPointsToDS.h +93 -93
- package/include/MemoryModel/PointerAnalysisImpl.h +17 -28
- package/include/MemoryModel/PointsTo.h +24 -24
- package/include/SABER/SrcSnkDDA.h +10 -13
- package/include/SVF-LLVM/LLVMLoopAnalysis.h +2 -1
- package/include/SVF-LLVM/LLVMModule.h +6 -6
- package/include/SVFIR/SVFIR.h +3 -5
- package/include/SVFIR/SVFType.h +6 -8
- package/include/SVFIR/SVFValue.h +3 -3
- package/include/Util/Options.h +0 -1
- package/include/Util/SparseBitVector.h +6 -14
- package/include/WPA/FlowSensitive.h +13 -20
- package/include/WPA/WPASolver.h +5 -9
- package/lib/DDA/DDAPass.cpp +4 -4
- package/lib/Graphs/CFLGraph.cpp +3 -0
- package/lib/Graphs/SVFG.cpp +1 -1
- package/lib/MSSA/MemSSA.cpp +5 -3
- package/lib/MSSA/SVFGBuilder.cpp +9 -27
- package/lib/MTA/MTA.cpp +4 -4
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +10 -10
- package/lib/MemoryModel/PointsTo.cpp +23 -19
- package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +3 -4
- package/lib/SVF-LLVM/LLVMModule.cpp +32 -21
- package/lib/SVFIR/SVFIR.cpp +1 -1
- package/lib/SVFIR/SymbolTableInfo.cpp +4 -15
- package/lib/Util/Options.cpp +0 -6
- package/lib/WPA/AndersenSFR.cpp +1 -1
- package/lib/WPA/FlowSensitive.cpp +1 -1
- package/package.json +1 -1
- package/tools/CFL/cfl.cpp +5 -4
- package/tools/DDA/dda.cpp +3 -2
- package/tools/Example/svf-ex.cpp +3 -2
- package/tools/MTA/mta.cpp +6 -4
- package/tools/SABER/saber.cpp +7 -5
- package/tools/WPA/wpa.cpp +3 -2
|
@@ -69,7 +69,7 @@ $(function() {
|
|
|
69
69
|
<a href="MHP_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">//===- MHP.h -- May-happen-in-parallel analysis-------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-> <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"> * MHP.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: Jan 21, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui, Peng Di</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef MHP_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define MHP_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="TCT_8h.html">MTA/TCT.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>ForkJoinAnalysis;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>LockAnalysis;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html"> 45</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MHP.html">MHP</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a905c05370011a2dc93f86973d409b4d9"> 49</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFFunction*></a> <a class="code" href="classSVF_1_1MHP.html#a905c05370011a2dc93f86973d409b4d9">FunSet</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a3e67209ca8f9372d1846e0ce71bbd47a"> 50</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFInstruction*></a> <a class="code" href="classSVF_1_1MHP.html#a3e67209ca8f9372d1846e0ce71bbd47a">InstSet</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8"> 51</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1TCT.html#a7e271b604467732098fb42e8e64cc1ac">TCT::InstVec</a> <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#aeba1145d32693ae7b642f483eeae94ef"> 52</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<CxtThreadStmt></a> <a class="code" href="classSVF_1_1MHP.html#aeba1145d32693ae7b642f483eeae94ef">CxtThreadStmtWorkList</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32"> 53</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<CxtThreadStmt></a> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#ac30f283cb2ad020a054ee6525ca94025"> 54</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<CxtThreadStmt,NodeBS></a> <a class="code" href="classSVF_1_1MHP.html#ac30f283cb2ad020a054ee6525ca94025">ThreadStmtToThreadInterleav</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#aaea1d121f1623e1af7e717cbbb8a0146"> 55</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFInstruction*,CxtThreadStmtSet></a> <a class="code" href="classSVF_1_1MHP.html#aaea1d121f1623e1af7e717cbbb8a0146">InstToThreadStmtSetMap</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a2c3dcb480ef332bd4aff991df39f3e34"> 56</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae5e2b154313b4330bb015050aec72a1f">SVFLoopAndDomInfo::LoopBBs</a> <a class="code" href="classSVF_1_1MHP.html#a2c3dcb480ef332bd4aff991df39f3e34">LoopBBs</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a08ba219ec02b07b1bbd91a88ebb4acd7"> 58</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<CxtStmt></a> <a class="code" href="classSVF_1_1MHP.html#a08ba219ec02b07b1bbd91a88ebb4acd7">LockSpan</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#ad8930750fd4316003686b215ace46525"> 60</a></span>  <span class="keyword">typedef</span> std::pair<const SVFFunction*,const SVFFunction*> <a class="code" href="classSVF_1_1MHP.html#ad8930750fd4316003686b215ace46525">FuncPair</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#adff2785f9d46eb110ce5b429592b2a38"> 61</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<FuncPair, bool></a> <a class="code" href="classSVF_1_1MHP.html#adff2785f9d46eb110ce5b429592b2a38">FuncPairToBool</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classSVF_1_1MHP.html#abf1f5a7c365dfb95b42015b7b2ad6fbe">MHP</a>(<a class="code" href="classSVF_1_1TCT.html">TCT</a>* t);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MHP.html#a6b7133f1767c3636ce253c5325be5053">~MHP</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a02457fa6e3c85c897ec3b3d8db18cc4b">analyze</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#adfd90a8d20d630bc3813f5ed71d3abf7">analyzeInterleaving</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a20e740d4b96ef086b6b5778acd38ca88"> 76</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* <a class="code" href="classSVF_1_1MHP.html#a20e740d4b96ef086b6b5778acd38ca88">getThreadCallGraph</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</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"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6"> 82</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">getTCT</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// Get CallICFGNode</span></div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#acd61be4be1b285fa333c5435912ece0e"> 88</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1MHP.html#acd61be4be1b285fa333c5435912ece0e">getCBN</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a90f5d399420894f087a24d315ad2ee8e">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a90c228214643bb6d37bacffc35b99a3e">isConnectedfromMain</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// /// Interface to query whether two instructions are protected by common locks</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// virtual bool isProtectedByACommonLock(const SVFInstruction* i1, const SVFInstruction* i2);</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// virtual bool isAllCxtInSameLockSpan(const SVFInstruction *I1, const SVFInstruction *I2);</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// virtual bool isOneCxtInSameLockSpan(const SVFInstruction *I1, const SVFInstruction *I2);</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment">//</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// bool hasOneCxtInLockSpan(const SVFInstruction *I, LockSpan lspan);</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// bool hasAllCxtInLockSpan(const SVFInstruction *I, LockSpan lspan);</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">//</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment">//</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// LockSpan getSpanfromCxtLock(NodeID l);</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a15b624924254f5362a3d02fa539a24fb">mayHappenInParallel</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i2);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a843f1fa52625ec9e844307ba51fec202">mayHappenInParallelCache</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i2);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a0cb1db9943ddc0928afa8e370cbf60c6">mayHappenInParallelInst</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i2);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#ac10a8f3a4b09dc257be9edabccea3fbb">executedByTheSameThread</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i2);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36"> 114</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& <a class="code" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">getInterleavingThreads</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& cts)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[cts];</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a3ba43bb0be55ffade3d70f8cbb95f88f"> 118</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a3ba43bb0be55ffade3d70f8cbb95f88f">hasInterleavingThreads</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& cts)<span class="keyword"> const</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>.find(cts)!=<a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>.end();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a4ce3b9ad740aa7b74a1ae2192aeeb9d8"> 126</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> CxtThreadStmtSet& <a class="code" href="classSVF_1_1MHP.html#a4ce3b9ad740aa7b74a1ae2192aeeb9d8">getThreadStmtSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  InstToThreadStmtSetMap::const_iterator it = <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>.find(inst);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  assert(it!=<a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>.end() && <span class="stringliteral">"no thread access the instruction?"</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a27d031e9c7c4706d7ee1750668e83b99"> 132</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a27d031e9c7c4706d7ee1750668e83b99">hasThreadStmtSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>.find(inst)!=<a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>.end();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a22f7dc5043fed97f1b4b273b8b710415">printInterleaving</a>();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">private</span>:</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_1MHP.html#a5a537e2f89e8cfe10a2d16ae1654be6e"> 143</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a>& <a class="code" href="classSVF_1_1MHP.html#a5a537e2f89e8cfe10a2d16ae1654be6e">getCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst, <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a>& callees)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(<a class="code" href="classSVF_1_1MHP.html#acd61be4be1b285fa333c5435912ece0e">getCBN</a>(inst), callees);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> callees;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#abeb76ad63d9362ba8fa8f7088b0d942b">updateNonCandidateFunInterleaving</a>();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a2c1e4fac7b810021939ed26307d37816">handleNonCandidateFun</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& cts);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a8a95f8ae419b66310ce6f572caea2ca5">handleFork</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& cts, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a">handleJoin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& cts, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#af769afe6ba6baccda5a497df181c9fb0">handleCall</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& cts, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753">handleRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& cts);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& cts);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e"> 172</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& tgr, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[tgr].test_and_set(tid))</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>[tgr.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>()].insert(tgr);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a6c77349f168735888d0db4ac5b632da9"> 180</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a6c77349f168735888d0db4ac5b632da9">addInterleavingThread</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& tgr, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& src)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">bool</span> changed = <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[tgr] |= <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[src];</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span>(changed)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>[tgr.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>()].insert(tgr);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a02b4ab18067c9b911b4bd53f0426aec3"> 189</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a02b4ab18067c9b911b4bd53f0426aec3">rmInterleavingThread</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& tgr, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& tids, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* joinsite)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> joinedTids;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = tids.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = tids.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it!=eit; ++it)</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">if</span>(<a class="code" href="classSVF_1_1MHP.html#a1c43a0f078f82a3c741de1c4dc2490c0">isMustJoin</a>(tgr.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),joinsite))</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  joinedTids.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(*it);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[tgr].intersectWithComplement(joinedTids))</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>  <a class="code" href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#ae9423c868ba4d26337428b96db9fc77b">updateAncestorThreads</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a23ab5a03b7c00ba0ebac65568a83a5cc">updateSiblingThreads</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a0356a8ccc53999549fb369f67faad306">isRecurFullJoin</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> parentTid, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> curTid);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a1c43a0f078f82a3c741de1c4dc2490c0">isMustJoin</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> curTid, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* joinsite);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c"> 217</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">isMultiForkedThread</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> curTid)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(curTid)-><a class="code" href="classSVF_1_1TCTNode.html#a5dd0cf88e381438d191b275314117561">isMultiforked</a>();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a68a2ad4480af7d40bd604d81afbc3d0b"> 222</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a68a2ad4480af7d40bd604d81afbc3d0b">pushCxt</a>(<a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& cxt, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a625cd9d7ca85c0581af13e9e0c16960e">pushCxt</a>(cxt,call,callee);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a3dc4c80d60039ce5f73583ce32784d82"> 227</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a3dc4c80d60039ce5f73583ce32784d82">matchCxt</a>(<a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& cxt, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a9b1a5a9feb8cd97b37ee49727536a549">matchCxt</a>(cxt,call,callee);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178"> 234</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">pushToCTSWorkList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& cs)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(cs);</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_1MHP.html#ad8d3aa1a12fb1e8668eb4138fbe23b7d"> 238</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> <a class="code" href="classSVF_1_1MHP.html#ad8d3aa1a12fb1e8668eb4138fbe23b7d">popFromCTSWorkList</a>()</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>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> ctp = <a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> ctp;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a7af8320c524acaf3cf004ff37f9b4e42"> 245</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a7af8320c524acaf3cf004ff37f9b4e42">isTDFork</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-><a class="code" href="classSVF_1_1ThreadAPI.html#a4bacbfb6648de8196217c83b5d73b876">isTDFork</a>(call);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a3352c8718f909c9fbed4ef7f5cf050a2"> 250</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a3352c8718f909c9fbed4ef7f5cf050a2">isTDJoin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call)</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>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-><a class="code" href="classSVF_1_1ThreadAPI.html#a68b10ffa2775fe7d8c1476409c0f54ab">isTDJoin</a>(call);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1MHP.html#aed0633101a35b43a1769261db14fb1a1">getDirAndIndJoinedTid</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& cxt, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a7585f40b80c5488828576eb2f035ac61">hasJoinInSymmetricLoop</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& cxt, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call) <span class="keyword">const</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keyword">const</span> LoopBBs& <a class="code" href="classSVF_1_1MHP.html#a8b80036bab834fa104f64bd3ed3ac667">getJoinInSymmetricLoop</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& cxt, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call) <span class="keyword">const</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a6f07427b45991b2d8a3ff21582121d23">isHBPair</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid1, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid2);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799"> 267</a></span>  <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>; </div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176"> 268</a></span>  <a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>; </div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60"> 269</a></span>  <a class="code" href="classSVF_1_1ForkJoinAnalysis.html">ForkJoinAnalysis</a>* <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>; </div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb"> 270</a></span>  CxtThreadStmtWorkList <a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>; </div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541"> 271</a></span>  ThreadStmtToThreadInterleav <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>; </div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f"> 272</a></span>  InstToThreadStmtSetMap <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>; </div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00"> 273</a></span>  FuncPairToBool <a class="code" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">nonCandidateFuncMHPRelMap</a>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2"> 277</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">numOfTotalQueries</a>; </div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106"> 278</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>; </div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2"> 279</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">interleavingTime</a>;</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5"> 280</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">interleavingQueriesTime</a>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> };</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html"> 288</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1ForkJoinAnalysis.html">ForkJoinAnalysis</a></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631"> 293</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">ValDomain</a></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f"> 295</a></span>  <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">Empty</a>, <span class="comment">// initial(dummy) state</span></div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"> 296</a></span>  <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>, <span class="comment">// thread is alive</span></div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4"> 297</a></span>  <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>, <span class="comment">// thread is dead</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  };</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a159bbd4352fcffa93c97281ab9d229b1"> 300</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae5e2b154313b4330bb015050aec72a1f">SVFLoopAndDomInfo::LoopBBs</a> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a159bbd4352fcffa93c97281ab9d229b1">LoopBBs</a>;</div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f"> 301</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1TCT.html#a7e271b604467732098fb42e8e64cc1ac">TCT::InstVec</a> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a>;</div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#acdc652faba35e45820cce0cdd20ea99c"> 302</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<CxtStmt,ValDomain></a> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acdc652faba35e45820cce0cdd20ea99c">CxtStmtToAliveFlagMap</a>;</div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a9b0d25255df73a5d7a0b9d30fe918200"> 303</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<CxtStmt,NodeBS></a> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a9b0d25255df73a5d7a0b9d30fe918200">CxtStmtToTIDMap</a>;</div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a7fb8df483e619337e77088e8543a9846"> 304</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<NodePair></a> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a7fb8df483e619337e77088e8543a9846">ThreadPairSet</a>;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a04e906f76a78db7052f5a0628f665b26"> 305</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<CxtStmt, LoopBBs></a> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a04e906f76a78db7052f5a0628f665b26">CxtStmtToLoopMap</a>;</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a0ec0920d324604e3672db4d8dff93b1e"> 306</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<CxtStmt></a> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a0ec0920d324604e3672db4d8dff93b1e">CxtStmtWorkList</a>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a431ec90a12a62bb892e8b78f66a8f9dc"> 308</a></span>  <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a431ec90a12a62bb892e8b78f66a8f9dc">ForkJoinAnalysis</a>(<a class="code" href="classSVF_1_1TCT.html">TCT</a>* t) : <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>(t)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  collectSCEVInfo();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordtype">void</span> collectSCEVInfo();</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordtype">void</span> analyzeForkJoinPair();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a819ef18524ee9104b920d1a465c61da1"> 321</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a819ef18524ee9104b920d1a465c61da1">getDirectlyJoinedTid</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cs)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> directJoinMap[cs];</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1MHP.html#aed0633101a35b43a1769261db14fb1a1">getDirAndIndJoinedTid</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cs);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a8b45294eef96f04370da341110599f4d"> 329</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> LoopBBs& <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8b45294eef96f04370da341110599f4d">getJoinInSymmetricLoop</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cs)<span class="keyword"> const</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  CxtStmtToLoopMap::const_iterator it = cxtJoinInLoop.find(cs);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  assert(it!=cxtJoinInLoop.end() && <span class="stringliteral">"does not have the loop"</span>);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#ab69d11caf499612d108155e13adb300f"> 335</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab69d11caf499612d108155e13adb300f">hasJoinInSymmetricLoop</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cs)<span class="keyword"> const</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  CxtStmtToLoopMap::const_iterator it = cxtJoinInLoop.find(cs);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">return</span> it!=cxtJoinInLoop.end();</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a86c68ce5fd8825b1593d92a5a5bad389"> 341</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a86c68ce5fd8825b1593d92a5a5bad389">isHBPair</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid1, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid2)</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="keywordtype">bool</span> nonhp = HBPair.find(std::make_pair(tid1,tid2))!=HBPair.end();</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordtype">bool</span> hp = HPPair.find(std::make_pair(tid1,tid2))!=HPPair.end();</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">if</span>(nonhp && !hp)</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340"> 350</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">isFullJoin</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid1, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid2)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordtype">bool</span> full = fullJoin.find(std::make_pair(tid1,tid2))!=fullJoin.end();</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordtype">bool</span> partial = partialJoin.find(std::make_pair(tid1,tid2))!=partialJoin.end();</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">if</span>(full && !partial)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> <span class="keyword">false</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"> 358</span> </div><div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#ae9fe4c9382f13d339db3baa39d956b05"> 360</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ae9fe4c9382f13d339db3baa39d956b05">getExitInstOfParentRoutineFun</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid)<span class="keyword"> const</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> parentTid = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(tid);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>& parentct = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(parentTid)-><a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* parentRoutine = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#ae25bbfc9c8616186f03c1555d5009ce3">getStartRoutineOfCxtThread</a>(parentct);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst = parentRoutine-><a class="code" href="classSVF_1_1SVFFunction.html#a8ca4fa87f4c26b71c6e03c8f32db1071">getExitBB</a>()-><a class="code" href="classSVF_1_1SVFBasicBlock.html#ad05f85ce931d4479f71d1947a25599dc">back</a>();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">return</span> inst;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#ac5713ddcfd040a1f1f4fb40f24e4814c"> 370</a></span>  <span class="keyword">inline</span> LoopBBs& <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac5713ddcfd040a1f1f4fb40f24e4814c">getJoinLoop</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a4faeacaa7aa38cf5b61404278b93a91f">getJoinLoop</a>(inst);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a197ab02e8320affc4ba2c67fae5bf020"> 374</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a197ab02e8320affc4ba2c67fae5bf020">hasJoinLoop</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a59125bb4878bc347dbdbc74aa6ec4cdf">hasJoinLoop</a>(inst);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a8a95f8ae419b66310ce6f572caea2ca5">handleFork</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cts,<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a">handleJoin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cts,<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#af769afe6ba6baccda5a497df181c9fb0">handleCall</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cts,<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753">handleRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cts);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cts);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordtype">bool</span> isSameSCEV(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* forkSite, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* joinSite);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordtype">bool</span> sameLoopTripCount(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* forkSite, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* joinSite);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div><div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a209ab13297e61f980cdf350e8fe2a9b4"> 402</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a209ab13297e61f980cdf350e8fe2a9b4">isAliasedForkJoin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* forkSite, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* joinSite)</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">getPTA</a>()-><a class="code" href="classSVF_1_1PointerAnalysis.html#ae1323233941cdc9b99332e4b954a2217">alias</a>(getForkedThread(forkSite), getJoinedThread(joinSite)) && isSameSCEV(forkSite,joinSite);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="comment">// Get CallICFGNode</span></div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a46bd73ec73cc17087f21e8c5b234d0bd"> 407</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a46bd73ec73cc17087f21e8c5b234d0bd">getCBN</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</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_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a90f5d399420894f087a24d315ad2ee8e">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  }</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="keyword">inline</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">ValDomain</a> getMarkedFlag(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cs)</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  CxtStmtToAliveFlagMap::const_iterator it = cxtStmtToAliveFlagMap.find(cs);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span>(it==cxtStmtToAliveFlagMap.end())</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  cxtStmtToAliveFlagMap[cs] = Empty;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> Empty;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215"> 426</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& tgr, <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">ValDomain</a> flag)</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">ValDomain</a> flag_tgr = getMarkedFlag(tgr);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  cxtStmtToAliveFlagMap[tgr] = flag;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span>(flag_tgr!=getMarkedFlag(tgr))</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <a class="code" href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a047fbff4be9f94ab12795cd371f60efa"> 434</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a047fbff4be9f94ab12795cd371f60efa">markCxtStmtFlag</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& tgr, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& src)</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">ValDomain</a> flag_tgr = getMarkedFlag(tgr);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">ValDomain</a> flag_src = getMarkedFlag(src);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">if</span>(flag_tgr == Empty)</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  cxtStmtToAliveFlagMap[tgr] = flag_src;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(flag_tgr == TDDead)</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  {</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">if</span>(flag_src==TDAlive)</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  cxtStmtToAliveFlagMap[tgr] = TDAlive;</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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">if</span>(flag_tgr!=getMarkedFlag(tgr))</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <a class="code" href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a7965a276a3a12d532c9967de13d4cc8a"> 457</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a7965a276a3a12d532c9967de13d4cc8a">clearFlagMap</a>()</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  cxtStmtToAliveFlagMap.clear();</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a29d9fec1ea7b8e5456342522eea403ad">clear</a>();</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> </div><div class="line"><a name="l00466"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a7ac37e3399aa6e303a6babe8f455aa87"> 466</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a7ac37e3399aa6e303a6babe8f455aa87">pushToCTSWorkList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cs)</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(cs);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  }</div><div class="line"><a name="l00470"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a4d893583db922444c6a29923bf3d05d3"> 470</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d893583db922444c6a29923bf3d05d3">popFromCTSWorkList</a>()</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> ctp = <a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">return</span> ctp;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div><div class="line"><a name="l00478"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a028734f4520172aa5abed48628b44dc3"> 478</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a028734f4520172aa5abed48628b44dc3">pushCxt</a>(<a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& cxt, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee)</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a625cd9d7ca85c0581af13e9e0c16960e">pushCxt</a>(cxt,call,callee);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div><div class="line"><a name="l00483"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#ac95b1600aa524c3e607eebcf9d50df0e"> 483</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac95b1600aa524c3e607eebcf9d50df0e">matchCxt</a>(<a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& cxt, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee)</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a9b1a5a9feb8cd97b37ee49727536a549">matchCxt</a>(cxt,call,callee);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> </div><div class="line"><a name="l00489"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a66965759d876309c64faf4b755afc2a7"> 489</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a66965759d876309c64faf4b755afc2a7">isTDFork</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call)</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">return</span> getTCG()->getThreadAPI()->isTDFork(call);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a97151d74790b2853249d0cc94bb0904f"> 494</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a97151d74790b2853249d0cc94bb0904f">isTDJoin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call)</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">return</span> getTCG()->getThreadAPI()->isTDJoin(call);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  }</div><div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#ab51ff5da249127d92af3748c64572af6"> 499</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab51ff5da249127d92af3748c64572af6">getForkedThread</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">return</span> getTCG()->getThreadAPI()->getForkedThread(call);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div><div class="line"><a name="l00504"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a3b6d40f3421d4ee9bdb54a78d592f3a7"> 504</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3b6d40f3421d4ee9bdb54a78d592f3a7">getJoinedThread</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call)</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">return</span> getTCG()->getThreadAPI()->getJoinedThread(call);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div><div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a1c34a3617488e152104e3625c975f608"> 508</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a>& <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a1c34a3617488e152104e3625c975f608">getCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst, <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a>& callees)</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  getTCG()->getCallees(<a class="code" href="classSVF_1_1MHP.html#acd61be4be1b285fa333c5435912ece0e">getCBN</a>(inst), callees);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">return</span> callees;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6"> 514</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>();</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  }</div><div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe"> 519</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe">addDirectlyJoinTID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cs, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid)</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  directJoinMap[cs].set(tid);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a1505ba82206169f76ea239067797d6c2"> 527</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a1505ba82206169f76ea239067797d6c2">addToHPPair</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid1, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid2)</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  HPPair.insert(std::make_pair(tid1,tid2));</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  HPPair.insert(std::make_pair(tid2,tid1));</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  }</div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a647ae6866bb37be850f0bdd5a7341188"> 532</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a647ae6866bb37be850f0bdd5a7341188">addToHBPair</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid1, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid2)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  HBPair.insert(std::make_pair(tid1,tid2));</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> </div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a02dad7e9ae45a1751c4548dd9991a8b4"> 540</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a02dad7e9ae45a1751c4548dd9991a8b4">addToFullJoin</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid1, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid2)</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  fullJoin.insert(std::make_pair(tid1,tid2));</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  }</div><div class="line"><a name="l00544"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a6ead92486459ec7f94a8375c7f96faca"> 544</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a6ead92486459ec7f94a8375c7f96faca">addToPartial</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid1, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid2)</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  partialJoin.insert(std::make_pair(tid1,tid2));</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  }</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="line"><a name="l00551"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a2be89ac78712da78c215a33b3157ecd1"> 551</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2be89ac78712da78c215a33b3157ecd1">addSymmetricLoopJoin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cs, LoopBBs& lp)</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  cxtJoinInLoop[cs] = lp;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce"> 555</a></span>  <a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>;</div><div class="line"><a name="l00556"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba"> 556</a></span>  CxtStmtToAliveFlagMap <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>; </div><div class="line"><a name="l00557"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916"> 557</a></span>  CxtStmtWorkList <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">cxtStmtList</a>; </div><div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#abf5b499f93a658636d09a62d14a47cad"> 558</a></span>  CxtStmtToTIDMap <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#abf5b499f93a658636d09a62d14a47cad">directJoinMap</a>; </div><div class="line"><a name="l00559"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be"> 559</a></span>  CxtStmtToTIDMap <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>; </div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a63da48d338683ec95709a6bd95238707"> 560</a></span>  CxtStmtToLoopMap <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a63da48d338683ec95709a6bd95238707">cxtJoinInLoop</a>; </div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#aad3e722ecaa4a39aef0e1cabfa2b8019"> 561</a></span>  ThreadPairSet <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aad3e722ecaa4a39aef0e1cabfa2b8019">HBPair</a>; </div><div class="line"><a name="l00562"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833"> 562</a></span>  ThreadPairSet <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">HPPair</a>; </div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a4193a30050195cd9aaafd58511b66ccc"> 563</a></span>  ThreadPairSet <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4193a30050195cd9aaafd58511b66ccc">fullJoin</a>; </div><div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a3616d6e1649f9e451da0f7a44cffc1e3"> 564</a></span>  ThreadPairSet <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3616d6e1649f9e451da0f7a44cffc1e3">partialJoin</a>; </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> };</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="preprocessor">#endif </span><span class="comment">/* MHP_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1MHP_html_aed7f65ea3f046774eef36602cb41f178"><div class="ttname"><a href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">SVF::MHP::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtThreadStmt &cs)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00234">MHP.h:234</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1MHP_html"><div class="ttname"><a href="classSVF_1_1MHP.html">SVF::MHP</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00045">MHP.h:45</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1TCTNode_html_a5dd0cf88e381438d191b275314117561"><div class="ttname"><a href="classSVF_1_1TCTNode.html#a5dd0cf88e381438d191b275314117561">SVF::TCTNode::isMultiforked</a></div><div class="ttdeci">bool isMultiforked() const</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00120">TCT.h:120</a></div></div>
|
|
72
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
72
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00528">SparseBitVector.h:528</a></div></div>
|
|
73
73
|
<div class="ttc" id="classSVF_1_1MHP_html_aed0633101a35b43a1769261db14fb1a1"><div class="ttname"><a href="classSVF_1_1MHP.html#aed0633101a35b43a1769261db14fb1a1">SVF::MHP::getDirAndIndJoinedTid</a></div><div class="ttdeci">NodeBS getDirAndIndJoinedTid(const CallStrCxt &cxt, const SVFInstruction *call)</div><div class="ttdoc">Return thread id(s) which are directly or indirectly joined at this join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00479">MHP.cpp:479</a></div></div>
|
|
74
74
|
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aa31b3f3d51b963ccd475e66b77143dba"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">SVF::ForkJoinAnalysis::cxtStmtToAliveFlagMap</a></div><div class="ttdeci">CxtStmtToAliveFlagMap cxtStmtToAliveFlagMap</div><div class="ttdoc">flags for context-sensitive statements </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00556">MHP.h:556</a></div></div>
|
|
75
75
|
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a0ec0920d324604e3672db4d8dff93b1e"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a0ec0920d324604e3672db4d8dff93b1e">SVF::ForkJoinAnalysis::CxtStmtWorkList</a></div><div class="ttdeci">FIFOWorkList< CxtStmt > CxtStmtWorkList</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00306">MHP.h:306</a></div></div>
|
|
@@ -155,7 +155,7 @@ $(function() {
|
|
|
155
155
|
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">SVF::ForkJoinAnalysis::ValDomain</a></div><div class="ttdeci">ValDomain</div><div class="ttdoc">semilattice Empty==>TDDead==>TDAlive </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00293">MHP.h:293</a></div></div>
|
|
156
156
|
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac95b1600aa524c3e607eebcf9d50df0e"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac95b1600aa524c3e607eebcf9d50df0e">SVF::ForkJoinAnalysis::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &cxt, const SVFInstruction *call, const SVFFunction *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00483">MHP.h:483</a></div></div>
|
|
157
157
|
<div class="ttc" id="classSVF_1_1MHP_html_adff2785f9d46eb110ce5b429592b2a38"><div class="ttname"><a href="classSVF_1_1MHP.html#adff2785f9d46eb110ce5b429592b2a38">SVF::MHP::FuncPairToBool</a></div><div class="ttdeci">Map< FuncPair, bool > FuncPairToBool</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00061">MHP.h:61</a></div></div>
|
|
158
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a1b5abe09fd0fcd337385653cb47343c1"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">SVF::SparseBitVector::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
158
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a1b5abe09fd0fcd337385653cb47343c1"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">SVF::SparseBitVector::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01112">SparseBitVector.h:1112</a></div></div>
|
|
159
159
|
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab55532eefbcef639ced957ad82fbd340"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">SVF::ForkJoinAnalysis::isFullJoin</a></div><div class="ttdeci">bool isFullJoin(NodeID tid1, NodeID tid2)</div><div class="ttdoc">Whether t1 fully joins t2. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00350">MHP.h:350</a></div></div>
|
|
160
160
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html">SVF::ThreadCallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00160">ThreadCallGraph.h:160</a></div></div>
|
|
161
161
|
<div class="ttc" id="classSVF_1_1ThreadAPI_html_a4bacbfb6648de8196217c83b5d73b876"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a4bacbfb6648de8196217c83b5d73b876">SVF::ThreadAPI::isTDFork</a></div><div class="ttdeci">bool isTDFork(const SVFInstruction *inst) const</div><div class="ttdoc">Return true if this call create a new thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00129">ThreadAPI.h:129</a></div></div>
|
|
@@ -182,7 +182,7 @@ $(function() {
|
|
|
182
182
|
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2be89ac78712da78c215a33b3157ecd1"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2be89ac78712da78c215a33b3157ecd1">SVF::ForkJoinAnalysis::addSymmetricLoopJoin</a></div><div class="ttdeci">void addSymmetricLoopJoin(const CxtStmt &cs, LoopBBs &lp)</div><div class="ttdoc">Add inloop join. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00551">MHP.h:551</a></div></div>
|
|
183
183
|
<div class="ttc" id="classSVF_1_1MHP_html_a6c77349f168735888d0db4ac5b632da9"><div class="ttname"><a href="classSVF_1_1MHP.html#a6c77349f168735888d0db4ac5b632da9">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, const CxtThreadStmt &src)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00180">MHP.h:180</a></div></div>
|
|
184
184
|
<div class="ttc" id="classSVF_1_1MHP_html_a6b7133f1767c3636ce253c5325be5053"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b7133f1767c3636ce253c5325be5053">SVF::MHP::~MHP</a></div><div class="ttdeci">virtual ~MHP()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00054">MHP.cpp:54</a></div></div>
|
|
185
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html_abf76d8157c49ddba24bdc9dab3655772"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">SVF::SparseBitVector::begin</a></div><div class="ttdeci">iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
185
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html_abf76d8157c49ddba24bdc9dab3655772"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">SVF::SparseBitVector::begin</a></div><div class="ttdeci">iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01107">SparseBitVector.h:1107</a></div></div>
|
|
186
186
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList< CxtThreadStmt ></a></div></div>
|
|
187
187
|
<div class="ttc" id="classSVF_1_1MHP_html_a653460ed316804bea377eecdde412d36"><div class="ttname"><a href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">SVF::MHP::getInterleavingThreads</a></div><div class="ttdeci">const NodeBS & getInterleavingThreads(const CxtThreadStmt &cts)</div><div class="ttdoc">Get interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00114">MHP.h:114</a></div></div>
|
|
188
188
|
<div class="ttc" id="classSVF_1_1MHP_html_a8fecc443c4d92a36a9c50ec6a4f5dea8"><div class="ttname"><a href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">SVF::MHP::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00051">MHP.h:51</a></div></div>
|
|
@@ -193,7 +193,7 @@ $(function() {
|
|
|
193
193
|
<div class="ttc" id="classSVF_1_1MHP_html_ad8d3aa1a12fb1e8668eb4138fbe23b7d"><div class="ttname"><a href="classSVF_1_1MHP.html#ad8d3aa1a12fb1e8668eb4138fbe23b7d">SVF::MHP::popFromCTSWorkList</a></div><div class="ttdeci">CxtThreadStmt popFromCTSWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00238">MHP.h:238</a></div></div>
|
|
194
194
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
195
195
|
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab5678bd46e573070827cc413f0e0d5be"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">SVF::ForkJoinAnalysis::dirAndIndJoinMap</a></div><div class="ttdeci">CxtStmtToTIDMap dirAndIndJoinMap</div><div class="ttdoc">maps a context-sensitive join site to directly and indirectly joined thread ids </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00559">MHP.h:559</a></div></div>
|
|
196
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
196
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00454">SparseBitVector.h:454</a></div></div>
|
|
197
197
|
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ae9fe4c9382f13d339db3baa39d956b05"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ae9fe4c9382f13d339db3baa39d956b05">SVF::ForkJoinAnalysis::getExitInstOfParentRoutineFun</a></div><div class="ttdeci">const SVFInstruction * getExitInstOfParentRoutineFun(NodeID tid) const</div><div class="ttdoc">Get exit instruction of the start routine function of tid&#39;s parent thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00360">MHP.h:360</a></div></div>
|
|
198
198
|
<div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00182">TCT.h:182</a></div></div>
|
|
199
199
|
<div class="ttc" id="TCT_8h_html"><div class="ttname"><a href="TCT_8h.html">TCT.h</a></div></div>
|
|
@@ -212,7 +212,7 @@ $(function() {
|
|
|
212
212
|
<div class="ttc" id="classSVF_1_1MHP_html_a8b80036bab834fa104f64bd3ed3ac667"><div class="ttname"><a href="classSVF_1_1MHP.html#a8b80036bab834fa104f64bd3ed3ac667">SVF::MHP::getJoinInSymmetricLoop</a></div><div class="ttdeci">const LoopBBs & getJoinInSymmetricLoop(const CallStrCxt &cxt, const SVFInstruction *call) const</div><div class="ttdoc">Whether a context-sensitive join satisfies symmetric loop pattern. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00495">MHP.cpp:495</a></div></div>
|
|
213
213
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ae1323233941cdc9b99332e4b954a2217"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ae1323233941cdc9b99332e4b954a2217">SVF::PointerAnalysis::alias</a></div><div class="ttdeci">virtual AliasResult alias(const SVFValue *V1, const SVFValue *V2)=0</div><div class="ttdoc">Interface exposed to users of our pointer analysis, given Value infos. </div></div>
|
|
214
214
|
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a647ae6866bb37be850f0bdd5a7341188"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a647ae6866bb37be850f0bdd5a7341188">SVF::ForkJoinAnalysis::addToHBPair</a></div><div class="ttdeci">void addToHBPair(NodeID tid1, NodeID tid2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00532">MHP.h:532</a></div></div>
|
|
215
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
215
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00739">SparseBitVector.h:739</a></div></div>
|
|
216
216
|
<div class="ttc" id="classSVF_1_1MHP_html_ae9423c868ba4d26337428b96db9fc77b"><div class="ttname"><a href="classSVF_1_1MHP.html#ae9423c868ba4d26337428b96db9fc77b">SVF::MHP::updateAncestorThreads</a></div><div class="ttdeci">void updateAncestorThreads(NodeID tid)</div><div class="ttdoc">Update Ancestor and sibling threads. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00373">MHP.cpp:373</a></div></div>
|
|
217
217
|
<div class="ttc" id="classSVF_1_1ThreadAPI_html_a68b10ffa2775fe7d8c1476409c0f54ab"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a68b10ffa2775fe7d8c1476409c0f54ab">SVF::ThreadAPI::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const SVFInstruction *inst) const</div><div class="ttdoc">Return true if this call wait for a worker thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00223">ThreadAPI.h:223</a></div></div>
|
|
218
218
|
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00269">MHP.h:269</a></div></div>
|