svf-tools 1.0.450 → 1.0.451
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +5 -5
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/Andersen_8h_source.html +10 -10
- package/SVF-doxygen/html/html/Annotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/BDDExpr_8h_source.html +5 -5
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +2 -2
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +5 -5
- package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +6 -6
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +28 -28
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/html/CHG_8cpp.html +3 -3
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/CHG_8h_source.html +6 -6
- package/SVF-doxygen/html/html/CPPUtil_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +24 -24
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CSC_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ConsG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +6 -6
- package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +5 -5
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +30 -30
- package/SVF-doxygen/html/html/DCHG_8h_source.html +15 -15
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +6 -6
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +11 -11
- package/SVF-doxygen/html/html/DPItem_8h_source.html +5 -5
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +11 -11
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ExeState_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +23 -23
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +4 -4
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +5 -5
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +5 -5
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +4 -4
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +5 -5
- package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8cpp.html +1 -0
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -4
- package/SVF-doxygen/html/html/Graph2Json_8h_source.html +5 -5
- package/SVF-doxygen/html/html/GraphPrinter_8h.html +1 -0
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +6 -7
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/ICFG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +14 -14
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/LLVMModule_8h.html +2 -1
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +46 -45
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +28 -28
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +27 -27
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +11 -11
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MHP_8cpp.html +3 -3
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +26 -26
- package/SVF-doxygen/html/html/MHP_8h_source.html +10 -10
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +9 -9
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +12 -12
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/MTA_8h_source.html +8 -8
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +9 -9
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +9 -9
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +3 -3
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/PCG_8h_source.html +6 -6
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +7 -7
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +12 -12
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +17 -18
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +17 -17
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +9 -9
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PointsTo_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SCC_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +79 -42
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +44 -42
- package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +22 -25
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +73 -74
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -8
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +46 -54
- package/SVF-doxygen/html/html/SVFG_8h_source.html +46 -48
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +54 -54
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +49 -49
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +9 -9
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +9 -9
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +23 -23
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +8 -8
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +6 -5
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +4 -4
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +37 -37
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +10 -10
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/TCT_8h_source.html +19 -19
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +11 -10
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +6 -6
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +27 -27
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +5 -5
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -8
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +117 -120
- package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +8 -8
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +6 -6
- package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +2 -2
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +8 -8
- package/SVF-doxygen/html/html/WPASolver_8h_source.html +3 -3
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
- 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_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BDDExprManager.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +34 -35
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +53 -53
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +67 -67
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +15 -16
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +132 -132
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +65 -65
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +42 -42
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +154 -155
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +132 -166
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +177 -178
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +17 -19
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +147 -147
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +61 -61
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
- package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +7 -8
- package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
- package/SVF-doxygen/html/html/functions_f.html +14 -17
- package/SVF-doxygen/html/html/functions_func_f.html +0 -3
- package/SVF-doxygen/html/html/functions_func_g.html +6 -6
- package/SVF-doxygen/html/html/functions_func_s.html +1 -1
- package/SVF-doxygen/html/html/functions_g.html +6 -6
- package/SVF-doxygen/html/html/functions_i.html +4 -4
- package/SVF-doxygen/html/html/functions_n.html +4 -4
- package/SVF-doxygen/html/html/functions_o.html +3 -3
- package/SVF-doxygen/html/html/functions_p.html +7 -7
- package/SVF-doxygen/html/html/functions_s.html +13 -13
- package/SVF-doxygen/html/html/functions_t.html +5 -5
- package/SVF-doxygen/html/html/functions_type_t.html +2 -2
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_i.html +1 -1
- package/SVF-doxygen/html/html/globals_l.html +3 -0
- package/SVF-doxygen/html/html/globals_s.html +3 -3
- package/SVF-doxygen/html/html/globals_type.html +6 -0
- package/SVF-doxygen/html/html/globals_u.html +5 -2
- package/SVF-doxygen/html/html/namespaceSVF.html +119 -191
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +72 -72
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +44 -44
- package/SVF-doxygen/html/html/namespacemembers_l.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_t.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type.html +0 -12
- package/SVF-doxygen/html/html/namespacemembers_u.html +0 -3
- package/SVF-doxygen/html/html/search/all_10.js +6 -6
- package/SVF-doxygen/html/html/search/all_13.js +9 -10
- package/SVF-doxygen/html/html/search/all_14.js +7 -8
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +0 -1
- package/SVF-doxygen/html/html/search/all_7.js +2 -2
- package/SVF-doxygen/html/html/search/all_9.js +2 -2
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +4 -4
- package/SVF-doxygen/html/html/search/all_f.js +2 -2
- package/SVF-doxygen/html/html/search/functions_10.js +1 -1
- package/SVF-doxygen/html/html/search/functions_5.js +0 -1
- package/SVF-doxygen/html/html/search/functions_6.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_11.js +0 -1
- package/SVF-doxygen/html/html/search/typedefs_12.js +1 -2
- package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_b.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1Hash.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +5 -5
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +24 -24
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +4 -4
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01llvm_1_1SparseBitVector_3_01N_01_4_01_4.html +3 -3
- 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 +4 -4
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +6 -6
- package/include/Graphs/GraphPrinter.h +1 -0
- package/include/Graphs/SVFG.h +0 -5
- package/include/MSSA/MSSAMuChi.h +2 -2
- package/include/SABER/SaberCheckerAPI.h +1 -1
- package/include/SVF-FE/BasicTypes.h +4 -0
- package/include/SVF-FE/LLVMModule.h +1 -0
- package/include/Util/BasicTypes.h +0 -4
- package/include/Util/ExtAPI.h +2 -3
- package/include/Util/SVFBasicTypes.h +0 -2
- package/include/Util/ThreadAPI.h +2 -2
- package/lib/Graphs/SVFG.cpp +0 -22
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +14 -16
- package/lib/SABER/SaberSVFGBuilder.cpp +2 -2
- package/lib/SVF-FE/Graph2Json.cpp +3 -1
- package/lib/Util/ThreadAPI.cpp +4 -4
- package/package.json +1 -1
|
@@ -863,11 +863,11 @@ Private Attributes</h2></td></tr>
|
|
|
863
863
|
<p>Add inter-procedural context-sensitive lock </p>
|
|
864
864
|
|
|
865
865
|
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00130">130</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
866
|
-
<div class="fragment"><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ab468a6a0f1705c000dc4260097222b06">CxtLock</a> cxtlock(cxt,inst);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">cxtLockset</a>.insert(cxtlock);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"LockAnalysis Process new lock "</span>; cxtlock.dump());</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
866
|
+
<div class="fragment"><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ab468a6a0f1705c000dc4260097222b06">CxtLock</a> cxtlock(cxt,inst);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">cxtLockset</a>.insert(cxtlock);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"LockAnalysis Process new lock "</span>; cxtlock.dump());</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
867
867
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
868
868
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ab468a6a0f1705c000dc4260097222b06"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ab468a6a0f1705c000dc4260097222b06">SVF::LockAnalysis::CxtLock</a></div><div class="ttdeci">CxtStmt CxtLock</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00035">LockAnalysis.h:35</a></div></div>
|
|
869
869
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a3081e7c7165908ed4aa282f398c5236d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">SVF::LockAnalysis::cxtLockset</a></div><div class="ttdeci">CxtLockSet cxtLockset</div><div class="ttdoc">Context-sensitive locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00457">LockAnalysis.h:457</a></div></div>
|
|
870
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
870
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
871
871
|
</div><!-- fragment -->
|
|
872
872
|
</div>
|
|
873
873
|
</div>
|
|
@@ -1014,20 +1014,20 @@ Private Attributes</h2></td></tr>
|
|
|
1014
1014
|
<p>context-sensitive forward traversal from each lock site. Generate following results (1) context-sensitive lock site, (2) maps a context-sensitive lock site to its corresponding lock span. </p>
|
|
1015
1015
|
|
|
1016
1016
|
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00041">41</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1017
|
-
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aa8683de99ad02fb75b175b0bb54e5f7d">collectLockUnlocksites</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a271506d5032033efae684b0d729f5b3e">buildCandidateFuncSetforLock</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> lockStart = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tIntra-procedural LockAnalysis\n"</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tIntra-procedural LockAnalysis\n"</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a8a34f7544f22a87e1caf010c34abda75">analyzeIntraProcedualLock</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tCollect context-sensitive locks\n"</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tCollect context-sensitive locks\n"</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ae03db88ef0ad0da2c31cf1623b32165f">collectCxtLock</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tInter-procedural LockAnalysis\n"</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tInter-procedural LockAnalysis\n"</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a00ccd89eff3fe8fec397df101f927cbe">analyzeLockSpanCxtStmt</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> lockEnd = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2">lockTime</a> += (lockEnd - lockStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a78b3b44f2c0dc94dc1363ca57ee76d66">Options::LockValid</a>)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a935128c9952714fcc98febed491ee85d">validateResults</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1017
|
+
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aa8683de99ad02fb75b175b0bb54e5f7d">collectLockUnlocksites</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a271506d5032033efae684b0d729f5b3e">buildCandidateFuncSetforLock</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> lockStart = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tIntra-procedural LockAnalysis\n"</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tIntra-procedural LockAnalysis\n"</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a8a34f7544f22a87e1caf010c34abda75">analyzeIntraProcedualLock</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tCollect context-sensitive locks\n"</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tCollect context-sensitive locks\n"</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ae03db88ef0ad0da2c31cf1623b32165f">collectCxtLock</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tInter-procedural LockAnalysis\n"</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tInter-procedural LockAnalysis\n"</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a00ccd89eff3fe8fec397df101f927cbe">analyzeLockSpanCxtStmt</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> lockEnd = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2">lockTime</a> += (lockEnd - lockStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a78b3b44f2c0dc94dc1363ca57ee76d66">Options::LockValid</a>)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a935128c9952714fcc98febed491ee85d">validateResults</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
1018
1018
|
<div class="ttc" id="classSVF_1_1Options_html_a78b3b44f2c0dc94dc1363ca57ee76d66"><div class="ttname"><a href="classSVF_1_1Options.html#a78b3b44f2c0dc94dc1363ca57ee76d66">SVF::Options::LockValid</a></div><div class="ttdeci">static const llvm::cl::opt< bool > LockValid</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00184">Options.h:184</a></div></div>
|
|
1019
1019
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a8a34f7544f22a87e1caf010c34abda75"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a8a34f7544f22a87e1caf010c34abda75">SVF::LockAnalysis::analyzeIntraProcedualLock</a></div><div class="ttdeci">void analyzeIntraProcedualLock()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00142">LockAnalysis.cpp:142</a></div></div>
|
|
1020
1020
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
1021
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1021
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00181">SVFBasicTypes.h:181</a></div></div>
|
|
1022
1022
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_aa8683de99ad02fb75b175b0bb54e5f7d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aa8683de99ad02fb75b175b0bb54e5f7d">SVF::LockAnalysis::collectLockUnlocksites</a></div><div class="ttdeci">void collectLockUnlocksites()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00071">LockAnalysis.cpp:71</a></div></div>
|
|
1023
1023
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a935128c9952714fcc98febed491ee85d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a935128c9952714fcc98febed491ee85d">SVF::LockAnalysis::validateResults</a></div><div class="ttdeci">void validateResults()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00718">LockAnalysis.cpp:718</a></div></div>
|
|
1024
1024
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ae03db88ef0ad0da2c31cf1623b32165f"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae03db88ef0ad0da2c31cf1623b32165f">SVF::LockAnalysis::collectCxtLock</a></div><div class="ttdeci">void collectCxtLock()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00257">LockAnalysis.cpp:257</a></div></div>
|
|
1025
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1025
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00159">SVFBasicTypes.h:159</a></div></div>
|
|
1026
1026
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_adadee129c04b82576b4ca3c7594cdcb2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2">SVF::LockAnalysis::lockTime</a></div><div class="ttdeci">double lockTime</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00492">LockAnalysis.h:492</a></div></div>
|
|
1027
1027
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a00ccd89eff3fe8fec397df101f927cbe"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a00ccd89eff3fe8fec397df101f927cbe">SVF::LockAnalysis::analyzeLockSpanCxtStmt</a></div><div class="ttdeci">void analyzeLockSpanCxtStmt()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00329">LockAnalysis.cpp:329</a></div></div>
|
|
1028
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1028
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
1029
1029
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a271506d5032033efae684b0d729f5b3e"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a271506d5032033efae684b0d729f5b3e">SVF::LockAnalysis::buildCandidateFuncSetforLock</a></div><div class="ttdeci">void buildCandidateFuncSetforLock()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00094">LockAnalysis.cpp:94</a></div></div>
|
|
1030
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1030
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
|
|
1031
1031
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a3c4eaa1695ea13405911ae1621f98edc"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">SVF::PTAStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00114">PTAStat.cpp:114</a></div></div>
|
|
1032
1032
|
</div><!-- fragment -->
|
|
1033
1033
|
</div>
|
|
@@ -1052,7 +1052,7 @@ Private Attributes</h2></td></tr>
|
|
|
1052
1052
|
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00142">142</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1053
1053
|
<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// Identify the protected Instructions.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">for</span> (InstSet::const_iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>.begin(), ie = <a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>.end(); it != ie; ++it)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *lockSite = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>>(*it);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(lockSite && <span class="stringliteral">"Lock acquire instruction must be CallInst"</span>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// Perform forward traversal</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">InstSet</a> forwardInsts;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">InstSet</a> backwardInsts;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">InstSet</a> unlockSet;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">bool</span> forward = <a class="code" href="classSVF_1_1LockAnalysis.html#a6febb0bb12f4983cd54b3bd310ce65d2">intraForwardTraverse</a>(lockSite,unlockSet,forwardInsts);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordtype">bool</span> backward = <a class="code" href="classSVF_1_1LockAnalysis.html#a5f693c893f3701e1e025881f91193d53">intraBackwardTraverse</a>(unlockSet,backwardInsts);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span>(forward && backward)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ab28428444170091d2c65572263b9f40b">addIntraLock</a>(lockSite,forwardInsts);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(forward && !backward)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a0cc6e4b4ab78f3c54b68fe35adb02957">addCondIntraLock</a>(lockSite,forwardInsts);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> }</div><div class="ttc" id="classSVF_1_1LockAnalysis_html_a87c412a54f48e5314454cd1d44ef9b0e"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">SVF::LockAnalysis::locksites</a></div><div class="ttdeci">InstSet locksites</div><div class="ttdoc">Record all visited clps. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00474">LockAnalysis.h:474</a></div></div>
|
|
1054
1054
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1055
|
-
<div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1055
|
+
<div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
1056
1056
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a0cc6e4b4ab78f3c54b68fe35adb02957"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0cc6e4b4ab78f3c54b68fe35adb02957">SVF::LockAnalysis::addCondIntraLock</a></div><div class="ttdeci">void addCondIntraLock(const Instruction *lockSite, const InstSet &stmts)</div><div class="ttdoc">Add intra-procedural lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00099">LockAnalysis.h:99</a></div></div>
|
|
1057
1057
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a6febb0bb12f4983cd54b3bd310ce65d2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a6febb0bb12f4983cd54b3bd310ce65d2">SVF::LockAnalysis::intraForwardTraverse</a></div><div class="ttdeci">bool intraForwardTraverse(const Instruction *lock, InstSet &unlockset, InstSet &forwardInsts)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00170">LockAnalysis.cpp:170</a></div></div>
|
|
1058
1058
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a5f693c893f3701e1e025881f91193d53"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a5f693c893f3701e1e025881f91193d53">SVF::LockAnalysis::intraBackwardTraverse</a></div><div class="ttdeci">bool intraBackwardTraverse(const InstSet &unlockset, InstSet &backwardInsts)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00213">LockAnalysis.cpp:213</a></div></div>
|
|
@@ -1081,15 +1081,15 @@ Private Attributes</h2></td></tr>
|
|
|
1081
1081
|
<div class="fragment"><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a561bb2fbfbeee9117efad7c7c70871d8">FunSet</a> entryFuncSet = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a692a74188f141ffbdbb859ecae8b07ab">getEntryProcs</a>();</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">for</span> (FunSet::const_iterator it = entryFuncSet.begin(), eit = entryFuncSet.end(); it != eit; ++it)</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">isLockCandidateFun</a>(*it))</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cxtstmt(cxt, &((*it)->front().front()));</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736">pushToCTSWorkList</a>(cxtstmt);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">while</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cts = <a class="code" href="classSVF_1_1LockAnalysis.html#a469bf90e852061a7cd8551066d6be0d1">popFromCTSWorkList</a>();</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aaa0f33f19d9f80eee98289119ba907d2">touchCxtStmt</a>(cts);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>[curInst].insert(cts);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nVisit cxtStmt: "</span>);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, cts.<a class="code" href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">dump</a>());</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nIts cxt lock sets: "</span>);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="classSVF_1_1LockAnalysis.html#ac1b42b0a53feae04f848e5b0828ff01a">printLocks</a>(cts));</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a6e34f3138e8ee558bb00d9d808afba16">isTDFork</a>(curInst))</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>  <a class="code" href="classSVF_1_1LockAnalysis.html#a52e79d50288bfa2d146072be53ed058b">handleFork</a>(cts);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">isTDAcquire</a>(curInst))</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a6c918786d065309e8a7b13759f410a09">hasCxtLock</a>(cts) && <span class="stringliteral">"context-sensitive lock not found!!"</span>);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a718d6f2f55c1e2e7eb619c3e056ab458">addCxtStmtToSpan</a>(cts,cts))</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(cts);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed">isTDRelease</a>(curInst))</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>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a0b21446e6d5dfc1b5d0ebd75895225dd">removeCxtStmtToSpan</a>(cts,cts))</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(cts);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<CallInst>(curInst) && !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(curInst))</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a97b186f9417144557bb17c41d515a9f4">handleCall</a>(cts);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ReturnInst>(curInst))</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#acc3d402c68b9c22ab6d576b38c994fc6">handleRet</a>(cts);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(cts);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> }</div><div class="ttc" id="classSVF_1_1LockAnalysis_html_aaa0f33f19d9f80eee98289119ba907d2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aaa0f33f19d9f80eee98289119ba907d2">SVF::LockAnalysis::touchCxtStmt</a></div><div class="ttdeci">void touchCxtStmt(CxtStmt &cts)</div><div class="ttdoc">Touch this context statement. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00233">LockAnalysis.h:233</a></div></div>
|
|
1082
1082
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a0b21446e6d5dfc1b5d0ebd75895225dd"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0b21446e6d5dfc1b5d0ebd75895225dd">SVF::LockAnalysis::removeCxtStmtToSpan</a></div><div class="ttdeci">bool removeCxtStmtToSpan(CxtStmt &cts, const CxtLock &cl)</div><div class="ttdoc">Add context-sensitive statement. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00217">LockAnalysis.h:217</a></div></div>
|
|
1083
1083
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a4c76b3fb18248081dc1affbc33940164"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">SVF::LockAnalysis::isLockCandidateFun</a></div><div class="ttdeci">bool isLockCandidateFun(const Function *fun) const</div><div class="ttdoc">Return true if it is a candidate function. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00174">LockAnalysis.h:174</a></div></div>
|
|
1084
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1084
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
1085
1085
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1086
1086
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
1087
1087
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a718d6f2f55c1e2e7eb619c3e056ab458"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a718d6f2f55c1e2e7eb619c3e056ab458">SVF::LockAnalysis::addCxtStmtToSpan</a></div><div class="ttdeci">bool addCxtStmtToSpan(const CxtStmt &cts, const CxtLock &cl)</div><div class="ttdoc">Add context-sensitive statement. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00211">LockAnalysis.h:211</a></div></div>
|
|
1088
1088
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a2c4a69b0f2381142c172b3043943c79d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">SVF::LockAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00447">LockAnalysis.h:447</a></div></div>
|
|
1089
1089
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
|
|
1090
1090
|
<div class="ttc" id="classSVF_1_1TCT_html_a692a74188f141ffbdbb859ecae8b07ab"><div class="ttname"><a href="classSVF_1_1TCT.html#a692a74188f141ffbdbb859ecae8b07ab">SVF::TCT::getEntryProcs</a></div><div class="ttdeci">const FunSet & getEntryProcs() const</div><div class="ttdoc">Get marked candidate functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00213">TCT.h:213</a></div></div>
|
|
1091
|
-
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1092
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1091
|
+
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
1092
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
1093
1093
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a109293f282e9b920b0b13c58026f6f1d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">SVF::LockAnalysis::cxtStmtList</a></div><div class="ttdeci">CxtStmtWorkList cxtStmtList</div><div class="ttdoc">context-sensitive statement worklist </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00450">LockAnalysis.h:450</a></div></div>
|
|
1094
1094
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a6e34f3138e8ee558bb00d9d808afba16"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a6e34f3138e8ee558bb00d9d808afba16">SVF::LockAnalysis::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a lock site. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00421">LockAnalysis.h:421</a></div></div>
|
|
1095
1095
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a6c918786d065309e8a7b13759f410a09"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a6c918786d065309e8a7b13759f410a09">SVF::LockAnalysis::hasCxtLock</a></div><div class="ttdeci">bool hasCxtLock(const CxtLock &cxtLock) const</div><div class="ttdoc">Get context-sensitive lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00138">LockAnalysis.h:138</a></div></div>
|
|
@@ -1105,7 +1105,7 @@ Private Attributes</h2></td></tr>
|
|
|
1105
1105
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a56e2767c327a383db09dca96edb19614"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">SVF::CxtStmt::dump</a></div><div class="ttdeci">void dump() const</div><div class="ttdoc">Dump CxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00109">CxtStmt.h:109</a></div></div>
|
|
1106
1106
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ae8715683c7dfddc7b30caf6bf2b78296"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">SVF::LockAnalysis::instToCxtStmtSet</a></div><div class="ttdeci">InstToCxtStmtSet instToCxtStmtSet</div><div class="ttdoc">Map a statement to all its context-sensitive statements. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00453">LockAnalysis.h:453</a></div></div>
|
|
1107
1107
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a5521de9933ce74d0954a942dfceae772"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">SVF::LockAnalysis::isTDAcquire</a></div><div class="ttdeci">bool isTDAcquire(const Instruction *call)</div><div class="ttdoc">Whether it is a lock site. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00426">LockAnalysis.h:426</a></div></div>
|
|
1108
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1108
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
1109
1109
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a52e79d50288bfa2d146072be53ed058b"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a52e79d50288bfa2d146072be53ed058b">SVF::LockAnalysis::handleFork</a></div><div class="ttdeci">void handleFork(const CxtStmt &cts)</div><div class="ttdoc">Handle fork. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00405">LockAnalysis.cpp:405</a></div></div>
|
|
1110
1110
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_aa5b3666fbaef262981626952f1658736"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736">SVF::LockAnalysis::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtStmt &cs)</div><div class="ttdoc">Worklist operations. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00402">LockAnalysis.h:402</a></div></div>
|
|
1111
1111
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00072">LLVMUtil.h:72</a></div></div>
|
|
@@ -1138,14 +1138,14 @@ Private Attributes</h2></td></tr>
|
|
|
1138
1138
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
|
|
1139
1139
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a2c4a69b0f2381142c172b3043943c79d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">SVF::LockAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00447">LockAnalysis.h:447</a></div></div>
|
|
1140
1140
|
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00156">TCT.h:156</a></div></div>
|
|
1141
|
-
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1141
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1142
1142
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
|
|
1143
1143
|
<div class="ttc" id="classSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00214">GenericGraph.h:214</a></div></div>
|
|
1144
1144
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_adf17f5699c9f40ffc8837e813e3af3ec"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">SVF::PTACallGraphNode::const_iterator</a></div><div class="ttdeci">PTACallGraphEdge::CallGraphEdgeSet::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00180">PTACallGraph.h:180</a></div></div>
|
|
1145
1145
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a959445c97605953fbdebbbd999437a09"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">SVF::PTACallGraphNode::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdoc">Get function of this call node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00193">PTACallGraph.h:193</a></div></div>
|
|
1146
1146
|
<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>
|
|
1147
1147
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
|
|
1148
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1148
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00191">BasicTypes.h:191</a></div></div>
|
|
1149
1149
|
<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#l00167">TCT.h:167</a></div></div>
|
|
1150
1150
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
1151
1151
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00174">WorkList.h:174</a></div></div>
|
|
@@ -1202,13 +1202,13 @@ Private Attributes</h2></td></tr>
|
|
|
1202
1202
|
<div class="fragment"><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a561bb2fbfbeee9117efad7c7c70871d8">FunSet</a> entryFuncSet = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a692a74188f141ffbdbb859ecae8b07ab">getEntryProcs</a>();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">for</span> (FunSet::const_iterator it = entryFuncSet.begin(), eit = entryFuncSet.end(); it != eit; ++it)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">isLockCandidateFun</a>(*it))</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">CxtLockProc</a> t(cxt, <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(*it));</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171">pushToCTPWorkList</a>(t);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">while</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e">clpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">CxtLockProc</a> clp = <a class="code" href="classSVF_1_1LockAnalysis.html#ac3de5acfb887c17ebf1213a1c2c38b58">popFromCTPWorkList</a>();</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgNode = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(clp.getProc());</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="comment">// lzh TODO.</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">isLockCandidateFun</a>(cgNode-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgNode-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), neit = cgNode-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); nit != neit; nit++)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* cgEdge = (*nit);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator cit = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">directCallsBegin</a>(), ecit = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">directCallsEnd</a>();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  cit != ecit; ++cit)</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>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nCollecting CxtLocks: handling direct call:"</span> << **cit << <span class="stringliteral">"\t"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getName()</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  << <span class="stringliteral">"-->"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getName() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ab99ef73905f35d4c20ca408586fc8680">handleCallRelation</a>(clp, cgEdge, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*cit)->getCallSite()));</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator ind = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">indirectCallsBegin</a>(), eind = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">indirectCallsEnd</a>();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  ind != eind; ++ind)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nCollecting CxtLocks: handling indirect call:"</span> << **ind << <span class="stringliteral">"\t"</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getName() << <span class="stringliteral">"-->"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getName()</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ab99ef73905f35d4c20ca408586fc8680">handleCallRelation</a>(clp, cgEdge, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*ind)->getCallSite()));</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
1203
1203
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a4c76b3fb18248081dc1affbc33940164"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">SVF::LockAnalysis::isLockCandidateFun</a></div><div class="ttdeci">bool isLockCandidateFun(const Function *fun) const</div><div class="ttdoc">Return true if it is a candidate function. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00174">LockAnalysis.h:174</a></div></div>
|
|
1204
1204
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ac3de5acfb887c17ebf1213a1c2c38b58"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac3de5acfb887c17ebf1213a1c2c38b58">SVF::LockAnalysis::popFromCTPWorkList</a></div><div class="ttdeci">CxtLockProc popFromCTPWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00389">LockAnalysis.h:389</a></div></div>
|
|
1205
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1205
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
1206
1206
|
<div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00202">GenericGraph.h:202</a></div></div>
|
|
1207
1207
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
1208
1208
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a494bc8bacca5ca8d266286f3fb303495"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">SVF::PTACallGraphEdge::indirectCallsEnd</a></div><div class="ttdeci">CallInstSet::const_iterator indirectCallsEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00135">PTACallGraph.h:135</a></div></div>
|
|
1209
1209
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a2c4a69b0f2381142c172b3043943c79d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">SVF::LockAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00447">LockAnalysis.h:447</a></div></div>
|
|
1210
1210
|
<div class="ttc" id="classSVF_1_1TCT_html_a692a74188f141ffbdbb859ecae8b07ab"><div class="ttname"><a href="classSVF_1_1TCT.html#a692a74188f141ffbdbb859ecae8b07ab">SVF::TCT::getEntryProcs</a></div><div class="ttdeci">const FunSet & getEntryProcs() const</div><div class="ttdoc">Get marked candidate functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00213">TCT.h:213</a></div></div>
|
|
1211
|
-
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1211
|
+
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
1212
1212
|
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00156">TCT.h:156</a></div></div>
|
|
1213
1213
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
|
|
1214
1214
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_afff2c5699e08badf5265e8183b18a02e"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e">SVF::LockAnalysis::clpList</a></div><div class="ttdeci">CxtLockProcVec clpList</div><div class="ttdoc">Following data structures are used for collecting context-sensitive locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00468">LockAnalysis.h:468</a></div></div>
|
|
@@ -1223,12 +1223,12 @@ Private Attributes</h2></td></tr>
|
|
|
1223
1223
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ad855d1de318766ac305a10bfdae4da82"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">SVF::LockAnalysis::CxtLockProc</a></div><div class="ttdeci">CxtProc CxtLockProc</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00036">LockAnalysis.h:36</a></div></div>
|
|
1224
1224
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a750e50a9022451e406c4819979edffa5"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">SVF::PTACallGraphEdge::directCallsBegin</a></div><div class="ttdeci">CallInstSet::const_iterator directCallsBegin() const</div><div class="ttdoc">Iterators for direct and indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00122">PTACallGraph.h:122</a></div></div>
|
|
1225
1225
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a96a6cfddc8f7115294e8ad49a097b938"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">SVF::LockAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00441">LockAnalysis.h:441</a></div></div>
|
|
1226
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1226
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00191">BasicTypes.h:191</a></div></div>
|
|
1227
1227
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00217">SVFUtil.h:217</a></div></div>
|
|
1228
1228
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
1229
1229
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00206">GenericGraph.h:206</a></div></div>
|
|
1230
1230
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_afbdb582d20ab953b2de1f3efacb74679"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">SVF::PTACallGraphEdge::indirectCallsBegin</a></div><div class="ttdeci">CallInstSet::const_iterator indirectCallsBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00131">PTACallGraph.h:131</a></div></div>
|
|
1231
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1231
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
1232
1232
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ab99ef73905f35d4c20ca408586fc8680"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ab99ef73905f35d4c20ca408586fc8680">SVF::LockAnalysis::handleCallRelation</a></div><div class="ttdeci">void handleCallRelation(CxtLockProc &clp, const PTACallGraphEdge *cgEdge, CallSite call)</div><div class="ttdoc">Handle call relations. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00306">LockAnalysis.cpp:306</a></div></div>
|
|
1233
1233
|
</div><!-- fragment -->
|
|
1234
1234
|
</div>
|
|
@@ -1256,13 +1256,13 @@ Private Attributes</h2></td></tr>
|
|
|
1256
1256
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
|
|
1257
1257
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a2c4a69b0f2381142c172b3043943c79d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">SVF::LockAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00447">LockAnalysis.h:447</a></div></div>
|
|
1258
1258
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
|
|
1259
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1259
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
1260
1260
|
<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>
|
|
1261
1261
|
<div class="ttc" id="classSVF_1_1TCT_html_aabc2c84e951ed9ae64207e379acb3074"><div class="ttname"><a href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">SVF::TCT::getSVFModule</a></div><div class="ttdeci">SVFModule * getSVFModule() const</div><div class="ttdoc">Get SVFFModule. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00161">TCT.h:161</a></div></div>
|
|
1262
1262
|
<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#l00167">TCT.h:167</a></div></div>
|
|
1263
1263
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00155">SVFModule.h:155</a></div></div>
|
|
1264
1264
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a709371b13dcf500277f8bc275bdb23c7"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVF::SVFModule::iterator</a></div><div class="ttdeci">FunctionSetType::iterator iterator</div><div class="ttdoc">Iterators type def. </div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00051">SVFModule.h:51</a></div></div>
|
|
1265
|
-
<div class="ttc" id="namespaceSVF_html_a255af6ff30782cb9a548feadb0fe7d6b"><div class="ttname"><a href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">SVF::inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1265
|
+
<div class="ttc" id="namespaceSVF_html_a255af6ff30782cb9a548feadb0fe7d6b"><div class="ttname"><a href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">SVF::inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00147">BasicTypes.h:147</a></div></div>
|
|
1266
1266
|
<div class="ttc" id="classSVF_1_1ThreadAPI_html_a38adae633d5aceddcca3b3a23ad66db9"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a38adae633d5aceddcca3b3a23ad66db9">SVF::ThreadAPI::isTDRelease</a></div><div class="ttdeci">bool isTDRelease(const Instruction *inst) const</div><div class="ttdoc">Return true if this call release a lock. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00296">ThreadAPI.h:296</a></div></div>
|
|
1267
1267
|
</div><!-- fragment -->
|
|
1268
1268
|
</div>
|
|
@@ -1594,18 +1594,18 @@ Private Attributes</h2></td></tr>
|
|
|
1594
1594
|
<p>Handle call. </p>
|
|
1595
1595
|
|
|
1596
1596
|
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00427">427</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1597
|
-
<div class="fragment"><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast<CallInst>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->hasCallGraphEdge(cbn))</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallEdgeBegin(cbn), ecgIt = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallEdgeEnd(cbn);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)->getDstNode()->getFunction();</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">pushCxt</a>(newCxt, call, callee);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, &(callee->getEntryBlock().front()));</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> }</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1598
|
-
<div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1597
|
+
<div class="fragment"><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast<CallInst>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->hasCallGraphEdge(cbn))</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallEdgeBegin(cbn), ecgIt = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallEdgeEnd(cbn);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)->getDstNode()->getFunction();</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">pushCxt</a>(newCxt, call, callee);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, &(callee->getEntryBlock().front()));</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> }</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
|
|
1598
|
+
<div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
1599
1599
|
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00151">TCT.h:151</a></div></div>
|
|
1600
1600
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a2c4a69b0f2381142c172b3043943c79d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">SVF::LockAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00447">LockAnalysis.h:447</a></div></div>
|
|
1601
1601
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
|
|
1602
|
-
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1603
|
-
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1602
|
+
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
1603
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1604
1604
|
<div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
|
|
1605
1605
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a96a6cfddc8f7115294e8ad49a097b938"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">SVF::LockAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00441">LockAnalysis.h:441</a></div></div>
|
|
1606
1606
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt & getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
|
|
1607
1607
|
<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>
|
|
1608
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1608
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00191">BasicTypes.h:191</a></div></div>
|
|
1609
1609
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a7d9fd3ddcadd84969b57491181983b17"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">SVF::LockAnalysis::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00516">LockAnalysis.cpp:516</a></div></div>
|
|
1610
1610
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a375cb175ec0068bacaa64cf40a49d485"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">SVF::LockAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &tgr, const CxtStmt &src)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00337">LockAnalysis.h:337</a></div></div>
|
|
1611
1611
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00072">LLVMUtil.h:72</a></div></div>
|
|
@@ -1656,20 +1656,20 @@ Private Attributes</h2></td></tr>
|
|
|
1656
1656
|
<p>Handling call relations when collecting context-sensitive locks </p>
|
|
1657
1657
|
|
|
1658
1658
|
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00306">306</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1659
|
-
<div class="fragment"><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt(clp.getContext());</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">isTDAcquire</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>()))</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a177b10a617c275a9c2c2ed5e9b10d78a">addCxtLock</a>(cxt,cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">pushCxt</a>(cxt, cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>(), callee);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">CxtLockProc</a> newclp(cxt, svfcallee);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171">pushToCTPWorkList</a>(newclp))</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>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"LockAnalysis Process CallRet old clp --"</span>; clp.dump());</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"LockAnalysis Process CallRet new clp --"</span>; newclp.dump());</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> }</div><div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1660
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1661
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1662
|
-
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1659
|
+
<div class="fragment"><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt(clp.getContext());</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">isTDAcquire</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>()))</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a177b10a617c275a9c2c2ed5e9b10d78a">addCxtLock</a>(cxt,cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">pushCxt</a>(cxt, cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>(), callee);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">CxtLockProc</a> newclp(cxt, svfcallee);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171">pushToCTPWorkList</a>(newclp))</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>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"LockAnalysis Process CallRet old clp --"</span>; clp.dump());</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"LockAnalysis Process CallRet new clp --"</span>; newclp.dump());</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> }</div><div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
1660
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
|
|
1661
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00258">BasicTypes.h:258</a></div></div>
|
|
1662
|
+
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
1663
1663
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
|
|
1664
|
-
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1664
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1665
1665
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a8a6559c998c0b6f8e851d10ae2ab4171"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171">SVF::LockAnalysis::pushToCTPWorkList</a></div><div class="ttdeci">bool pushToCTPWorkList(const CxtLockProc &clp)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00380">LockAnalysis.h:380</a></div></div>
|
|
1666
1666
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
1667
1667
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a177b10a617c275a9c2c2ed5e9b10d78a"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a177b10a617c275a9c2c2ed5e9b10d78a">SVF::LockAnalysis::addCxtLock</a></div><div class="ttdeci">void addCxtLock(const CallStrCxt &cxt, const Instruction *inst)</div><div class="ttdoc">Context-sensitive locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00130">LockAnalysis.h:130</a></div></div>
|
|
1668
1668
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ad855d1de318766ac305a10bfdae4da82"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">SVF::LockAnalysis::CxtLockProc</a></div><div class="ttdeci">CxtProc CxtLockProc</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00036">LockAnalysis.h:36</a></div></div>
|
|
1669
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1669
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00191">BasicTypes.h:191</a></div></div>
|
|
1670
1670
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a7d9fd3ddcadd84969b57491181983b17"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">SVF::LockAnalysis::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00516">LockAnalysis.cpp:516</a></div></div>
|
|
1671
1671
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a5521de9933ce74d0954a942dfceae772"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">SVF::LockAnalysis::isTDAcquire</a></div><div class="ttdeci">bool isTDAcquire(const Instruction *call)</div><div class="ttdoc">Whether it is a lock site. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00426">LockAnalysis.h:426</a></div></div>
|
|
1672
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1672
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
1673
1673
|
</div><!-- fragment -->
|
|
1674
1674
|
</div>
|
|
1675
1675
|
</div>
|
|
@@ -1700,18 +1700,18 @@ Private Attributes</h2></td></tr>
|
|
|
1700
1700
|
<p>Handle fork. </p>
|
|
1701
1701
|
|
|
1702
1702
|
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00405">405</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1703
|
-
<div class="fragment"><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast<CallInst>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->hasThreadForkEdge(cbn))</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">for</span> (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getForkEdgeBegin(cbn),</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  ecgIt = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getForkEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)->getDstNode()->getFunction();</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, &(callee->getEntryBlock().front()));</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</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>  }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(cts);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> }</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1704
|
-
<div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1703
|
+
<div class="fragment"><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast<CallInst>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->hasThreadForkEdge(cbn))</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">for</span> (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getForkEdgeBegin(cbn),</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  ecgIt = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getForkEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)->getDstNode()->getFunction();</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, &(callee->getEntryBlock().front()));</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</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>  }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(cts);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> }</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
|
|
1704
|
+
<div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
1705
1705
|
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00151">TCT.h:151</a></div></div>
|
|
1706
1706
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a2c4a69b0f2381142c172b3043943c79d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">SVF::LockAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00447">LockAnalysis.h:447</a></div></div>
|
|
1707
1707
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
|
|
1708
|
-
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1709
|
-
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1708
|
+
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
1709
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1710
1710
|
<div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
|
|
1711
1711
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a96a6cfddc8f7115294e8ad49a097b938"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">SVF::LockAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00441">LockAnalysis.h:441</a></div></div>
|
|
1712
1712
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt & getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
|
|
1713
1713
|
<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>
|
|
1714
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1714
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00191">BasicTypes.h:191</a></div></div>
|
|
1715
1715
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a711760ebaed0437176f4f9d314e9929c"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">SVF::LockAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00500">LockAnalysis.cpp:500</a></div></div>
|
|
1716
1716
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a7d9fd3ddcadd84969b57491181983b17"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">SVF::LockAnalysis::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00516">LockAnalysis.cpp:516</a></div></div>
|
|
1717
1717
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a375cb175ec0068bacaa64cf40a49d485"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">SVF::LockAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &tgr, const CxtStmt &src)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00337">LockAnalysis.h:337</a></div></div>
|
|
@@ -1747,8 +1747,8 @@ Private Attributes</h2></td></tr>
|
|
|
1747
1747
|
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00500">500</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1748
1748
|
<div class="fragment"><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</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>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> nextInsts;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(curInst, nextInsts);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</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>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt, *nit);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2f9959fa23ab4bdc65ca36fbda8c1b70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">SVF::SVFUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const Instruction *> &instList)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00216">LLVMUtil.cpp:216</a></div></div>
|
|
1749
1749
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
|
|
1750
|
-
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1751
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1750
|
+
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
1751
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
1752
1752
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_aeb4b15ecc4ba1a0ca8794d304d1895cb"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">SVF::LockAnalysis::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00039">LockAnalysis.h:39</a></div></div>
|
|
1753
1753
|
<div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
|
|
1754
1754
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt & getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
|
|
@@ -1785,13 +1785,13 @@ Private Attributes</h2></td></tr>
|
|
|
1785
1785
|
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00451">451</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1786
1786
|
<div class="fragment"><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> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(curInst->getParent()->getParent());</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun);</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>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = curFunNode-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = curFunNode-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it != eit; ++it)</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">if</span> (SVFUtil::isa<ThreadForkEdge>(edge) || SVFUtil::isa<ThreadJoinEdge>(edge))</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)->directCallsBegin(), ecit = (edge)->directCallsEnd(); cit != ecit;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  ++cit)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = (*cit)->getCallSite();</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a3299f1fe234e1d6b4341498575bddcbb">matchCxt</a>(newCxt, inst, curFunNode-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> nextInsts;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(inst, nextInsts);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, *nit);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  }</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>  <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)->indirectCallsBegin(), ecit = (edge)->indirectCallsEnd();</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  cit != ecit; ++cit)</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = (*cit)->getCallSite();</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a3299f1fe234e1d6b4341498575bddcbb">matchCxt</a>(newCxt, inst, curFunNode-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</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>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> nextInsts;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(inst, nextInsts);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</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>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, *nit);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</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>  }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
1787
1787
|
<div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy & getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00182">GenericGraph.h:182</a></div></div>
|
|
1788
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1788
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
|
|
1789
1789
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2f9959fa23ab4bdc65ca36fbda8c1b70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">SVF::SVFUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const Instruction *> &instList)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00216">LLVMUtil.cpp:216</a></div></div>
|
|
1790
1790
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a2c4a69b0f2381142c172b3043943c79d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">SVF::LockAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00447">LockAnalysis.h:447</a></div></div>
|
|
1791
1791
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
|
|
1792
|
-
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
1792
|
+
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
1793
1793
|
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00156">TCT.h:156</a></div></div>
|
|
1794
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1794
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
1795
1795
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html">SVF::PTACallGraphEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00051">PTACallGraph.h:51</a></div></div>
|
|
1796
1796
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a3299f1fe234e1d6b4341498575bddcbb"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a3299f1fe234e1d6b4341498575bddcbb">SVF::LockAnalysis::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00535">LockAnalysis.cpp:535</a></div></div>
|
|
1797
1797
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_aeb4b15ecc4ba1a0ca8794d304d1895cb"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">SVF::LockAnalysis::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00039">LockAnalysis.h:39</a></div></div>
|
|
@@ -1800,7 +1800,7 @@ Private Attributes</h2></td></tr>
|
|
|
1800
1800
|
<div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
|
|
1801
1801
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a96a6cfddc8f7115294e8ad49a097b938"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">SVF::LockAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00441">LockAnalysis.h:441</a></div></div>
|
|
1802
1802
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt & getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
|
|
1803
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1803
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00191">BasicTypes.h:191</a></div></div>
|
|
1804
1804
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
1805
1805
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a375cb175ec0068bacaa64cf40a49d485"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">SVF::LockAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &tgr, const CxtStmt &src)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00337">LockAnalysis.h:337</a></div></div>
|
|
1806
1806
|
</div><!-- fragment -->
|
|
@@ -2119,16 +2119,16 @@ Private Attributes</h2></td></tr>
|
|
|
2119
2119
|
<p>Intra-procedural backward traversal </p>
|
|
2120
2120
|
|
|
2121
2121
|
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00213">213</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2122
|
-
<div class="fragment"><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> worklist;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">for</span>(InstSet::const_iterator it = unlockSet.begin(), eit = unlockSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* unlockSite = *it;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = unlockSite->getParent()->getParent();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* entryInst = &(fun->getEntryBlock().back());</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  worklist.push_back(*it);</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>  <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = worklist.back();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  worklist.pop_back();</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">if</span>(entryInst == I)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// Skip the visited Instructions.</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span> (backwardInsts.find(I)!=backwardInsts.end())</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  backwardInsts.insert(I);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">isTDAcquire</a>(I) && <a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(unlockSite, I))</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"LockAnalysis ci lock -- "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(I)<<<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"LockAnalysis ci unlock -- "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(unlockSite)<<<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">continue</span>;</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="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> nextInsts;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7e3a8d6cb1715db9518579fb60181d5b">getPrevInsts</a>(I, nextInsts);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  worklist.push_back(*nit);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</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> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> }</div><div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
2122
|
+
<div class="fragment"><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> worklist;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">for</span>(InstSet::const_iterator it = unlockSet.begin(), eit = unlockSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* unlockSite = *it;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = unlockSite->getParent()->getParent();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* entryInst = &(fun->getEntryBlock().back());</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  worklist.push_back(*it);</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>  <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = worklist.back();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  worklist.pop_back();</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">if</span>(entryInst == I)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// Skip the visited Instructions.</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span> (backwardInsts.find(I)!=backwardInsts.end())</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  backwardInsts.insert(I);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">isTDAcquire</a>(I) && <a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(unlockSite, I))</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"LockAnalysis ci lock -- "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(I)<<<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"LockAnalysis ci unlock -- "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(unlockSite)<<<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">continue</span>;</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="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> nextInsts;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7e3a8d6cb1715db9518579fb60181d5b">getPrevInsts</a>(I, nextInsts);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  worklist.push_back(*nit);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</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> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> }</div><div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
2123
2123
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_add9272ead87ca994ee4e08dfa30fa0f4"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">SVF::LockAnalysis::isAliasedLocks</a></div><div class="ttdeci">bool isAliasedLocks(const CxtLock &cl1, const CxtLock &cl2)</div><div class="ttdoc">Return true it a lock matches an unlock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00324">LockAnalysis.h:324</a></div></div>
|
|
2124
2124
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
|
|
2125
2125
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7e3a8d6cb1715db9518579fb60181d5b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7e3a8d6cb1715db9518579fb60181d5b">SVF::SVFUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector< const Instruction *> &instList)</div><div class="ttdoc">Get the previous instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00243">LLVMUtil.cpp:243</a></div></div>
|
|
2126
|
-
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2127
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2126
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
2127
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
2128
2128
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_aeb4b15ecc4ba1a0ca8794d304d1895cb"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">SVF::LockAnalysis::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00039">LockAnalysis.h:39</a></div></div>
|
|
2129
2129
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
2130
2130
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a5521de9933ce74d0954a942dfceae772"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">SVF::LockAnalysis::isTDAcquire</a></div><div class="ttdeci">bool isTDAcquire(const Instruction *call)</div><div class="ttdoc">Whether it is a lock site. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00426">LockAnalysis.h:426</a></div></div>
|
|
2131
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
2131
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
2132
2132
|
</div><!-- fragment -->
|
|
2133
2133
|
</div>
|
|
2134
2134
|
</div>
|
|
@@ -2166,17 +2166,17 @@ Private Attributes</h2></td></tr>
|
|
|
2166
2166
|
<p>Intra-procedural forward traversal </p>
|
|
2167
2167
|
|
|
2168
2168
|
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00170">170</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2169
|
-
<div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = lockSite->getParent()->getParent();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> worklist;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  worklist.push_back(lockSite);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = worklist.back();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  worklist.pop_back();</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="keywordflow">if</span>(&(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">getFunExitBB</a>(fun)->back()) == I)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// Skip the visited Instructions.</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (forwardInsts.find(I)!=forwardInsts.end())</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  forwardInsts.insert(I);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed">isTDRelease</a>(I) && <a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(lockSite, I))</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  unlockSet.insert(I);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"LockAnalysis ci lock -- "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(lockSite)<<<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"LockAnalysis ci unlock -- "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(I)<<<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">continue</span>;</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> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> nextInsts;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(I, nextInsts);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  worklist.push_back(*nit);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</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="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> }</div><div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
2169
|
+
<div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = lockSite->getParent()->getParent();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> worklist;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  worklist.push_back(lockSite);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = worklist.back();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  worklist.pop_back();</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="keywordflow">if</span>(&(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">getFunExitBB</a>(fun)->back()) == I)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// Skip the visited Instructions.</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (forwardInsts.find(I)!=forwardInsts.end())</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  forwardInsts.insert(I);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed">isTDRelease</a>(I) && <a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(lockSite, I))</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  unlockSet.insert(I);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"LockAnalysis ci lock -- "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(lockSite)<<<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"LockAnalysis ci unlock -- "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(I)<<<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">continue</span>;</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> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> nextInsts;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(I, nextInsts);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  worklist.push_back(*nit);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</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="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> }</div><div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
2170
2170
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_add9272ead87ca994ee4e08dfa30fa0f4"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">SVF::LockAnalysis::isAliasedLocks</a></div><div class="ttdeci">bool isAliasedLocks(const CxtLock &cl1, const CxtLock &cl2)</div><div class="ttdoc">Return true it a lock matches an unlock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00324">LockAnalysis.h:324</a></div></div>
|
|
2171
2171
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
|
|
2172
2172
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2f9959fa23ab4bdc65ca36fbda8c1b70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">SVF::SVFUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const Instruction *> &instList)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00216">LLVMUtil.cpp:216</a></div></div>
|
|
2173
|
-
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2174
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2173
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
2174
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
2175
2175
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_aeb4b15ecc4ba1a0ca8794d304d1895cb"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">SVF::LockAnalysis::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00039">LockAnalysis.h:39</a></div></div>
|
|
2176
2176
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
2177
2177
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a3cb226930eeaf558575e09e5b65e0223"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">SVF::SVFUtil::getFunExitBB</a></div><div class="ttdeci">const BasicBlock * getFunExitBB(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00520">LLVMUtil.h:520</a></div></div>
|
|
2178
2178
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ae312fa9ddb320674f7bc31e29aa474ed"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed">SVF::LockAnalysis::isTDRelease</a></div><div class="ttdeci">bool isTDRelease(const Instruction *call)</div><div class="ttdoc">Whether it is a unlock site. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00431">LockAnalysis.h:431</a></div></div>
|
|
2179
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
2179
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
2180
2180
|
</div><!-- fragment -->
|
|
2181
2181
|
</div>
|
|
2182
2182
|
</div>
|
|
@@ -2401,8 +2401,8 @@ Private Attributes</h2></td></tr>
|
|
|
2401
2401
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ac33c03c9d4a978891009ae919559d567"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac33c03c9d4a978891009ae919559d567">SVF::LockAnalysis::isInsideIntraLock</a></div><div class="ttdeci">bool isInsideIntraLock(const Instruction *stmt) const</div><div class="ttdoc">Return true if a statement is inside an intra-procedural lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00108">LockAnalysis.h:108</a></div></div>
|
|
2402
2402
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a65aca2bc12fc34203b16549653943eae"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a65aca2bc12fc34203b16549653943eae">SVF::LockAnalysis::isInSameCISpan</a></div><div class="ttdeci">bool isInSameCISpan(const Instruction *i1, const Instruction *i2) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00662">LockAnalysis.cpp:662</a></div></div>
|
|
2403
2403
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a853ab1a953ddcf76841016a833e43f3d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d">SVF::LockAnalysis::lockQueriesTime</a></div><div class="ttdeci">double lockQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00495">LockAnalysis.h:495</a></div></div>
|
|
2404
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
2405
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
2404
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00181">SVFBasicTypes.h:181</a></div></div>
|
|
2405
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
|
|
2406
2406
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a3c4eaa1695ea13405911ae1621f98edc"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">SVF::PTAStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00114">PTAStat.cpp:114</a></div></div>
|
|
2407
2407
|
</div><!-- fragment -->
|
|
2408
2408
|
</div>
|
|
@@ -2675,8 +2675,8 @@ Private Attributes</h2></td></tr>
|
|
|
2675
2675
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ac33c03c9d4a978891009ae919559d567"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac33c03c9d4a978891009ae919559d567">SVF::LockAnalysis::isInsideIntraLock</a></div><div class="ttdeci">bool isInsideIntraLock(const Instruction *stmt) const</div><div class="ttdoc">Return true if a statement is inside an intra-procedural lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00108">LockAnalysis.h:108</a></div></div>
|
|
2676
2676
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ad648ad9cda4070f9aec1addef0067627"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad648ad9cda4070f9aec1addef0067627">SVF::LockAnalysis::numOfTotalQueries</a></div><div class="ttdeci">u32_t numOfTotalQueries</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00493">LockAnalysis.h:493</a></div></div>
|
|
2677
2677
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a853ab1a953ddcf76841016a833e43f3d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d">SVF::LockAnalysis::lockQueriesTime</a></div><div class="ttdeci">double lockQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00495">LockAnalysis.h:495</a></div></div>
|
|
2678
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
2679
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
2678
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00181">SVFBasicTypes.h:181</a></div></div>
|
|
2679
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
|
|
2680
2680
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a3c4eaa1695ea13405911ae1621f98edc"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">SVF::PTAStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00114">PTAStat.cpp:114</a></div></div>
|
|
2681
2681
|
</div><!-- fragment -->
|
|
2682
2682
|
</div>
|
|
@@ -2901,18 +2901,18 @@ Private Attributes</h2></td></tr>
|
|
|
2901
2901
|
|
|
2902
2902
|
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00535">535</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2903
2903
|
<div class="fragment"><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = call->getParent()->getParent();</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcaller = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(caller);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">getCallSiteID</a>(cbn, svfcallee);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="comment">// /// handle calling context for candidate functions only</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="comment">// if (isLockCandidateFun(caller) == false)</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> <span class="comment">// return true;</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">if</span> (cxt.empty())</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> </div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">inSameCallGraphSCC</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallGraphNode(svfcaller), <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallGraphNode(svfcallee)) == <span class="keyword">false</span>)</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>  <span class="keywordflow">if</span> (cxt.back() == csId)</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  cxt.pop_back();</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">dumpCxt</a>(cxt));</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  }</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a711bd8ad385f8454fbfcd20f134efe1b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
|
|
2904
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
2905
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2904
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
2905
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
|
|
2906
2906
|
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00151">TCT.h:151</a></div></div>
|
|
2907
2907
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a2c4a69b0f2381142c172b3043943c79d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">SVF::LockAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00447">LockAnalysis.h:447</a></div></div>
|
|
2908
2908
|
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00156">TCT.h:156</a></div></div>
|
|
2909
|
-
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2909
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
2910
2910
|
<div class="ttc" id="classSVF_1_1TCT_html_a95cd490d37f8831edc6910f7ecdf413e"><div class="ttname"><a href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">SVF::TCT::inSameCallGraphSCC</a></div><div class="ttdeci">bool inSameCallGraphSCC(const PTACallGraphNode *src, const PTACallGraphNode *dst)</div><div class="ttdoc">Whether two functions in the same callgraph scc. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00268">TCT.h:268</a></div></div>
|
|
2911
|
-
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
2911
|
+
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
|
|
2912
2912
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a96a6cfddc8f7115294e8ad49a097b938"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">SVF::LockAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00441">LockAnalysis.h:441</a></div></div>
|
|
2913
2913
|
<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>
|
|
2914
2914
|
<div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00526">TCT.cpp:526</a></div></div>
|
|
2915
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
2915
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
2916
2916
|
</div><!-- fragment -->
|
|
2917
2917
|
</div>
|
|
2918
2918
|
</div>
|
|
@@ -3045,19 +3045,19 @@ Private Attributes</h2></td></tr>
|
|
|
3045
3045
|
|
|
3046
3046
|
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00516">516</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
3047
3047
|
<div class="fragment"><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = call->getParent()->getParent();</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcaller = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(caller);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">getCallSiteID</a>(cbn, svfcallee);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="comment">// /// handle calling context for candidate functions only</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="comment">// if (isLockCandidateFun(caller) == false)</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="comment">// return;</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> </div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">inSameCallGraphSCC</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallGraphNode(svfcaller), <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallGraphNode(svfcallee)) == <span class="keyword">false</span>)</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,csId);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">dumpCxt</a>(cxt));</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a711bd8ad385f8454fbfcd20f134efe1b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
|
|
3048
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
3049
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3048
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
3049
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
|
|
3050
3050
|
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00151">TCT.h:151</a></div></div>
|
|
3051
3051
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a2c4a69b0f2381142c172b3043943c79d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">SVF::LockAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00447">LockAnalysis.h:447</a></div></div>
|
|
3052
3052
|
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00156">TCT.h:156</a></div></div>
|
|
3053
|
-
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3053
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
3054
3054
|
<div class="ttc" id="classSVF_1_1TCT_html_a95cd490d37f8831edc6910f7ecdf413e"><div class="ttname"><a href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">SVF::TCT::inSameCallGraphSCC</a></div><div class="ttdeci">bool inSameCallGraphSCC(const PTACallGraphNode *src, const PTACallGraphNode *dst)</div><div class="ttdoc">Whether two functions in the same callgraph scc. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00268">TCT.h:268</a></div></div>
|
|
3055
|
-
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
3055
|
+
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
|
|
3056
3056
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a96a6cfddc8f7115294e8ad49a097b938"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">SVF::LockAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00441">LockAnalysis.h:441</a></div></div>
|
|
3057
3057
|
<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>
|
|
3058
3058
|
<div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00526">TCT.cpp:526</a></div></div>
|
|
3059
3059
|
<div class="ttc" id="classSVF_1_1TCT_html_afc6d7a91cfc98561bcce13425964a39e"><div class="ttname"><a href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">SVF::TCT::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00473">TCT.cpp:473</a></div></div>
|
|
3060
|
-
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
3060
|
+
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
3061
3061
|
</div><!-- fragment -->
|
|
3062
3062
|
</div>
|
|
3063
3063
|
</div>
|