svf-tools 1.0.424 → 1.0.427
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 +2 -2
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +5 -5
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/Andersen_8h_source.html +9 -9
- package/SVF-doxygen/html/html/Annotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +10 -9
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +9 -8
- package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +6 -6
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +21 -21
- 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 +11 -11
- 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 +25 -25
- 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 +5 -5
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +6 -6
- package/SVF-doxygen/html/html/Conditions_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/Conditions_8h_source.html +5 -5
- 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 +3 -3
- package/SVF-doxygen/html/html/ConsG_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +13 -13
- package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +6 -6
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +29 -29
- package/SVF-doxygen/html/html/DCHG_8h_source.html +14 -14
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +6 -6
- 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 +10 -11
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +13 -13
- package/SVF-doxygen/html/html/DPItem_8h_source.html +6 -6
- 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/ExtAPI_8h_source.html +4 -4
- 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 +5 -5
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +6 -6
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +8 -8
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +9 -9
- 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/Graph2Json_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ICFG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +11 -11
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +22 -22
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +9 -9
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +27 -27
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +11 -9
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +21 -18
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +11 -11
- package/SVF-doxygen/html/html/LockResultValidator_8cpp.html +1 -0
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +22 -21
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +10 -10
- package/SVF-doxygen/html/html/MHP_8cpp.html +8 -7
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +63 -62
- package/SVF-doxygen/html/html/MHP_8h_source.html +37 -37
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp.html +1 -0
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +41 -40
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +29 -29
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +8 -8
- 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 +16 -16
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +8 -8
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +8 -8
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +3 -3
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/PCG_8h_source.html +4 -4
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +7 -7
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +25 -28
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +32 -32
- package/SVF-doxygen/html/html/PathCondAllocator_8h.html +1 -0
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +56 -55
- package/SVF-doxygen/html/html/PathDPItem_8h_source.html +2 -2
- 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 +11 -12
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +56 -58
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +31 -31
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +44 -45
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PointsTo_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +14 -14
- package/SVF-doxygen/html/html/SCC_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +554 -11
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +37 -7
- package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +7 -13
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +38 -41
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
- 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 +4 -4
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +15 -15
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/SVFG_8h_source.html +16 -16
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +63 -62
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +48 -48
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +19 -19
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +5 -5
- 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 +16 -16
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +15 -15
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +5 -5
- 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 +58 -58
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +103 -104
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +135 -139
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/TCT_8h_source.html +18 -18
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +11 -11
- 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 +25 -25
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +6 -6
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +0 -69
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +119 -153
- package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +165 -170
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/VFG_8h_source.html +22 -22
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
- package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +2 -2
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +12 -12
- 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/annotated.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +266 -267
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +20 -23
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +226 -227
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +279 -280
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +0 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +288 -289
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +0 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +276 -277
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +1 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +275 -276
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +5 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +287 -288
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +7 -10
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +274 -275
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +1 -4
- package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1BDDManager.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +173 -174
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +24 -71
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +33 -36
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +24 -26
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +7 -7
- 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 +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
- 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 +25 -28
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +166 -167
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +120 -168
- 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 +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +266 -267
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +31 -34
- 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_1CoreBitVector_1_1CoreBitVectorIterator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +64 -64
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +19 -20
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +28 -72
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
- 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_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +293 -294
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +0 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +259 -260
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +10 -13
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +284 -285
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +43 -46
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +324 -325
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +25 -28
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +65 -65
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +15 -15
- 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 +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +17 -17
- 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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +37 -37
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +9 -9
- 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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
- 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 +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +53 -53
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +37 -37
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +119 -119
- package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +104 -104
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +88 -88
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
- 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 +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +99 -99
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +34 -49
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +174 -174
- 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-members.html +129 -130
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +107 -150
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +9 -9
- 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 +1 -1
- 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 +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +180 -180
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +240 -241
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -4
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
- 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 +104 -104
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +5 -7
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +215 -281
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +57 -57
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +21 -21
- 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-members.html +232 -233
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +6 -9
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +35 -37
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFPathCond.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +337 -338
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +12 -15
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +8 -8
- 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-members.html +19 -20
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +24 -68
- 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/classSVF_1_1Z3Manager.html +4 -4
- package/SVF-doxygen/html/html/classes.html +96 -97
- package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +1 -1
- package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
- package/SVF-doxygen/html/html/functions_a.html +4 -4
- package/SVF-doxygen/html/html/functions_b.html +1 -1
- package/SVF-doxygen/html/html/functions_d.html +0 -3
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func.html +7 -7
- package/SVF-doxygen/html/html/functions_func_b.html +1 -1
- package/SVF-doxygen/html/html/functions_func_g.html +9 -12
- package/SVF-doxygen/html/html/functions_func_o.html +3 -4
- package/SVF-doxygen/html/html/functions_g.html +13 -16
- package/SVF-doxygen/html/html/functions_l.html +6 -6
- package/SVF-doxygen/html/html/functions_n.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +13 -12
- package/SVF-doxygen/html/html/functions_p.html +4 -4
- package/SVF-doxygen/html/html/functions_r.html +3 -3
- package/SVF-doxygen/html/html/functions_s.html +6 -4
- package/SVF-doxygen/html/html/functions_t.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_d.html +0 -3
- package/SVF-doxygen/html/html/functions_w.html +5 -9
- package/SVF-doxygen/html/html/globals.html +6 -0
- package/SVF-doxygen/html/html/globals_b.html +6 -0
- package/SVF-doxygen/html/html/globals_c.html +118 -100
- package/SVF-doxygen/html/html/globals_f.html +9 -3
- package/SVF-doxygen/html/html/globals_g.html +3 -0
- package/SVF-doxygen/html/html/globals_i.html +14 -2
- package/SVF-doxygen/html/html/globals_l.html +3 -0
- package/SVF-doxygen/html/html/globals_m.html +17 -14
- package/SVF-doxygen/html/html/globals_p.html +3 -0
- package/SVF-doxygen/html/html/globals_r.html +3 -0
- package/SVF-doxygen/html/html/globals_s.html +27 -22
- package/SVF-doxygen/html/html/globals_type.html +114 -0
- package/SVF-doxygen/html/html/globals_u.html +8 -2
- package/SVF-doxygen/html/html/globals_v.html +12 -0
- package/SVF-doxygen/html/html/hierarchy.html +149 -150
- package/SVF-doxygen/html/html/menudata.js +25 -19
- package/SVF-doxygen/html/html/namespaceSVF.html +128 -779
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +128 -95
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +46 -46
- package/SVF-doxygen/html/html/namespacemembers.html +0 -6
- package/SVF-doxygen/html/html/namespacemembers_b.html +2 -8
- package/SVF-doxygen/html/html/namespacemembers_c.html +2 -26
- package/SVF-doxygen/html/html/namespacemembers_f.html +0 -6
- package/SVF-doxygen/html/html/namespacemembers_func.html +6 -3
- package/SVF-doxygen/html/html/namespacemembers_g.html +3 -3
- package/SVF-doxygen/html/html/namespacemembers_i.html +10 -22
- package/SVF-doxygen/html/html/namespacemembers_l.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_m.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_p.html +0 -6
- package/SVF-doxygen/html/html/namespacemembers_r.html +1 -4
- package/SVF-doxygen/html/html/namespacemembers_s.html +1 -19
- package/SVF-doxygen/html/html/namespacemembers_type.html +560 -4
- package/SVF-doxygen/html/html/namespacemembers_u.html +0 -6
- package/SVF-doxygen/html/html/namespacemembers_v.html +0 -12
- package/SVF-doxygen/html/html/search/all_1.js +3 -3
- package/SVF-doxygen/html/html/search/all_10.js +8 -9
- package/SVF-doxygen/html/html/search/all_12.js +3 -3
- package/SVF-doxygen/html/html/search/all_13.js +10 -13
- package/SVF-doxygen/html/html/search/all_14.js +3 -3
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +6 -6
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_2.js +3 -3
- package/SVF-doxygen/html/html/search/all_3.js +7 -9
- package/SVF-doxygen/html/html/search/all_4.js +0 -1
- package/SVF-doxygen/html/html/search/all_6.js +3 -3
- package/SVF-doxygen/html/html/search/all_7.js +3 -3
- package/SVF-doxygen/html/html/search/all_8.js +0 -1
- package/SVF-doxygen/html/html/search/all_9.js +4 -4
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +3 -3
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/classes_7.js +0 -1
- package/SVF-doxygen/html/html/search/functions_0.js +1 -1
- package/SVF-doxygen/html/html/search/functions_1.js +1 -1
- package/SVF-doxygen/html/html/search/functions_10.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +2 -2
- package/SVF-doxygen/html/html/search/functions_d.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_0.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_1.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_10.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +4 -7
- package/SVF-doxygen/html/html/search/typedefs_13.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_14.js +4 -4
- package/SVF-doxygen/html/html/search/typedefs_2.js +7 -9
- package/SVF-doxygen/html/html/search/typedefs_5.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_6.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_8.js +4 -4
- package/SVF-doxygen/html/html/search/typedefs_b.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_c.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_f.js +1 -2
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_4.js +0 -1
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1Hash.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_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 +19 -19
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +19 -19
- 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_1LocationSet_01_4.html +1 -1
- 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/clean.sh +2 -2
- package/include/DDA/DDAPass.h +0 -6
- package/include/Graphs/ICFGEdge.h +1 -1
- package/include/Graphs/VFGNode.h +4 -18
- package/include/MemoryModel/PointerAnalysis.h +0 -4
- package/include/MemoryModel/PointerAnalysisImpl.h +0 -10
- package/include/MemoryModel/PointsTo.h +1 -1
- package/include/MemoryModel/SVFVariables.h +4 -4
- package/include/MemoryModel/SymbolTableInfo.h +0 -11
- package/include/SABER/PathCondAllocator.h +1 -0
- package/include/SVF-FE/BasicTypes.h +41 -2
- package/include/SVF-FE/LLVMUtil.h +7 -0
- package/include/Util/BasicTypes.h +0 -35
- package/include/Util/CoreBitVector.h +1 -1
- package/include/Util/SVFBasicTypes.h +6 -27
- package/include/Util/SVFUtil.h +1 -1
- package/include/WPA/WPAPass.h +0 -6
- package/lib/DDA/DDAPass.cpp +1 -1
- package/lib/MTA/LockResultValidator.cpp +1 -0
- package/lib/MTA/MHP.cpp +1 -0
- package/lib/MTA/MTAResultValidator.cpp +1 -0
- package/lib/MTA/PCG.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +0 -9
- package/lib/MemoryModel/PointsTo.cpp +2 -2
- package/lib/MemoryModel/SVFVariables.cpp +2 -2
- package/lib/MemoryModel/SymbolTableInfo.cpp +0 -5
- package/lib/SABER/PathCondAllocator.cpp +1 -1
- package/lib/SVF-FE/BreakConstantExpr.cpp +1 -0
- package/lib/SVF-FE/LLVMUtil.cpp +3 -2
- package/lib/SVF-FE/SVFIRBuilder.cpp +1 -1
- package/lib/Util/CoreBitVector.cpp +1 -1
- package/lib/Util/PTAStat.cpp +3 -1
- package/package.json +1 -1
|
@@ -66,15 +66,15 @@ $(function() {
|
|
|
66
66
|
<div class="title">MTAResultValidator.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="MTAResultValidator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * MTAResultValidator.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Created on: 29/06/2015</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * Author: Peng Di and Ding Ye</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#ifndef MTARESULTVALIDATOR_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#define MTARESULTVALIDATOR_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "<a class="code" href="MHP_8h.html">MTA/MHP.h</a>"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a>{</div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301"> 18</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  </div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html"> 20</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MTAResultValidator.html">MTAResultValidator</a></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a8e26b7fe85478eef7b3d0551ab59d9c7"> 24</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a8e26b7fe85478eef7b3d0551ab59d9c7">INTERLEV_FLAG</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#af7f90c7a146c085d3b432ab40fb3777e"> 25</a></span>  <a class="code" href="classSVF_1_1MTAResultValidator.html#af7f90c7a146c085d3b432ab40fb3777e">MTAResultValidator</a>(<a class="code" href="classSVF_1_1MHP.html">MHP</a>* mh) :</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a>(mh)</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="classSVF_1_1MTAResultValidator.html#abe087e2e8d92aa218ef282d2493193ef">tcg</a> = <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a>-><a class="code" href="classSVF_1_1MHP.html#a20e740d4b96ef086b6b5778acd38ca88">getThreadCallGraph</a>();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="classSVF_1_1MTAResultValidator.html#aa0ca978e95529568edc4bdac1ffac110">tdAPI</a> = <a class="code" href="classSVF_1_1MTAResultValidator.html#abe087e2e8d92aa218ef282d2493193ef">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="classSVF_1_1MTAResultValidator.html#a8d54a1e8d1703d0c9ba541bcf997e900">mod</a> = <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a>-><a class="code" href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">getTCT</a>()-><a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// Destructor</span></div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#afd9f0901b8474c35011eeb57e9bd15e9"> 33</a></span>  <a class="code" href="classSVF_1_1MTAResultValidator.html#afd9f0901b8474c35011eeb57e9bd15e9">~MTAResultValidator</a>()</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// Analysis</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a462f1554e058b656861abfb0aa2e47ff">analyze</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57"> 39</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a8d54a1e8d1703d0c9ba541bcf997e900">mod</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">/*</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> * Assistant functions</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"> */</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// Split string</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::vector<std::string> &<a class="code" href="classSVF_1_1MTAResultValidator.html#a73db9ad234b263b6e644e4b38be14fe6">split</a>(<span class="keyword">const</span> std::string &s, <span class="keywordtype">char</span> delim, std::vector<std::string> &elems);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::vector<std::string> <a class="code" href="classSVF_1_1MTAResultValidator.html#a73db9ad234b263b6e644e4b38be14fe6">split</a>(<span class="keyword">const</span> std::string &s, <span class="keywordtype">char</span> delim);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Get special arguments of given call sites</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  NodeID <a class="code" href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">getIntArg</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> arg_num);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  std::vector<std::string> <a class="code" href="classSVF_1_1MTAResultValidator.html#a1ac51d2847f9bdee27092ab22211bb61">getStringArg</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> arg_num);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a> <a class="code" href="classSVF_1_1MTAResultValidator.html#afb110fec926967ba334bf2635d58a339">getCxtArg</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> arg_num);</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>  <span class="comment">/*</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment"> * Get the previous LoadInst or StoreInst from Instruction "I" in the</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment"> * same BasicBlock. Return nullptr if none exists.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment"> */</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1MTAResultValidator.html#ab3ba3c6d9c40e97febdab0e7d4ad9a3e">getPreviousMemoryAccessInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// Compare two cxts</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a6306899b5360e106dd090bea571027bf">matchCxt</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a> cxt1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a> cxt2) <span class="keyword">const</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Dump calling context information</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#ae7d61becd14123f60976fd7261d0c84d">dumpCxt</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a>& cxt) <span class="keyword">const</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a1af033b5742fa9cc1e4f9873184775b7">dumpInterlev</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>& lev);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Get the validation result string of a single validation scenario.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *scenario, <span class="keywordtype">bool</span> analysisRes);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1MTAResultValidator.html#ac24a8a6922d9dc9edecab3bc45bc9204">getOutputforInterlevAnalysis</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *scenario, INTERLEV_FLAG analysisRes);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">/*</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment"> * Collect the callsite targets for validations.</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment"> * The targets are labeled by "cs1:", "cs2:"... that are the names of its basic blocks.</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment"> * The collected targets are stored in csnumToInstMap that maps label "cs1" to CallInst.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment"> */</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a1fc4116b134aa87420d055b193208e68">collectCallsiteTargets</a>();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">/*</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment"> * Collect the CxtThread targets for validations.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment"> * The collected targets are stored in vthdToCxt that maps vthd to cxt.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment"> */</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a430c03371b2b5b7300c5c3a68d633909">collectCxtThreadTargets</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">/*</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment"> * Collect TCT targets for validations.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment"> * The collected targets are stored in rthdToChildren.</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment"> */</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#abdf31e8fca824b56a53788de525042a6">collectTCTTargets</a>();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">/*</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment"> * Collect the thread interleaving targets for validations.</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment"> * The collected targets are stored in instToTSMap and threadStmtToInterLeaving.</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment"> */</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a3c3eacff786230d093d27615ff360ed4">collectInterleavingTargets</a>();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">/*</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment"> * Perform validation for Cxtthread.</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment"> * If correct, the validator maps given thread vthd to static CxtThread rthd stored in vthdTorthd.</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment"> */</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#afa01b108b67ec2ac05a6444b55dbfe01">validateCxtThread</a>();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">/*</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment"> * Perform validation for TCT.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment"> */</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#ae6a18cbaf113ee8e28c3e8dca458d4be">validateTCT</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">/*</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment"> * Perform validation for thread interleaving.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment"> */</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  INTERLEV_FLAG <a class="code" href="classSVF_1_1MTAResultValidator.html#a373b5227fbfa82ac070f55db999afb28">validateInterleaving</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ab2d02695cc8e6fc9e9a46d9d26466fb1"> 118</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, const CallInst*></a> <a class="code" href="classSVF_1_1MTAResultValidator.html#ab2d02695cc8e6fc9e9a46d9d26466fb1">csnumToInst</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a1392757f98b54057d33adb125fd48efa"> 119</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, CallStrCxt></a> <a class="code" href="classSVF_1_1MTAResultValidator.html#a1392757f98b54057d33adb125fd48efa">vthdToCxtMap</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a7fc576e83fa259d0ab06d54c3537c4ac"> 120</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, NodeID></a> <a class="code" href="classSVF_1_1MTAResultValidator.html#a7fc576e83fa259d0ab06d54c3537c4ac">vthdTorthdMap</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ab386260dd6bbaeacde10e5c81f07502c"> 121</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, NodeID></a> <a class="code" href="classSVF_1_1MTAResultValidator.html#ab386260dd6bbaeacde10e5c81f07502c">rthdTovthdMap</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a7d2043cf3c354812fa5e4cdf7f60ff20"> 123</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, Set<NodeID></a>> <a class="code" href="classSVF_1_1MTAResultValidator.html#a7d2043cf3c354812fa5e4cdf7f60ff20">rthdToChildrenMap</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a8452bf182f6f1e0f4c239f620ee803b1"> 125</a></span>  <a class="code" href="classSVF_1_1MHP.html#ae3e240893d0950354d3d775e87d4adf9">MHP::InstToThreadStmtSetMap</a> <a class="code" href="classSVF_1_1MTAResultValidator.html#a8452bf182f6f1e0f4c239f620ee803b1">instToTSMap</a>; <span class="comment">// Map a instruction to CxtThreadStmtSet</span></div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ac4a7773211a9c842639ac25b1a504c7e"> 126</a></span>  <a class="code" href="classSVF_1_1MHP.html#ac30f283cb2ad020a054ee6525ca94025">MHP::ThreadStmtToThreadInterleav</a> <a class="code" href="classSVF_1_1MTAResultValidator.html#ac4a7773211a9c842639ac25b1a504c7e">threadStmtToInterLeaving</a>; </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a251e16fc1fb663c238122dd6d2ba02e1"> 128</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *<a class="code" href="classSVF_1_1MTAResultValidator.html#a251e16fc1fb663c238122dd6d2ba02e1">CXT_THREAD</a> = <span class="stringliteral">"CXT_THREAD"</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a7b47044960a12203ce0ce245c4c9c8ec"> 129</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *<a class="code" href="classSVF_1_1MTAResultValidator.html#a7b47044960a12203ce0ce245c4c9c8ec">INTERLEV_ACCESS</a> = <span class="stringliteral">"INTERLEV_ACCESS"</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ae709b039a68f5600271c40903b1c0dbe"> 130</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *<a class="code" href="classSVF_1_1MTAResultValidator.html#ae709b039a68f5600271c40903b1c0dbe">TCT_ACCESS</a> = <span class="stringliteral">"TCT_ACCESS"</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#aa0ca978e95529568edc4bdac1ffac110"> 132</a></span>  <a class="code" href="classSVF_1_1ThreadAPI.html">ThreadAPI</a>* <a class="code" href="classSVF_1_1MTAResultValidator.html#aa0ca978e95529568edc4bdac1ffac110">tdAPI</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#abe087e2e8d92aa218ef282d2493193ef"> 133</a></span>  <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* <a class="code" href="classSVF_1_1MTAResultValidator.html#abe087e2e8d92aa218ef282d2493193ef">tcg</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857"> 134</a></span>  <a class="code" href="classSVF_1_1MHP.html">MHP</a>* <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a245c967245e5a693eaf7f60782143d7a"> 135</a></span>  vthdToCxtMap <a class="code" href="classSVF_1_1MTAResultValidator.html#a245c967245e5a693eaf7f60782143d7a">vthdToCxt</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a"> 136</a></span>  vthdTorthdMap <a class="code" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">vthdTorthd</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a615623a08324ee155cb527a3b57e8c19"> 137</a></span>  rthdTovthdMap <a class="code" href="classSVF_1_1MTAResultValidator.html#a615623a08324ee155cb527a3b57e8c19">rthdTovthd</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ae2717c467dc7c49fab0ec93bfa4baaab"> 138</a></span>  csnumToInst <a class="code" href="classSVF_1_1MTAResultValidator.html#ae2717c467dc7c49fab0ec93bfa4baaab">csnumToInstMap</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a542f2f41c90698270687fc7858a26555"> 139</a></span>  rthdToChildrenMap <a class="code" href="classSVF_1_1MTAResultValidator.html#a542f2f41c90698270687fc7858a26555">rthdToChildren</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a8d54a1e8d1703d0c9ba541bcf997e900"> 140</a></span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1MTAResultValidator.html#a8d54a1e8d1703d0c9ba541bcf997e900">mod</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ac76235240be9684bc71fd924ed83b05b"> 143</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> INTERLEV_FLAG <a class="code" href="classSVF_1_1MTAResultValidator.html#ac76235240be9684bc71fd924ed83b05b">INTERLEV_TRUE</a> = 0x01;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a3f3cc6bcc79e4125ef9a49857442319d"> 144</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> INTERLEV_FLAG <a class="code" href="classSVF_1_1MTAResultValidator.html#a3f3cc6bcc79e4125ef9a49857442319d">INTERLEV_IMPRECISE</a> = 0x02;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a1c34f6a65688a3261ec27a35e9b9601b"> 145</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> INTERLEV_FLAG <a class="code" href="classSVF_1_1MTAResultValidator.html#a1c34f6a65688a3261ec27a35e9b9601b">INTERLEV_UNSOUND</a> = 0x04;</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> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html"> 166</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1RaceResultValidator.html">RaceResultValidator</a></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ac57ae430ee5b6868fe810172ec658853"> 169</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#ac57ae430ee5b6868fe810172ec658853">RC_FLAG</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html"> 174</a></span>  <span class="keyword">class </span><a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html">AccessPair</a></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a7dd2f8afab59ee4d107a6bfdb6c151ea"> 178</a></span>  <a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a7dd2f8afab59ee4d107a6bfdb6c151ea">AccessPair</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">const</span> RC_FLAG flags) :</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  I1(I1), I2(I2), flags(flags)</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>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1"> 186</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(<span class="keyword">const</span> RC_FLAG flag)<span class="keyword"> const</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> flags & flag;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a97307972daebc1fc358ba2c8009c5990"> 190</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a97307972daebc1fc358ba2c8009c5990">getInstruction1</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> I1;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#acf383712e9399fec0d52614b2338836c"> 194</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#acf383712e9399fec0d52614b2338836c">getInstruction2</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> I2;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a753e4df194dc85e37a0285eaac7b30f7"> 201</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a753e4df194dc85e37a0285eaac7b30f7">I1</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#ad06bd4046fd98b85e6d1f97fcd472d3b"> 202</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#ad06bd4046fd98b85e6d1f97fcd472d3b">I2</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#aafb0a0cd068e1632f0d643233cad8ad9"> 203</a></span>  RC_FLAG <a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#aafb0a0cd068e1632f0d643233cad8ad9">flags</a>;</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="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a8f0d25327d5365f6ae229723aa5d6ff7"> 207</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a8f0d25327d5365f6ae229723aa5d6ff7">~RaceResultValidator</a>()</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  release();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#aec8b923a0da580113a13bf94ffb3ebd7"> 213</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#aec8b923a0da580113a13bf94ffb3ebd7">init</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* M)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  this->M = M;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  selectedValidationScenarios = RC_MHP | RC_ALIASES | RC_PROTECTED | RC_RACE;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  collectValidationTargets();</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> </div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ab8a261120a7f6520d22a6f5cdf2257e9"> 221</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#ab8a261120a7f6520d22a6f5cdf2257e9">analyze</a>()</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  validateAll();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a64f61b58f59eba5f3e7c69f90edc68df"> 227</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a64f61b58f59eba5f3e7c69f90edc68df">release</a>()</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>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a749793355ab8390a1e6577d7b05efddf"> 232</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a749793355ab8390a1e6577d7b05efddf">hasValidationTarget</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> !accessPairs.empty();</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ade9f150c970aa2cc481c878aebf71662"> 241</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#ade9f150c970aa2cc481c878aebf71662">mayAccessAliases</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1,</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2)</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>  selectedValidationScenarios &= ~RC_ALIASES;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#aff51b56e5f7173dd8ac053e5d9b1e97d"> 247</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#aff51b56e5f7173dd8ac053e5d9b1e97d">mayHappenInParallel</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1,</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2)</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>  selectedValidationScenarios &= ~RC_MHP;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <span class="keyword">true</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"><a class="line" href="classSVF_1_1RaceResultValidator.html#aeb24aa510c7073ef71062e89a11fe00a"> 253</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#aeb24aa510c7073ef71062e89a11fe00a">protectedByCommonLocks</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  selectedValidationScenarios &= ~RC_PROTECTED;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a1df6b00752e373ac7bf08a2cae0b9641"> 259</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a1df6b00752e373ac7bf08a2cae0b9641">mayHaveDataRace</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1,</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2)</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>  selectedValidationScenarios &= ~RC_RACE;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#adb3030fc7514506e2592e11898217375"> 272</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#adb3030fc7514506e2592e11898217375">collectValidationTargets</a>()</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// Collect call sites of all RC_ACCESS function calls.</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  std::vector<const CallInst*> csInsts;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *F = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = M->llvmFunBegin(); it != M->llvmFunEnd(); it++){</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">const</span> std::string fName = (*it)->getName().str();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span>(fName.find(RC_ACCESS) != std::string::npos) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  F = (*it);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  } </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span> (!F) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">for</span> (Value::const_use_iterator it = F->use_begin(), ie =</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  F->use_end(); it != ie; ++it)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">Use</a> *u = &*it;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *user = u->getUser();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *csInst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>>(user);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(csInst);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  csInsts.push_back(csInst);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(csInsts.size() % 2 == 0 && <span class="stringliteral">"We should have RC_ACCESS called in pairs."</span>);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="comment">// Sort the validation sites according to their ids.</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  std::sort(csInsts.begin(), csInsts.end(), compare);</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>  <span class="comment">// Generate access pairs.</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0, e = csInsts.size(); i != e;)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *CI1 = csInsts[i++];</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *CI2 = csInsts[i++];</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *C = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>>(CI1->getOperand(1));</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(C);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1 = <a class="code" href="classSVF_1_1MTAResultValidator.html#ab3ba3c6d9c40e97febdab0e7d4ad9a3e">getPreviousMemoryAccessInst</a>(CI1);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2 = <a class="code" href="classSVF_1_1MTAResultValidator.html#ab3ba3c6d9c40e97febdab0e7d4ad9a3e">getPreviousMemoryAccessInst</a>(CI2);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(I1 && I2 && <span class="stringliteral">"RC_ACCESS should be placed immediately after the target memory access."</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  RC_FLAG flags = C->getZExtValue();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  accessPairs.push_back(<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html">AccessPair</a>(I1, I2, flags));</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>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a58e07fcd0d9a611dfd31ab62802c5990"> 316</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a58e07fcd0d9a611dfd31ab62802c5990">validateAll</a>()</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">" --- Analysis Result Validation ---\n"</span>);</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>  <span class="comment">// Iterate every memory access pair to perform the validation.</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0, e = accessPairs.size(); i != e; ++i)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html">AccessPair</a> &ap = accessPairs[i];</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1 = ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a97307972daebc1fc358ba2c8009c5990">getInstruction1</a>();</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2 = ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#acf383712e9399fec0d52614b2338836c">getInstruction2</a>();</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a> = mayHappenInParallel(I1, I2);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordtype">bool</span> alias = mayAccessAliases(I1, I2);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordtype">bool</span> protect = protectedByCommonLocks(I1, I2);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordtype">bool</span> racy = mayHaveDataRace(I1, I2);</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="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"For the memory access pair at ("</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(I1) << <span class="stringliteral">", "</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(I2) << <span class="stringliteral">")\n"</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span> (selectedValidationScenarios & RC_ALIASES)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\t"</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  << <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="stringliteral">"ALIASES"</span>, alias, ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(RC_ALIASES))</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  << <span class="stringliteral">"\n"</span>;</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>  <span class="keywordflow">if</span> (selectedValidationScenarios & RC_MHP)</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\t"</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  << <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="stringliteral">"MHP"</span>, mhp, ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(RC_MHP)) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span> (selectedValidationScenarios & RC_PROTECTED)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\t"</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  << <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="stringliteral">"PROTECT"</span>, protect,</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(RC_PROTECTED)) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span> (selectedValidationScenarios & RC_RACE)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\t"</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  << <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="stringliteral">"RACE"</span>, racy, ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(RC_RACE))</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#afdd89e26a7c168762bfe85746252827f"> 364</a></span>  <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1RaceResultValidator.html#afdd89e26a7c168762bfe85746252827f">getOutput</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *scenario,</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordtype">bool</span> analysisRes, <span class="keywordtype">bool</span> expectedRes)</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  std::string ret(scenario);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  ret += <span class="stringliteral">"\t"</span>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">if</span> (expectedRes)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  ret += <span class="stringliteral">" T: "</span>;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  ret += <span class="stringliteral">" F: "</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">if</span> (analysisRes == expectedRes)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  ret += <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">SVFUtil::sucMsg</a>(<span class="stringliteral">"SUCCESS"</span>);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  ret += <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">SVFUtil::errMsg</a>(<span class="stringliteral">"FAILURE"</span>);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">return</span> ret;</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> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#abd3ad42a71357dfd1483e6e0d18d5ebd"> 381</a></span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1RaceResultValidator.html#abd3ad42a71357dfd1483e6e0d18d5ebd">M</a>;</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a8436ecde1e34bca7cef86a320ad42162"> 382</a></span>  std::vector<AccessPair> <a class="code" href="classSVF_1_1RaceResultValidator.html#a8436ecde1e34bca7cef86a320ad42162">accessPairs</a>;</div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a1294cb90b073ba25a8ffc06180c09419"> 383</a></span>  RC_FLAG <a class="code" href="classSVF_1_1RaceResultValidator.html#a1294cb90b073ba25a8ffc06180c09419">selectedValidationScenarios</a>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a7a16fb7a3f382284dbb080802f6e6f43"> 389</a></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a7a16fb7a3f382284dbb080802f6e6f43">compare</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *CI1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *CI2)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *V1 = CI1->getOperand(0);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *V2 = CI2->getOperand(0);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *C1 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>>(V1);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *C2 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>>(V2);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 != C1 && 0 != C2);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">return</span> C1->getZExtValue() < C2->getZExtValue();</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ad029f7a9a5161191a44d1e841f9d6114"> 404</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1RaceResultValidator.html#ad029f7a9a5161191a44d1e841f9d6114">getPreviousMemoryAccessInst</a>(</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I)</div><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>  I = I->getPrevNode();</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">while</span> (I)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">if</span> (SVFUtil::isa<LoadInst>(I) || SVFUtil::isa<StoreInst>(I))</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(I))</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="keywordflow">if</span> (<a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a54aa3d7051aab7d65ee1154538bfbb48">ExtAPI::EFT_L_A0__A0R_A1R</a> == <a class="code" href="classSVF_1_1ExtAPI.html#a86508e03ca1c2e37fc9414cb2335c3ec">ExtAPI::getExtAPI</a>()->get_type(callee)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  || callee->getName().find(<span class="stringliteral">"llvm.memset"</span>) != StringRef::npos)</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  I = I->getPrevNode();</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</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> </div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a1effe26639e7663cc3baf36e0abffbac"> 426</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> RC_FLAG RC_MHP = 0x01;</div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a05b95f3110d4653c37730df0b7622e8a"> 427</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> RC_FLAG RC_ALIASES = 0x02;</div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#adf7cfdebbb94b94fba093a8d345096ca"> 428</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> RC_FLAG RC_PROTECTED = 0x04;</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#aabf8c6ed2c4c82ef53bfa67bf9304e04"> 429</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> RC_FLAG RC_RACE = 0x10;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> </div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ae296de41ead49fcff5ea9e7a5afde1c9"> 434</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *RC_ACCESS = <span class="stringliteral">"RC_ACCESS"</span>;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> };</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> } <span class="comment">// namespace SVF end</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="preprocessor">#endif </span><span class="comment">/* MTARESULTVALIDATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1RaceResultValidator_html_aff51b56e5f7173dd8ac053e5d9b1e97d"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#aff51b56e5f7173dd8ac053e5d9b1e97d">SVF::RaceResultValidator::mayHappenInParallel</a></div><div class="ttdeci">virtual bool mayHappenInParallel(const Instruction *I1, const Instruction *I2)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00247">MTAResultValidator.h:247</a></div></div>
|
|
69
|
+
<a href="MTAResultValidator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * MTAResultValidator.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Created on: 29/06/2015</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * Author: Peng Di and Ding Ye</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#ifndef MTARESULTVALIDATOR_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#define MTARESULTVALIDATOR_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "<a class="code" href="MHP_8h.html">MTA/MHP.h</a>"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a>{</div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301"> 18</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  </div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html"> 20</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MTAResultValidator.html">MTAResultValidator</a></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a8e26b7fe85478eef7b3d0551ab59d9c7"> 24</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a8e26b7fe85478eef7b3d0551ab59d9c7">INTERLEV_FLAG</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#af7f90c7a146c085d3b432ab40fb3777e"> 25</a></span>  <a class="code" href="classSVF_1_1MTAResultValidator.html#af7f90c7a146c085d3b432ab40fb3777e">MTAResultValidator</a>(<a class="code" href="classSVF_1_1MHP.html">MHP</a>* mh) :</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a>(mh)</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="classSVF_1_1MTAResultValidator.html#abe087e2e8d92aa218ef282d2493193ef">tcg</a> = <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a>-><a class="code" href="classSVF_1_1MHP.html#a20e740d4b96ef086b6b5778acd38ca88">getThreadCallGraph</a>();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="classSVF_1_1MTAResultValidator.html#aa0ca978e95529568edc4bdac1ffac110">tdAPI</a> = <a class="code" href="classSVF_1_1MTAResultValidator.html#abe087e2e8d92aa218ef282d2493193ef">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="classSVF_1_1MTAResultValidator.html#a8d54a1e8d1703d0c9ba541bcf997e900">mod</a> = <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a>-><a class="code" href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">getTCT</a>()-><a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// Destructor</span></div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#afd9f0901b8474c35011eeb57e9bd15e9"> 33</a></span>  <a class="code" href="classSVF_1_1MTAResultValidator.html#afd9f0901b8474c35011eeb57e9bd15e9">~MTAResultValidator</a>()</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// Analysis</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a462f1554e058b656861abfb0aa2e47ff">analyze</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57"> 39</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a8d54a1e8d1703d0c9ba541bcf997e900">mod</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">/*</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> * Assistant functions</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"> */</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// Split string</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::vector<std::string> &<a class="code" href="classSVF_1_1MTAResultValidator.html#a73db9ad234b263b6e644e4b38be14fe6">split</a>(<span class="keyword">const</span> std::string &s, <span class="keywordtype">char</span> delim, std::vector<std::string> &elems);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::vector<std::string> <a class="code" href="classSVF_1_1MTAResultValidator.html#a73db9ad234b263b6e644e4b38be14fe6">split</a>(<span class="keyword">const</span> std::string &s, <span class="keywordtype">char</span> delim);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Get special arguments of given call sites</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  NodeID <a class="code" href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">getIntArg</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> arg_num);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  std::vector<std::string> <a class="code" href="classSVF_1_1MTAResultValidator.html#a1ac51d2847f9bdee27092ab22211bb61">getStringArg</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> arg_num);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> <a class="code" href="classSVF_1_1MTAResultValidator.html#afb110fec926967ba334bf2635d58a339">getCxtArg</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> arg_num);</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>  <span class="comment">/*</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment"> * Get the previous LoadInst or StoreInst from Instruction "I" in the</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment"> * same BasicBlock. Return nullptr if none exists.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment"> */</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1MTAResultValidator.html#ab3ba3c6d9c40e97febdab0e7d4ad9a3e">getPreviousMemoryAccessInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// Compare two cxts</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a6306899b5360e106dd090bea571027bf">matchCxt</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt2) <span class="keyword">const</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Dump calling context information</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#ae7d61becd14123f60976fd7261d0c84d">dumpCxt</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& cxt) <span class="keyword">const</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a1af033b5742fa9cc1e4f9873184775b7">dumpInterlev</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>& lev);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Get the validation result string of a single validation scenario.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *scenario, <span class="keywordtype">bool</span> analysisRes);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1MTAResultValidator.html#ac24a8a6922d9dc9edecab3bc45bc9204">getOutputforInterlevAnalysis</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *scenario, INTERLEV_FLAG analysisRes);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">/*</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment"> * Collect the callsite targets for validations.</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment"> * The targets are labeled by "cs1:", "cs2:"... that are the names of its basic blocks.</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment"> * The collected targets are stored in csnumToInstMap that maps label "cs1" to CallInst.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment"> */</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a1fc4116b134aa87420d055b193208e68">collectCallsiteTargets</a>();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">/*</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment"> * Collect the CxtThread targets for validations.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment"> * The collected targets are stored in vthdToCxt that maps vthd to cxt.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment"> */</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a430c03371b2b5b7300c5c3a68d633909">collectCxtThreadTargets</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">/*</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment"> * Collect TCT targets for validations.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment"> * The collected targets are stored in rthdToChildren.</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment"> */</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#abdf31e8fca824b56a53788de525042a6">collectTCTTargets</a>();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">/*</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment"> * Collect the thread interleaving targets for validations.</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment"> * The collected targets are stored in instToTSMap and threadStmtToInterLeaving.</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment"> */</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a3c3eacff786230d093d27615ff360ed4">collectInterleavingTargets</a>();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">/*</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment"> * Perform validation for Cxtthread.</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment"> * If correct, the validator maps given thread vthd to static CxtThread rthd stored in vthdTorthd.</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment"> */</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#afa01b108b67ec2ac05a6444b55dbfe01">validateCxtThread</a>();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">/*</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment"> * Perform validation for TCT.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment"> */</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#ae6a18cbaf113ee8e28c3e8dca458d4be">validateTCT</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">/*</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment"> * Perform validation for thread interleaving.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment"> */</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  INTERLEV_FLAG <a class="code" href="classSVF_1_1MTAResultValidator.html#a373b5227fbfa82ac070f55db999afb28">validateInterleaving</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ab2d02695cc8e6fc9e9a46d9d26466fb1"> 118</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, const CallInst*></a> <a class="code" href="classSVF_1_1MTAResultValidator.html#ab2d02695cc8e6fc9e9a46d9d26466fb1">csnumToInst</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a1392757f98b54057d33adb125fd48efa"> 119</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, CallStrCxt></a> <a class="code" href="classSVF_1_1MTAResultValidator.html#a1392757f98b54057d33adb125fd48efa">vthdToCxtMap</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a7fc576e83fa259d0ab06d54c3537c4ac"> 120</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, NodeID></a> <a class="code" href="classSVF_1_1MTAResultValidator.html#a7fc576e83fa259d0ab06d54c3537c4ac">vthdTorthdMap</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ab386260dd6bbaeacde10e5c81f07502c"> 121</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, NodeID></a> <a class="code" href="classSVF_1_1MTAResultValidator.html#ab386260dd6bbaeacde10e5c81f07502c">rthdTovthdMap</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a7d2043cf3c354812fa5e4cdf7f60ff20"> 123</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, Set<NodeID></a>> <a class="code" href="classSVF_1_1MTAResultValidator.html#a7d2043cf3c354812fa5e4cdf7f60ff20">rthdToChildrenMap</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a8452bf182f6f1e0f4c239f620ee803b1"> 125</a></span>  <a class="code" href="classSVF_1_1MHP.html#ae3e240893d0950354d3d775e87d4adf9">MHP::InstToThreadStmtSetMap</a> <a class="code" href="classSVF_1_1MTAResultValidator.html#a8452bf182f6f1e0f4c239f620ee803b1">instToTSMap</a>; <span class="comment">// Map a instruction to CxtThreadStmtSet</span></div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ac4a7773211a9c842639ac25b1a504c7e"> 126</a></span>  <a class="code" href="classSVF_1_1MHP.html#ac30f283cb2ad020a054ee6525ca94025">MHP::ThreadStmtToThreadInterleav</a> <a class="code" href="classSVF_1_1MTAResultValidator.html#ac4a7773211a9c842639ac25b1a504c7e">threadStmtToInterLeaving</a>; </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a251e16fc1fb663c238122dd6d2ba02e1"> 128</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *<a class="code" href="classSVF_1_1MTAResultValidator.html#a251e16fc1fb663c238122dd6d2ba02e1">CXT_THREAD</a> = <span class="stringliteral">"CXT_THREAD"</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a7b47044960a12203ce0ce245c4c9c8ec"> 129</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *<a class="code" href="classSVF_1_1MTAResultValidator.html#a7b47044960a12203ce0ce245c4c9c8ec">INTERLEV_ACCESS</a> = <span class="stringliteral">"INTERLEV_ACCESS"</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ae709b039a68f5600271c40903b1c0dbe"> 130</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *<a class="code" href="classSVF_1_1MTAResultValidator.html#ae709b039a68f5600271c40903b1c0dbe">TCT_ACCESS</a> = <span class="stringliteral">"TCT_ACCESS"</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#aa0ca978e95529568edc4bdac1ffac110"> 132</a></span>  <a class="code" href="classSVF_1_1ThreadAPI.html">ThreadAPI</a>* <a class="code" href="classSVF_1_1MTAResultValidator.html#aa0ca978e95529568edc4bdac1ffac110">tdAPI</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#abe087e2e8d92aa218ef282d2493193ef"> 133</a></span>  <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* <a class="code" href="classSVF_1_1MTAResultValidator.html#abe087e2e8d92aa218ef282d2493193ef">tcg</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857"> 134</a></span>  <a class="code" href="classSVF_1_1MHP.html">MHP</a>* <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a245c967245e5a693eaf7f60782143d7a"> 135</a></span>  vthdToCxtMap <a class="code" href="classSVF_1_1MTAResultValidator.html#a245c967245e5a693eaf7f60782143d7a">vthdToCxt</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a"> 136</a></span>  vthdTorthdMap <a class="code" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">vthdTorthd</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a615623a08324ee155cb527a3b57e8c19"> 137</a></span>  rthdTovthdMap <a class="code" href="classSVF_1_1MTAResultValidator.html#a615623a08324ee155cb527a3b57e8c19">rthdTovthd</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ae2717c467dc7c49fab0ec93bfa4baaab"> 138</a></span>  csnumToInst <a class="code" href="classSVF_1_1MTAResultValidator.html#ae2717c467dc7c49fab0ec93bfa4baaab">csnumToInstMap</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a542f2f41c90698270687fc7858a26555"> 139</a></span>  rthdToChildrenMap <a class="code" href="classSVF_1_1MTAResultValidator.html#a542f2f41c90698270687fc7858a26555">rthdToChildren</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a8d54a1e8d1703d0c9ba541bcf997e900"> 140</a></span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1MTAResultValidator.html#a8d54a1e8d1703d0c9ba541bcf997e900">mod</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ac76235240be9684bc71fd924ed83b05b"> 143</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> INTERLEV_FLAG <a class="code" href="classSVF_1_1MTAResultValidator.html#ac76235240be9684bc71fd924ed83b05b">INTERLEV_TRUE</a> = 0x01;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a3f3cc6bcc79e4125ef9a49857442319d"> 144</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> INTERLEV_FLAG <a class="code" href="classSVF_1_1MTAResultValidator.html#a3f3cc6bcc79e4125ef9a49857442319d">INTERLEV_IMPRECISE</a> = 0x02;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a1c34f6a65688a3261ec27a35e9b9601b"> 145</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> INTERLEV_FLAG <a class="code" href="classSVF_1_1MTAResultValidator.html#a1c34f6a65688a3261ec27a35e9b9601b">INTERLEV_UNSOUND</a> = 0x04;</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> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html"> 166</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1RaceResultValidator.html">RaceResultValidator</a></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ac57ae430ee5b6868fe810172ec658853"> 169</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#ac57ae430ee5b6868fe810172ec658853">RC_FLAG</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html"> 174</a></span>  <span class="keyword">class </span><a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html">AccessPair</a></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a7dd2f8afab59ee4d107a6bfdb6c151ea"> 178</a></span>  <a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a7dd2f8afab59ee4d107a6bfdb6c151ea">AccessPair</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">const</span> RC_FLAG flags) :</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  I1(I1), I2(I2), flags(flags)</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>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1"> 186</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(<span class="keyword">const</span> RC_FLAG flag)<span class="keyword"> const</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> flags & flag;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a97307972daebc1fc358ba2c8009c5990"> 190</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a97307972daebc1fc358ba2c8009c5990">getInstruction1</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> I1;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#acf383712e9399fec0d52614b2338836c"> 194</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#acf383712e9399fec0d52614b2338836c">getInstruction2</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> I2;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a753e4df194dc85e37a0285eaac7b30f7"> 201</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a753e4df194dc85e37a0285eaac7b30f7">I1</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#ad06bd4046fd98b85e6d1f97fcd472d3b"> 202</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#ad06bd4046fd98b85e6d1f97fcd472d3b">I2</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#aafb0a0cd068e1632f0d643233cad8ad9"> 203</a></span>  RC_FLAG <a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#aafb0a0cd068e1632f0d643233cad8ad9">flags</a>;</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="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a8f0d25327d5365f6ae229723aa5d6ff7"> 207</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a8f0d25327d5365f6ae229723aa5d6ff7">~RaceResultValidator</a>()</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  release();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#aec8b923a0da580113a13bf94ffb3ebd7"> 213</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#aec8b923a0da580113a13bf94ffb3ebd7">init</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* M)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  this->M = M;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  selectedValidationScenarios = RC_MHP | RC_ALIASES | RC_PROTECTED | RC_RACE;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  collectValidationTargets();</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> </div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ab8a261120a7f6520d22a6f5cdf2257e9"> 221</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#ab8a261120a7f6520d22a6f5cdf2257e9">analyze</a>()</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  validateAll();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a64f61b58f59eba5f3e7c69f90edc68df"> 227</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a64f61b58f59eba5f3e7c69f90edc68df">release</a>()</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>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a749793355ab8390a1e6577d7b05efddf"> 232</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a749793355ab8390a1e6577d7b05efddf">hasValidationTarget</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> !accessPairs.empty();</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ade9f150c970aa2cc481c878aebf71662"> 241</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#ade9f150c970aa2cc481c878aebf71662">mayAccessAliases</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1,</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2)</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>  selectedValidationScenarios &= ~RC_ALIASES;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#aff51b56e5f7173dd8ac053e5d9b1e97d"> 247</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#aff51b56e5f7173dd8ac053e5d9b1e97d">mayHappenInParallel</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1,</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2)</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>  selectedValidationScenarios &= ~RC_MHP;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <span class="keyword">true</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"><a class="line" href="classSVF_1_1RaceResultValidator.html#aeb24aa510c7073ef71062e89a11fe00a"> 253</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#aeb24aa510c7073ef71062e89a11fe00a">protectedByCommonLocks</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  selectedValidationScenarios &= ~RC_PROTECTED;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a1df6b00752e373ac7bf08a2cae0b9641"> 259</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a1df6b00752e373ac7bf08a2cae0b9641">mayHaveDataRace</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1,</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2)</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>  selectedValidationScenarios &= ~RC_RACE;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#adb3030fc7514506e2592e11898217375"> 272</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#adb3030fc7514506e2592e11898217375">collectValidationTargets</a>()</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// Collect call sites of all RC_ACCESS function calls.</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  std::vector<const CallInst*> csInsts;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *F = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = M->llvmFunBegin(); it != M->llvmFunEnd(); it++){</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">const</span> std::string fName = (*it)->getName().str();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span>(fName.find(RC_ACCESS) != std::string::npos) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  F = (*it);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  } </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span> (!F) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">for</span> (Value::const_use_iterator it = F->use_begin(), ie =</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  F->use_end(); it != ie; ++it)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">Use</a> *u = &*it;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *user = u->getUser();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *csInst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>>(user);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(csInst);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  csInsts.push_back(csInst);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(csInsts.size() % 2 == 0 && <span class="stringliteral">"We should have RC_ACCESS called in pairs."</span>);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="comment">// Sort the validation sites according to their ids.</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  std::sort(csInsts.begin(), csInsts.end(), compare);</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>  <span class="comment">// Generate access pairs.</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0, e = csInsts.size(); i != e;)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *CI1 = csInsts[i++];</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *CI2 = csInsts[i++];</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *C = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>>(CI1->getOperand(1));</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(C);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1 = <a class="code" href="classSVF_1_1MTAResultValidator.html#ab3ba3c6d9c40e97febdab0e7d4ad9a3e">getPreviousMemoryAccessInst</a>(CI1);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2 = <a class="code" href="classSVF_1_1MTAResultValidator.html#ab3ba3c6d9c40e97febdab0e7d4ad9a3e">getPreviousMemoryAccessInst</a>(CI2);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(I1 && I2 && <span class="stringliteral">"RC_ACCESS should be placed immediately after the target memory access."</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  RC_FLAG flags = C->getZExtValue();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  accessPairs.push_back(<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html">AccessPair</a>(I1, I2, flags));</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>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a58e07fcd0d9a611dfd31ab62802c5990"> 316</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a58e07fcd0d9a611dfd31ab62802c5990">validateAll</a>()</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">" --- Analysis Result Validation ---\n"</span>);</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>  <span class="comment">// Iterate every memory access pair to perform the validation.</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0, e = accessPairs.size(); i != e; ++i)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html">AccessPair</a> &ap = accessPairs[i];</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1 = ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a97307972daebc1fc358ba2c8009c5990">getInstruction1</a>();</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2 = ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#acf383712e9399fec0d52614b2338836c">getInstruction2</a>();</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a> = mayHappenInParallel(I1, I2);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordtype">bool</span> alias = mayAccessAliases(I1, I2);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordtype">bool</span> protect = protectedByCommonLocks(I1, I2);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordtype">bool</span> racy = mayHaveDataRace(I1, I2);</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="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"For the memory access pair at ("</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(I1) << <span class="stringliteral">", "</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(I2) << <span class="stringliteral">")\n"</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span> (selectedValidationScenarios & RC_ALIASES)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\t"</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  << <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="stringliteral">"ALIASES"</span>, alias, ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(RC_ALIASES))</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  << <span class="stringliteral">"\n"</span>;</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>  <span class="keywordflow">if</span> (selectedValidationScenarios & RC_MHP)</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\t"</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  << <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="stringliteral">"MHP"</span>, mhp, ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(RC_MHP)) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span> (selectedValidationScenarios & RC_PROTECTED)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\t"</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  << <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="stringliteral">"PROTECT"</span>, protect,</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(RC_PROTECTED)) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span> (selectedValidationScenarios & RC_RACE)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\t"</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  << <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="stringliteral">"RACE"</span>, racy, ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(RC_RACE))</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#afdd89e26a7c168762bfe85746252827f"> 364</a></span>  <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1RaceResultValidator.html#afdd89e26a7c168762bfe85746252827f">getOutput</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *scenario,</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordtype">bool</span> analysisRes, <span class="keywordtype">bool</span> expectedRes)</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  std::string ret(scenario);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  ret += <span class="stringliteral">"\t"</span>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">if</span> (expectedRes)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  ret += <span class="stringliteral">" T: "</span>;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  ret += <span class="stringliteral">" F: "</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">if</span> (analysisRes == expectedRes)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  ret += <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">SVFUtil::sucMsg</a>(<span class="stringliteral">"SUCCESS"</span>);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  ret += <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">SVFUtil::errMsg</a>(<span class="stringliteral">"FAILURE"</span>);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">return</span> ret;</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> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#abd3ad42a71357dfd1483e6e0d18d5ebd"> 381</a></span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1RaceResultValidator.html#abd3ad42a71357dfd1483e6e0d18d5ebd">M</a>;</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a8436ecde1e34bca7cef86a320ad42162"> 382</a></span>  std::vector<AccessPair> <a class="code" href="classSVF_1_1RaceResultValidator.html#a8436ecde1e34bca7cef86a320ad42162">accessPairs</a>;</div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a1294cb90b073ba25a8ffc06180c09419"> 383</a></span>  RC_FLAG <a class="code" href="classSVF_1_1RaceResultValidator.html#a1294cb90b073ba25a8ffc06180c09419">selectedValidationScenarios</a>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a7a16fb7a3f382284dbb080802f6e6f43"> 389</a></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a7a16fb7a3f382284dbb080802f6e6f43">compare</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *CI1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *CI2)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *V1 = CI1->getOperand(0);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *V2 = CI2->getOperand(0);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *C1 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>>(V1);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *C2 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>>(V2);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 != C1 && 0 != C2);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">return</span> C1->getZExtValue() < C2->getZExtValue();</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ad029f7a9a5161191a44d1e841f9d6114"> 404</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1RaceResultValidator.html#ad029f7a9a5161191a44d1e841f9d6114">getPreviousMemoryAccessInst</a>(</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I)</div><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>  I = I->getPrevNode();</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">while</span> (I)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">if</span> (SVFUtil::isa<LoadInst>(I) || SVFUtil::isa<StoreInst>(I))</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(I))</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="keywordflow">if</span> (<a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a54aa3d7051aab7d65ee1154538bfbb48">ExtAPI::EFT_L_A0__A0R_A1R</a> == <a class="code" href="classSVF_1_1ExtAPI.html#a86508e03ca1c2e37fc9414cb2335c3ec">ExtAPI::getExtAPI</a>()->get_type(callee)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  || callee->getName().find(<span class="stringliteral">"llvm.memset"</span>) != StringRef::npos)</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  I = I->getPrevNode();</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</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> </div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a1effe26639e7663cc3baf36e0abffbac"> 426</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> RC_FLAG RC_MHP = 0x01;</div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a05b95f3110d4653c37730df0b7622e8a"> 427</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> RC_FLAG RC_ALIASES = 0x02;</div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#adf7cfdebbb94b94fba093a8d345096ca"> 428</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> RC_FLAG RC_PROTECTED = 0x04;</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#aabf8c6ed2c4c82ef53bfa67bf9304e04"> 429</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> RC_FLAG RC_RACE = 0x10;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> </div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ae296de41ead49fcff5ea9e7a5afde1c9"> 434</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *RC_ACCESS = <span class="stringliteral">"RC_ACCESS"</span>;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> };</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> } <span class="comment">// namespace SVF end</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="preprocessor">#endif </span><span class="comment">/* MTARESULTVALIDATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1RaceResultValidator_html_aff51b56e5f7173dd8ac053e5d9b1e97d"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#aff51b56e5f7173dd8ac053e5d9b1e97d">SVF::RaceResultValidator::mayHappenInParallel</a></div><div class="ttdeci">virtual bool mayHappenInParallel(const Instruction *I1, const Instruction *I2)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00247">MTAResultValidator.h:247</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1MHP_html"><div class="ttname"><a href="classSVF_1_1MHP.html">SVF::MHP</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00023">MHP.h:23</a></div></div>
|
|
71
|
-
<div class="ttc" id="namespaceSVF_html_a334998718813a19a7697daf4ba282faf"><div class="ttname"><a href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">SVF::Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
71
|
+
<div class="ttc" id="namespaceSVF_html_a334998718813a19a7697daf4ba282faf"><div class="ttname"><a href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">SVF::Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_1_1AccessPair_html_a97307972daebc1fc358ba2c8009c5990"><div class="ttname"><a href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a97307972daebc1fc358ba2c8009c5990">SVF::RaceResultValidator::AccessPair::getInstruction1</a></div><div class="ttdeci">const Instruction * getInstruction1() const</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00190">MTAResultValidator.h:190</a></div></div>
|
|
73
73
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_a7a16fb7a3f382284dbb080802f6e6f43"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#a7a16fb7a3f382284dbb080802f6e6f43">SVF::RaceResultValidator::compare</a></div><div class="ttdeci">static bool compare(const CallInst *CI1, const CallInst *CI2)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00389">MTAResultValidator.h:389</a></div></div>
|
|
74
74
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a1392757f98b54057d33adb125fd48efa"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a1392757f98b54057d33adb125fd48efa">SVF::MTAResultValidator::vthdToCxtMap</a></div><div class="ttdeci">Map< NodeID, CallStrCxt > vthdToCxtMap</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00119">MTAResultValidator.h:119</a></div></div>
|
|
75
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a6306899b5360e106dd090bea571027bf"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a6306899b5360e106dd090bea571027bf">SVF::MTAResultValidator::matchCxt</a></div><div class="ttdeci">bool matchCxt(const CallStrCxt cxt1, const CallStrCxt cxt2) const</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
75
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a6306899b5360e106dd090bea571027bf"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a6306899b5360e106dd090bea571027bf">SVF::MTAResultValidator::matchCxt</a></div><div class="ttdeci">bool matchCxt(const CallStrCxt cxt1, const CallStrCxt cxt2) const</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00152">MTAResultValidator.cpp:152</a></div></div>
|
|
76
76
|
<div class="ttc" id="MHP_8h_html"><div class="ttname"><a href="MHP_8h.html">MHP.h</a></div></div>
|
|
77
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a73db9ad234b263b6e644e4b38be14fe6"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a73db9ad234b263b6e644e4b38be14fe6">SVF::MTAResultValidator::split</a></div><div class="ttdeci">std::vector< std::string > & split(const std::string &s, char delim, std::vector< std::string > &elems)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
77
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a73db9ad234b263b6e644e4b38be14fe6"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a73db9ad234b263b6e644e4b38be14fe6">SVF::MTAResultValidator::split</a></div><div class="ttdeci">std::vector< std::string > & split(const std::string &s, char delim, std::vector< std::string > &elems)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00042">MTAResultValidator.cpp:42</a></div></div>
|
|
78
78
|
<div class="ttc" id="classSVF_1_1MHP_html_ae3e240893d0950354d3d775e87d4adf9"><div class="ttname"><a href="classSVF_1_1MHP.html#ae3e240893d0950354d3d775e87d4adf9">SVF::MHP::InstToThreadStmtSetMap</a></div><div class="ttdeci">Map< const Instruction *, CxtThreadStmtSet > InstToThreadStmtSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00033">MHP.h:33</a></div></div>
|
|
79
79
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_abe087e2e8d92aa218ef282d2493193ef"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#abe087e2e8d92aa218ef282d2493193ef">SVF::MTAResultValidator::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00133">MTAResultValidator.h:133</a></div></div>
|
|
80
80
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
@@ -82,31 +82,31 @@ $(function() {
|
|
|
82
82
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ab2d02695cc8e6fc9e9a46d9d26466fb1"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ab2d02695cc8e6fc9e9a46d9d26466fb1">SVF::MTAResultValidator::csnumToInst</a></div><div class="ttdeci">Map< NodeID, const CallInst * > csnumToInst</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00118">MTAResultValidator.h:118</a></div></div>
|
|
83
83
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00101">SVFUtil.cpp:101</a></div></div>
|
|
84
84
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_a58e07fcd0d9a611dfd31ab62802c5990"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#a58e07fcd0d9a611dfd31ab62802c5990">SVF::RaceResultValidator::validateAll</a></div><div class="ttdeci">void validateAll()</div><div class="ttdoc">Perform validation for all targets. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00316">MTAResultValidator.h:316</a></div></div>
|
|
85
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ae7d61becd14123f60976fd7261d0c84d"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ae7d61becd14123f60976fd7261d0c84d">SVF::MTAResultValidator::dumpCxt</a></div><div class="ttdeci">void dumpCxt(const CallStrCxt &cxt) const</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
86
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a4ff908be3569c18528fb6f6ff98cd11a"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">SVF::MTAResultValidator::getIntArg</a></div><div class="ttdeci">NodeID getIntArg(const Instruction *inst, unsigned int arg_num)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
85
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ae7d61becd14123f60976fd7261d0c84d"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ae7d61becd14123f60976fd7261d0c84d">SVF::MTAResultValidator::dumpCxt</a></div><div class="ttdeci">void dumpCxt(const CallStrCxt &cxt) const</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00159">MTAResultValidator.cpp:159</a></div></div>
|
|
86
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a4ff908be3569c18528fb6f6ff98cd11a"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">SVF::MTAResultValidator::getIntArg</a></div><div class="ttdeci">NodeID getIntArg(const Instruction *inst, unsigned int arg_num)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00059">MTAResultValidator.cpp:59</a></div></div>
|
|
87
87
|
<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>
|
|
88
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ab3ba3c6d9c40e97febdab0e7d4ad9a3e"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ab3ba3c6d9c40e97febdab0e7d4ad9a3e">SVF::MTAResultValidator::getPreviousMemoryAccessInst</a></div><div class="ttdeci">const Instruction * getPreviousMemoryAccessInst(const Instruction *I)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
89
|
-
<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#
|
|
88
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ab3ba3c6d9c40e97febdab0e7d4ad9a3e"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ab3ba3c6d9c40e97febdab0e7d4ad9a3e">SVF::MTAResultValidator::getPreviousMemoryAccessInst</a></div><div class="ttdeci">const Instruction * getPreviousMemoryAccessInst(const Instruction *I)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00107">MTAResultValidator.cpp:107</a></div></div>
|
|
89
|
+
<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#l00184">BasicTypes.h:184</a></div></div>
|
|
90
90
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html">SVF::MTAResultValidator</a></div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
|
|
91
91
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a7382b2759b01b8382c5e59b21e7e262a"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">SVF::MTAResultValidator::vthdTorthd</a></div><div class="ttdeci">vthdTorthdMap vthdTorthd</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00136">MTAResultValidator.h:136</a></div></div>
|
|
92
|
-
<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="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
93
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ac24a8a6922d9dc9edecab3bc45bc9204"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ac24a8a6922d9dc9edecab3bc45bc9204">SVF::MTAResultValidator::getOutputforInterlevAnalysis</a></div><div class="ttdeci">std::string getOutputforInterlevAnalysis(const char *scenario, INTERLEV_FLAG analysisRes)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
92
|
+
<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="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00127">BasicTypes.h:127</a></div></div>
|
|
93
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ac24a8a6922d9dc9edecab3bc45bc9204"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ac24a8a6922d9dc9edecab3bc45bc9204">SVF::MTAResultValidator::getOutputforInterlevAnalysis</a></div><div class="ttdeci">std::string getOutputforInterlevAnalysis(const char *scenario, INTERLEV_FLAG analysisRes)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00131">MTAResultValidator.cpp:131</a></div></div>
|
|
94
94
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a251e16fc1fb663c238122dd6d2ba02e1"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a251e16fc1fb663c238122dd6d2ba02e1">SVF::MTAResultValidator::CXT_THREAD</a></div><div class="ttdeci">static constexpr char const * CXT_THREAD</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00128">MTAResultValidator.h:128</a></div></div>
|
|
95
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a373b5227fbfa82ac070f55db999afb28"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a373b5227fbfa82ac070f55db999afb28">SVF::MTAResultValidator::validateInterleaving</a></div><div class="ttdeci">INTERLEV_FLAG validateInterleaving()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
95
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a373b5227fbfa82ac070f55db999afb28"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a373b5227fbfa82ac070f55db999afb28">SVF::MTAResultValidator::validateInterleaving</a></div><div class="ttdeci">INTERLEV_FLAG validateInterleaving()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00451">MTAResultValidator.cpp:451</a></div></div>
|
|
96
96
|
<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>
|
|
97
97
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a7d2043cf3c354812fa5e4cdf7f60ff20"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a7d2043cf3c354812fa5e4cdf7f60ff20">SVF::MTAResultValidator::rthdToChildrenMap</a></div><div class="ttdeci">Map< NodeID, Set< NodeID > > rthdToChildrenMap</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00123">MTAResultValidator.h:123</a></div></div>
|
|
98
98
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_afdd89e26a7c168762bfe85746252827f"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#afdd89e26a7c168762bfe85746252827f">SVF::RaceResultValidator::getOutput</a></div><div class="ttdeci">std::string getOutput(const char *scenario, bool analysisRes, bool expectedRes)</div><div class="ttdoc">Get the validation result string of a single validation scenario. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00364">MTAResultValidator.h:364</a></div></div>
|
|
99
99
|
<div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
|
|
100
|
-
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
100
|
+
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00113">BasicTypes.h:113</a></div></div>
|
|
101
101
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_a1294cb90b073ba25a8ffc06180c09419"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#a1294cb90b073ba25a8ffc06180c09419">SVF::RaceResultValidator::selectedValidationScenarios</a></div><div class="ttdeci">RC_FLAG selectedValidationScenarios</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00383">MTAResultValidator.h:383</a></div></div>
|
|
102
102
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_1_1AccessPair_html_aafb0a0cd068e1632f0d643233cad8ad9"><div class="ttname"><a href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#aafb0a0cd068e1632f0d643233cad8ad9">SVF::RaceResultValidator::AccessPair::flags</a></div><div class="ttdeci">RC_FLAG flags</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00203">MTAResultValidator.h:203</a></div></div>
|
|
103
103
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6a55f1f8598998a3ffbbc67d32eaf8c4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">SVF::SVFUtil::sucMsg</a></div><div class="ttdeci">std::string sucMsg(std::string msg)</div><div class="ttdoc">Returns successful message by converting a string into green string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00056">SVFUtil.cpp:56</a></div></div>
|
|
104
104
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a7fc576e83fa259d0ab06d54c3537c4ac"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a7fc576e83fa259d0ab06d54c3537c4ac">SVF::MTAResultValidator::vthdTorthdMap</a></div><div class="ttdeci">Map< NodeID, NodeID > vthdTorthdMap</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00120">MTAResultValidator.h:120</a></div></div>
|
|
105
|
-
<div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
105
|
+
<div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00106">SVFBasicTypes.h:106</a></div></div>
|
|
106
106
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_ac57ae430ee5b6868fe810172ec658853"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#ac57ae430ee5b6868fe810172ec658853">SVF::RaceResultValidator::RC_FLAG</a></div><div class="ttdeci">int RC_FLAG</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00169">MTAResultValidator.h:169</a></div></div>
|
|
107
107
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_1_1AccessPair_html"><div class="ttname"><a href="classSVF_1_1RaceResultValidator_1_1AccessPair.html">SVF::RaceResultValidator::AccessPair</a></div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00174">MTAResultValidator.h:174</a></div></div>
|
|
108
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a3c3eacff786230d093d27615ff360ed4"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a3c3eacff786230d093d27615ff360ed4">SVF::MTAResultValidator::collectInterleavingTargets</a></div><div class="ttdeci">bool collectInterleavingTargets()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
109
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_afa01b108b67ec2ac05a6444b55dbfe01"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#afa01b108b67ec2ac05a6444b55dbfe01">SVF::MTAResultValidator::validateCxtThread</a></div><div class="ttdeci">bool validateCxtThread()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
108
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a3c3eacff786230d093d27615ff360ed4"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a3c3eacff786230d093d27615ff360ed4">SVF::MTAResultValidator::collectInterleavingTargets</a></div><div class="ttdeci">bool collectInterleavingTargets()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00281">MTAResultValidator.cpp:281</a></div></div>
|
|
109
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_afa01b108b67ec2ac05a6444b55dbfe01"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#afa01b108b67ec2ac05a6444b55dbfe01">SVF::MTAResultValidator::validateCxtThread</a></div><div class="ttdeci">bool validateCxtThread()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00325">MTAResultValidator.cpp:325</a></div></div>
|
|
110
110
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_a8f0d25327d5365f6ae229723aa5d6ff7"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#a8f0d25327d5365f6ae229723aa5d6ff7">SVF::RaceResultValidator::~RaceResultValidator</a></div><div class="ttdeci">virtual ~RaceResultValidator()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00207">MTAResultValidator.h:207</a></div></div>
|
|
111
111
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_adb3030fc7514506e2592e11898217375"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#adb3030fc7514506e2592e11898217375">SVF::RaceResultValidator::collectValidationTargets</a></div><div class="ttdeci">void collectValidationTargets()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00272">MTAResultValidator.h:272</a></div></div>
|
|
112
112
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_ad029f7a9a5161191a44d1e841f9d6114"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#ad029f7a9a5161191a44d1e841f9d6114">SVF::RaceResultValidator::getPreviousMemoryAccessInst</a></div><div class="ttdeci">const Instruction * getPreviousMemoryAccessInst(const Instruction *I)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00404">MTAResultValidator.h:404</a></div></div>
|
|
@@ -117,12 +117,13 @@ $(function() {
|
|
|
117
117
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_aec8b923a0da580113a13bf94ffb3ebd7"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#aec8b923a0da580113a13bf94ffb3ebd7">SVF::RaceResultValidator::init</a></div><div class="ttdeci">void init(SVFModule *M)</div><div class="ttdoc">Initialization. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00213">MTAResultValidator.h:213</a></div></div>
|
|
118
118
|
<div class="ttc" id="classSVF_1_1MHP_html_ac30f283cb2ad020a054ee6525ca94025"><div class="ttname"><a href="classSVF_1_1MHP.html#ac30f283cb2ad020a054ee6525ca94025">SVF::MHP::ThreadStmtToThreadInterleav</a></div><div class="ttdeci">Map< CxtThreadStmt, NodeBS > ThreadStmtToThreadInterleav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00032">MHP.h:32</a></div></div>
|
|
119
119
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_ab8a261120a7f6520d22a6f5cdf2257e9"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#ab8a261120a7f6520d22a6f5cdf2257e9">SVF::RaceResultValidator::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdoc">Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00221">MTAResultValidator.h:221</a></div></div>
|
|
120
|
+
<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#l00127">SVFBasicTypes.h:127</a></div></div>
|
|
120
121
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ac4a7773211a9c842639ac25b1a504c7e"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ac4a7773211a9c842639ac25b1a504c7e">SVF::MTAResultValidator::threadStmtToInterLeaving</a></div><div class="ttdeci">MHP::ThreadStmtToThreadInterleav threadStmtToInterLeaving</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00126">MTAResultValidator.h:126</a></div></div>
|
|
121
|
-
<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#
|
|
122
|
+
<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#l00073">BasicTypes.h:73</a></div></div>
|
|
122
123
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a8d54a1e8d1703d0c9ba541bcf997e900"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a8d54a1e8d1703d0c9ba541bcf997e900">SVF::MTAResultValidator::mod</a></div><div class="ttdeci">SVFModule * mod</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00140">MTAResultValidator.h:140</a></div></div>
|
|
123
124
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_aa0ca978e95529568edc4bdac1ffac110"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#aa0ca978e95529568edc4bdac1ffac110">SVF::MTAResultValidator::tdAPI</a></div><div class="ttdeci">ThreadAPI * tdAPI</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00132">MTAResultValidator.h:132</a></div></div>
|
|
124
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_afb110fec926967ba334bf2635d58a339"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#afb110fec926967ba334bf2635d58a339">SVF::MTAResultValidator::getCxtArg</a></div><div class="ttdeci">CallStrCxt getCxtArg(const Instruction *inst, unsigned int arg_num)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
125
|
-
<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#
|
|
125
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_afb110fec926967ba334bf2635d58a339"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#afb110fec926967ba334bf2635d58a339">SVF::MTAResultValidator::getCxtArg</a></div><div class="ttdeci">CallStrCxt getCxtArg(const Instruction *inst, unsigned int arg_num)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00085">MTAResultValidator.cpp:85</a></div></div>
|
|
126
|
+
<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#l00076">BasicTypes.h:76</a></div></div>
|
|
126
127
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_1_1AccessPair_html_a7dd2f8afab59ee4d107a6bfdb6c151ea"><div class="ttname"><a href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a7dd2f8afab59ee4d107a6bfdb6c151ea">SVF::RaceResultValidator::AccessPair::AccessPair</a></div><div class="ttdeci">AccessPair(const Instruction *I1, const Instruction *I2, const RC_FLAG flags)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00178">MTAResultValidator.h:178</a></div></div>
|
|
127
128
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a245c967245e5a693eaf7f60782143d7a"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a245c967245e5a693eaf7f60782143d7a">SVF::MTAResultValidator::vthdToCxt</a></div><div class="ttdeci">vthdToCxtMap vthdToCxt</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00135">MTAResultValidator.h:135</a></div></div>
|
|
128
129
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a1c34f6a65688a3261ec27a35e9b9601b"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a1c34f6a65688a3261ec27a35e9b9601b">SVF::MTAResultValidator::INTERLEV_UNSOUND</a></div><div class="ttdeci">static const INTERLEV_FLAG INTERLEV_UNSOUND</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00145">MTAResultValidator.h:145</a></div></div>
|
|
@@ -130,13 +131,12 @@ $(function() {
|
|
|
130
131
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_1_1AccessPair_html_acf383712e9399fec0d52614b2338836c"><div class="ttname"><a href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#acf383712e9399fec0d52614b2338836c">SVF::RaceResultValidator::AccessPair::getInstruction2</a></div><div class="ttdeci">const Instruction * getInstruction2() const</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00194">MTAResultValidator.h:194</a></div></div>
|
|
131
132
|
<div class="ttc" id="classSVF_1_1ThreadAPI_html"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html">SVF::ThreadAPI</a></div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00043">ThreadAPI.h:43</a></div></div>
|
|
132
133
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ac76235240be9684bc71fd924ed83b05b"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ac76235240be9684bc71fd924ed83b05b">SVF::MTAResultValidator::INTERLEV_TRUE</a></div><div class="ttdeci">static const INTERLEV_FLAG INTERLEV_TRUE</div><div class="ttdoc">Constant INTERLEV_FLAG values. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00143">MTAResultValidator.h:143</a></div></div>
|
|
133
|
-
<div class="ttc" id="namespaceSVF_html_a542c6d5483bfc74fa58b45ad06b65960"><div class="ttname"><a href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">SVF::CallStrCxt</a></div><div class="ttdeci">SmallVector16 CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00127">SVFBasicTypes.h:127</a></div></div>
|
|
134
134
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_aecaf875c6c88f7ba6fa45540e8436f57"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">SVF::MTAResultValidator::getModule</a></div><div class="ttdeci">SVFModule * getModule() const</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00039">MTAResultValidator.h:39</a></div></div>
|
|
135
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ae6a18cbaf113ee8e28c3e8dca458d4be"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ae6a18cbaf113ee8e28c3e8dca458d4be">SVF::MTAResultValidator::validateTCT</a></div><div class="ttdeci">bool validateTCT()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
135
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ae6a18cbaf113ee8e28c3e8dca458d4be"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ae6a18cbaf113ee8e28c3e8dca458d4be">SVF::MTAResultValidator::validateTCT</a></div><div class="ttdeci">bool validateTCT()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00400">MTAResultValidator.cpp:400</a></div></div>
|
|
136
136
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a615623a08324ee155cb527a3b57e8c19"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a615623a08324ee155cb527a3b57e8c19">SVF::MTAResultValidator::rthdTovthd</a></div><div class="ttdeci">rthdTovthdMap rthdTovthd</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00137">MTAResultValidator.h:137</a></div></div>
|
|
137
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a9c9baeb57a645b57cc9053b3071f0602"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">SVF::MTAResultValidator::getOutput</a></div><div class="ttdeci">std::string getOutput(const char *scenario, bool analysisRes)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
137
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a9c9baeb57a645b57cc9053b3071f0602"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">SVF::MTAResultValidator::getOutput</a></div><div class="ttdeci">std::string getOutput(const char *scenario, bool analysisRes)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00119">MTAResultValidator.cpp:119</a></div></div>
|
|
138
138
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00268">SVFUtil.h:268</a></div></div>
|
|
139
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a1fc4116b134aa87420d055b193208e68"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a1fc4116b134aa87420d055b193208e68">SVF::MTAResultValidator::collectCallsiteTargets</a></div><div class="ttdeci">bool collectCallsiteTargets()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
139
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a1fc4116b134aa87420d055b193208e68"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a1fc4116b134aa87420d055b193208e68">SVF::MTAResultValidator::collectCallsiteTargets</a></div><div class="ttdeci">bool collectCallsiteTargets()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00185">MTAResultValidator.cpp:185</a></div></div>
|
|
140
140
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_1_1AccessPair_html_a753e4df194dc85e37a0285eaac7b30f7"><div class="ttname"><a href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a753e4df194dc85e37a0285eaac7b30f7">SVF::RaceResultValidator::AccessPair::I1</a></div><div class="ttdeci">const Instruction * I1</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00201">MTAResultValidator.h:201</a></div></div>
|
|
141
141
|
<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>
|
|
142
142
|
<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#l00158">ThreadCallGraph.h:158</a></div></div>
|
|
@@ -146,31 +146,31 @@ $(function() {
|
|
|
146
146
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a8452bf182f6f1e0f4c239f620ee803b1"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a8452bf182f6f1e0f4c239f620ee803b1">SVF::MTAResultValidator::instToTSMap</a></div><div class="ttdeci">MHP::InstToThreadStmtSetMap instToTSMap</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00125">MTAResultValidator.h:125</a></div></div>
|
|
147
147
|
<div class="ttc" id="classSVF_1_1MHP_html_a033936547612c54326a604f0ff1e39a6"><div class="ttname"><a href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">SVF::MHP::getTCT</a></div><div class="ttdeci">TCT * getTCT() const</div><div class="ttdoc">Get Thread Creation Tree. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00059">MHP.h:59</a></div></div>
|
|
148
148
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_1_1AccessPair_html_ad06bd4046fd98b85e6d1f97fcd472d3b"><div class="ttname"><a href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#ad06bd4046fd98b85e6d1f97fcd472d3b">SVF::RaceResultValidator::AccessPair::I2</a></div><div class="ttdeci">const Instruction * I2</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00202">MTAResultValidator.h:202</a></div></div>
|
|
149
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a1af033b5742fa9cc1e4f9873184775b7"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a1af033b5742fa9cc1e4f9873184775b7">SVF::MTAResultValidator::dumpInterlev</a></div><div class="ttdeci">void dumpInterlev(NodeBS &lev)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
149
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a1af033b5742fa9cc1e4f9873184775b7"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a1af033b5742fa9cc1e4f9873184775b7">SVF::MTAResultValidator::dumpInterlev</a></div><div class="ttdeci">void dumpInterlev(NodeBS &lev)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00174">MTAResultValidator.cpp:174</a></div></div>
|
|
150
150
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_a8436ecde1e34bca7cef86a320ad42162"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#a8436ecde1e34bca7cef86a320ad42162">SVF::RaceResultValidator::accessPairs</a></div><div class="ttdeci">std::vector< AccessPair > accessPairs</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00382">MTAResultValidator.h:382</a></div></div>
|
|
151
151
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_1_1AccessPair_html_a63f574da7298fd47d228592f512891d1"><div class="ttname"><a href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">SVF::RaceResultValidator::AccessPair::isFlaged</a></div><div class="ttdeci">bool isFlaged(const RC_FLAG flag) const</div><div class="ttdoc">Class member access. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00186">MTAResultValidator.h:186</a></div></div>
|
|
152
152
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_a86508e03ca1c2e37fc9414cb2335c3ec"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a86508e03ca1c2e37fc9414cb2335c3ec">SVF::ExtAPI::getExtAPI</a></div><div class="ttdeci">static ExtAPI * getExtAPI()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during whole analysis. </div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00115">ExtAPI.h:115</a></div></div>
|
|
153
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a430c03371b2b5b7300c5c3a68d633909"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a430c03371b2b5b7300c5c3a68d633909">SVF::MTAResultValidator::collectCxtThreadTargets</a></div><div class="ttdeci">bool collectCxtThreadTargets()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
154
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a462f1554e058b656861abfb0aa2e47ff"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a462f1554e058b656861abfb0aa2e47ff">SVF::MTAResultValidator::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
153
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a430c03371b2b5b7300c5c3a68d633909"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a430c03371b2b5b7300c5c3a68d633909">SVF::MTAResultValidator::collectCxtThreadTargets</a></div><div class="ttdeci">bool collectCxtThreadTargets()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00215">MTAResultValidator.cpp:215</a></div></div>
|
|
154
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a462f1554e058b656861abfb0aa2e47ff"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a462f1554e058b656861abfb0aa2e47ff">SVF::MTAResultValidator::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00019">MTAResultValidator.cpp:19</a></div></div>
|
|
155
155
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ab386260dd6bbaeacde10e5c81f07502c"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ab386260dd6bbaeacde10e5c81f07502c">SVF::MTAResultValidator::rthdTovthdMap</a></div><div class="ttdeci">Map< NodeID, NodeID > rthdTovthdMap</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00121">MTAResultValidator.h:121</a></div></div>
|
|
156
156
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
|
|
157
157
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_a64f61b58f59eba5f3e7c69f90edc68df"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#a64f61b58f59eba5f3e7c69f90edc68df">SVF::RaceResultValidator::release</a></div><div class="ttdeci">void release()</div><div class="ttdoc">Release resource. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00227">MTAResultValidator.h:227</a></div></div>
|
|
158
|
-
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
158
|
+
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
|
|
159
159
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a54aa3d7051aab7d65ee1154538bfbb48"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a54aa3d7051aab7d65ee1154538bfbb48">SVF::ExtAPI::EFT_L_A0__A0R_A1R</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00065">ExtAPI.h:65</a></div></div>
|
|
160
160
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
161
161
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_afd9f0901b8474c35011eeb57e9bd15e9"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#afd9f0901b8474c35011eeb57e9bd15e9">SVF::MTAResultValidator::~MTAResultValidator</a></div><div class="ttdeci">~MTAResultValidator()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00033">MTAResultValidator.h:33</a></div></div>
|
|
162
162
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_a749793355ab8390a1e6577d7b05efddf"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#a749793355ab8390a1e6577d7b05efddf">SVF::RaceResultValidator::hasValidationTarget</a></div><div class="ttdeci">bool hasValidationTarget() const</div><div class="ttdoc">Check if the input program has validation target. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00232">MTAResultValidator.h:232</a></div></div>
|
|
163
163
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_abd3ad42a71357dfd1483e6e0d18d5ebd"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#abd3ad42a71357dfd1483e6e0d18d5ebd">SVF::RaceResultValidator::M</a></div><div class="ttdeci">SVFModule * M</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00381">MTAResultValidator.h:381</a></div></div>
|
|
164
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a1ac51d2847f9bdee27092ab22211bb61"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a1ac51d2847f9bdee27092ab22211bb61">SVF::MTAResultValidator::getStringArg</a></div><div class="ttdeci">std::vector< std::string > getStringArg(const Instruction *inst, unsigned int arg_num)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
164
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a1ac51d2847f9bdee27092ab22211bb61"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a1ac51d2847f9bdee27092ab22211bb61">SVF::MTAResultValidator::getStringArg</a></div><div class="ttdeci">std::vector< std::string > getStringArg(const Instruction *inst, unsigned int arg_num)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00068">MTAResultValidator.cpp:68</a></div></div>
|
|
165
165
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_ade9f150c970aa2cc481c878aebf71662"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#ade9f150c970aa2cc481c878aebf71662">SVF::RaceResultValidator::mayAccessAliases</a></div><div class="ttdeci">virtual bool mayAccessAliases(const Instruction *I1, const Instruction *I2)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00241">MTAResultValidator.h:241</a></div></div>
|
|
166
166
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html">SVF::RaceResultValidator</a></div><div class="ttdoc">Validate the result of concurrent analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00166">MTAResultValidator.h:166</a></div></div>
|
|
167
167
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_a1df6b00752e373ac7bf08a2cae0b9641"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#a1df6b00752e373ac7bf08a2cae0b9641">SVF::RaceResultValidator::mayHaveDataRace</a></div><div class="ttdeci">virtual bool mayHaveDataRace(const Instruction *I1, const Instruction *I2)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00259">MTAResultValidator.h:259</a></div></div>
|
|
168
168
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5d4bb92f5df30417f414397f8e58cf01"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">SVF::SVFUtil::errMsg</a></div><div class="ttdeci">std::string errMsg(std::string msg)</div><div class="ttdoc">Print error message by converting a string into red string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00078">SVFUtil.cpp:78</a></div></div>
|
|
169
169
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_a6b3592525d5275d583c0726744d1f857"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">SVF::MTAResultValidator::mhp</a></div><div class="ttdeci">MHP * mhp</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00134">MTAResultValidator.h:134</a></div></div>
|
|
170
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
170
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
|
|
171
171
|
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_ae709b039a68f5600271c40903b1c0dbe"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ae709b039a68f5600271c40903b1c0dbe">SVF::MTAResultValidator::TCT_ACCESS</a></div><div class="ttdeci">static constexpr char const * TCT_ACCESS</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00130">MTAResultValidator.h:130</a></div></div>
|
|
172
172
|
<div class="ttc" id="classSVF_1_1RaceResultValidator_html_aeb24aa510c7073ef71062e89a11fe00a"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#aeb24aa510c7073ef71062e89a11fe00a">SVF::RaceResultValidator::protectedByCommonLocks</a></div><div class="ttdeci">virtual bool protectedByCommonLocks(const Instruction *I1, const Instruction *I2)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00253">MTAResultValidator.h:253</a></div></div>
|
|
173
|
-
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_abdf31e8fca824b56a53788de525042a6"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#abdf31e8fca824b56a53788de525042a6">SVF::MTAResultValidator::collectTCTTargets</a></div><div class="ttdeci">bool collectTCTTargets()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#
|
|
173
|
+
<div class="ttc" id="classSVF_1_1MTAResultValidator_html_abdf31e8fca824b56a53788de525042a6"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#abdf31e8fca824b56a53788de525042a6">SVF::MTAResultValidator::collectTCTTargets</a></div><div class="ttdeci">bool collectTCTTargets()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00248">MTAResultValidator.cpp:248</a></div></div>
|
|
174
174
|
</div><!-- fragment --></div><!-- contents -->
|
|
175
175
|
<!-- start footer part -->
|
|
176
176
|
<hr class="footer"/><address class="footer"><small>
|