svf-tools 1.0.459 → 1.0.460

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.
Files changed (315) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +4 -4
  3. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +4 -4
  4. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +10 -10
  5. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  6. package/SVF-doxygen/html/html/Annotator_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +12 -12
  9. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +3 -3
  10. package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
  11. package/SVF-doxygen/html/html/CHG_8cpp_source.html +8 -8
  12. package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
  13. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +13 -13
  14. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
  15. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  16. package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
  17. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +7 -7
  18. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  19. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +2 -2
  20. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +17 -17
  21. package/SVF-doxygen/html/html/DCHG_8h_source.html +8 -8
  22. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +2 -2
  24. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
  26. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +4 -4
  27. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +6 -6
  28. package/SVF-doxygen/html/html/ExeState_8cpp.html +1 -0
  29. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +26 -25
  30. package/SVF-doxygen/html/html/ExeState_8h_source.html +13 -13
  31. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
  32. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  33. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  34. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +4 -4
  35. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +7 -7
  37. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
  38. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +4 -4
  39. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
  40. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +6 -6
  43. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  44. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
  45. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  46. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  47. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +5 -5
  48. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +7 -7
  49. package/SVF-doxygen/html/html/IRGraph_8h_source.html +21 -21
  50. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
  51. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +3 -3
  52. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +9 -9
  53. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +6 -6
  54. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +3 -3
  55. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  56. package/SVF-doxygen/html/html/LocationSet_8cpp.html +1 -0
  57. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +14 -13
  58. package/SVF-doxygen/html/html/LocationSet_8h_source.html +10 -10
  59. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +6 -6
  60. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +8 -8
  62. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  64. package/SVF-doxygen/html/html/MHP_8cpp_source.html +46 -46
  65. package/SVF-doxygen/html/html/MHP_8h.html +1 -0
  66. package/SVF-doxygen/html/html/MHP_8h_source.html +102 -101
  67. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  68. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  69. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
  70. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +11 -11
  71. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +8 -8
  72. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +9 -9
  73. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  74. package/SVF-doxygen/html/html/MTA_8cpp_source.html +5 -5
  75. package/SVF-doxygen/html/html/MTA_8h_source.html +3 -3
  76. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  77. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +12 -12
  79. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  80. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +6 -6
  81. package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
  82. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  83. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  84. package/SVF-doxygen/html/html/PCG_8cpp_source.html +4 -4
  85. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  86. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
  87. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  88. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +18 -18
  89. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +5 -5
  90. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +3 -3
  91. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
  92. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  93. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +19 -19
  94. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +6 -6
  95. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +68 -50
  96. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +51 -50
  97. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
  98. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +3 -3
  99. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  100. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  101. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  102. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
  103. package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
  104. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +46 -46
  105. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +36 -36
  106. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +19 -19
  107. package/SVF-doxygen/html/html/SVFIR_8h_source.html +19 -19
  108. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  109. package/SVF-doxygen/html/html/SVFModule_8h_source.html +2 -2
  110. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +3 -3
  111. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
  112. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +4 -4
  113. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +3 -3
  114. package/SVF-doxygen/html/html/SVFVariables_8cpp.html +1 -0
  115. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +35 -32
  116. package/SVF-doxygen/html/html/SVFVariables_8h.html +0 -1
  117. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +140 -142
  118. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +2 -2
  119. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  120. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
  121. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
  122. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  123. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +50 -50
  124. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -3
  125. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp.html +1 -0
  126. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +95 -91
  127. package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +0 -1
  128. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +141 -143
  129. package/SVF-doxygen/html/html/TCT_8cpp.html +1 -0
  130. package/SVF-doxygen/html/html/TCT_8cpp_source.html +41 -40
  131. package/SVF-doxygen/html/html/TCT_8h_source.html +7 -7
  132. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +2 -2
  133. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
  134. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +5 -5
  135. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
  136. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  137. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +22 -22
  138. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +4 -4
  139. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +0 -2
  140. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +61 -62
  141. package/SVF-doxygen/html/html/VFGNode_8h_source.html +3 -3
  142. package/SVF-doxygen/html/html/VFG_8cpp_source.html +10 -10
  143. package/SVF-doxygen/html/html/VFG_8h_source.html +3 -3
  144. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  145. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
  146. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +3 -3
  147. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  148. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  150. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +4 -4
  152. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +10 -10
  153. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -4
  156. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +5 -5
  157. package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +4 -4
  159. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -7
  160. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
  161. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +4 -4
  162. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +18 -18
  164. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
  165. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
  166. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
  167. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +1 -1
  168. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +15 -15
  169. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +1 -1
  170. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +16 -16
  171. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +1 -1
  172. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +16 -16
  173. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
  174. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +11 -11
  175. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +50 -50
  176. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +3 -3
  178. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +2 -2
  180. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +20 -20
  183. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +18 -18
  185. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +40 -40
  186. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +22 -22
  188. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  190. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
  191. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +8 -8
  192. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +9 -9
  193. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +183 -183
  194. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  196. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +1 -1
  197. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +45 -45
  200. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
  201. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +1 -1
  202. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +29 -29
  203. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +1 -1
  204. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +9 -9
  205. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +10 -10
  206. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +21 -21
  207. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  209. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  210. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
  211. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
  212. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
  213. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +6 -6
  214. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +27 -27
  215. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +20 -20
  216. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +8 -8
  217. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +177 -177
  218. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +16 -16
  219. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +7 -7
  220. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +7 -7
  221. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +22 -22
  222. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +8 -8
  223. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +91 -91
  224. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +9 -9
  225. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
  226. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +98 -98
  228. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +1 -1
  229. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +35 -35
  230. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  231. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +9 -9
  232. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +4 -4
  233. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +3 -3
  234. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +19 -19
  236. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +9 -9
  237. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +31 -31
  238. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +3 -3
  239. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +1 -1
  240. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +19 -19
  241. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
  242. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +27 -27
  243. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +4 -4
  244. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
  245. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
  246. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +62 -62
  247. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +66 -66
  248. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
  249. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +98 -106
  251. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +3 -3
  252. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +7 -7
  253. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  254. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +38 -38
  255. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +78 -78
  256. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +2 -2
  257. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +224 -240
  258. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +88 -88
  259. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  260. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +7 -7
  261. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  263. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +36 -36
  264. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  265. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +13 -13
  266. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +1 -1
  267. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +24 -24
  268. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +1 -1
  269. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +19 -19
  270. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
  271. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +4 -4
  272. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +2 -2
  273. package/SVF-doxygen/html/html/functions_func_g.html +1 -1
  274. package/SVF-doxygen/html/html/functions_func_h.html +1 -1
  275. package/SVF-doxygen/html/html/functions_func_i.html +1 -1
  276. package/SVF-doxygen/html/html/functions_g.html +1 -1
  277. package/SVF-doxygen/html/html/functions_h.html +1 -1
  278. package/SVF-doxygen/html/html/functions_i.html +1 -1
  279. package/SVF-doxygen/html/html/globals_c.html +103 -100
  280. package/SVF-doxygen/html/html/globals_s.html +9 -7
  281. package/SVF-doxygen/html/html/globals_type.html +3 -0
  282. package/SVF-doxygen/html/html/namespaceSVF.html +25 -43
  283. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +14 -14
  284. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +23 -23
  285. package/SVF-doxygen/html/html/namespacemembers_c.html +0 -3
  286. package/SVF-doxygen/html/html/namespacemembers_type.html +0 -3
  287. package/SVF-doxygen/html/html/search/all_13.js +3 -3
  288. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  289. package/SVF-doxygen/html/html/search/all_7.js +1 -1
  290. package/SVF-doxygen/html/html/search/all_8.js +1 -1
  291. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  292. package/SVF-doxygen/html/html/search/functions_6.js +1 -1
  293. package/SVF-doxygen/html/html/search/functions_7.js +1 -1
  294. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  295. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  296. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +3 -3
  297. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +3 -3
  298. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +3 -3
  299. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +1 -1
  300. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +14 -14
  301. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  302. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  303. package/SVF-doxygen/html/html/svf-ex_8cpp.html +4 -4
  304. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
  305. package/include/MTA/MHP.h +1 -0
  306. package/include/MemoryModel/SVFVariables.h +1 -8
  307. package/include/MemoryModel/SymbolTableInfo.h +2 -22
  308. package/include/SVF-FE/BasicTypes.h +1 -0
  309. package/include/Util/BasicTypes.h +0 -1
  310. package/lib/MTA/TCT.cpp +1 -0
  311. package/lib/MemoryModel/LocationSet.cpp +1 -0
  312. package/lib/MemoryModel/SVFVariables.cpp +10 -1
  313. package/lib/MemoryModel/SymbolTableInfo.cpp +26 -0
  314. package/lib/Util/ExeState.cpp +1 -0
  315. package/package.json +1 -1
@@ -67,14 +67,14 @@ $(function() {
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
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>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MTAResultValidator.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: 29/06/2015</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: Peng Di and Ding Ye</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef MTARESULTVALIDATOR_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define MTARESULTVALIDATOR_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MHP_8h.html">MTA/MHP.h</a>&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301"> 19</a></span>&#160;<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="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html"> 21</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MTAResultValidator.html">MTAResultValidator</a></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a8e26b7fe85478eef7b3d0551ab59d9c7"> 25</a></span>&#160; <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="l00026"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#af7f90c7a146c085d3b432ab40fb3777e"> 26</a></span>&#160; <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="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a>(mh)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#abe087e2e8d92aa218ef282d2493193ef">tcg</a> = <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a>-&gt;<a class="code" href="classSVF_1_1MHP.html#a20e740d4b96ef086b6b5778acd38ca88">getThreadCallGraph</a>();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#aa0ca978e95529568edc4bdac1ffac110">tdAPI</a> = <a class="code" href="classSVF_1_1MTAResultValidator.html#abe087e2e8d92aa218ef282d2493193ef">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#a8d54a1e8d1703d0c9ba541bcf997e900">mod</a> = <a class="code" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857">mhp</a>-&gt;<a class="code" href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">getTCT</a>()-&gt;<a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// Destructor</span></div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#afd9f0901b8474c35011eeb57e9bd15e9"> 34</a></span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#afd9f0901b8474c35011eeb57e9bd15e9">~MTAResultValidator</a>()</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// Analysis</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a462f1554e058b656861abfb0aa2e47ff">analyze</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57"> 40</a></span>&#160; <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="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a8d54a1e8d1703d0c9ba541bcf997e900">mod</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * Assistant functions</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// Split string</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; std::vector&lt;std::string&gt; &amp;<a class="code" href="classSVF_1_1MTAResultValidator.html#a73db9ad234b263b6e644e4b38be14fe6">split</a>(<span class="keyword">const</span> std::string &amp;s, <span class="keywordtype">char</span> delim, std::vector&lt;std::string&gt; &amp;elems);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; std::vector&lt;std::string&gt; <a class="code" href="classSVF_1_1MTAResultValidator.html#a73db9ad234b263b6e644e4b38be14fe6">split</a>(<span class="keyword">const</span> std::string &amp;s, <span class="keywordtype">char</span> delim);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Get special arguments of given call sites</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; 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="l00056"></a><span class="lineno"> 56</span>&#160; std::vector&lt;std::string&gt; <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="l00057"></a><span class="lineno"> 57</span>&#160; <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="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> * Get the previous LoadInst or StoreInst from Instruction &quot;I&quot; in the</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * same BasicBlock. Return nullptr if none exists.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <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="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">// Compare two cxts</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <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="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">// Dump calling context information</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <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>&amp; cxt) <span class="keyword">const</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <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>&amp; lev);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// Get the validation result string of a single validation scenario.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <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="l00075"></a><span class="lineno"> 75</span>&#160; <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="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * Collect the callsite targets for validations.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> * The targets are labeled by &quot;cs1:&quot;, &quot;cs2:&quot;... that are the names of its basic blocks.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * The collected targets are stored in csnumToInstMap that maps label &quot;cs1&quot; to CallInst.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a1fc4116b134aa87420d055b193208e68">collectCallsiteTargets</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> * Collect the CxtThread targets for validations.</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> * The collected targets are stored in vthdToCxt that maps vthd to cxt.</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a430c03371b2b5b7300c5c3a68d633909">collectCxtThreadTargets</a>();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * Collect TCT targets for validations.</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> * The collected targets are stored in rthdToChildren.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#abdf31e8fca824b56a53788de525042a6">collectTCTTargets</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * Collect the thread interleaving targets for validations.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * The collected targets are stored in instToTSMap and threadStmtToInterLeaving.</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a3c3eacff786230d093d27615ff360ed4">collectInterleavingTargets</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> * Perform validation for Cxtthread.</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<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="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#afa01b108b67ec2ac05a6444b55dbfe01">validateCxtThread</a>();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> * Perform validation for TCT.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#ae6a18cbaf113ee8e28c3e8dca458d4be">validateTCT</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> * Perform validation for thread interleaving.</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; INTERLEV_FLAG <a class="code" href="classSVF_1_1MTAResultValidator.html#a373b5227fbfa82ac070f55db999afb28">validateInterleaving</a>();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ab2d02695cc8e6fc9e9a46d9d26466fb1"> 120</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, const CallInst*&gt;</a> <a class="code" href="classSVF_1_1MTAResultValidator.html#ab2d02695cc8e6fc9e9a46d9d26466fb1">csnumToInst</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a1392757f98b54057d33adb125fd48efa"> 121</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, CallStrCxt&gt;</a> <a class="code" href="classSVF_1_1MTAResultValidator.html#a1392757f98b54057d33adb125fd48efa">vthdToCxtMap</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a7fc576e83fa259d0ab06d54c3537c4ac"> 122</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, NodeID&gt;</a> <a class="code" href="classSVF_1_1MTAResultValidator.html#a7fc576e83fa259d0ab06d54c3537c4ac">vthdTorthdMap</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ab386260dd6bbaeacde10e5c81f07502c"> 123</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, NodeID&gt;</a> <a class="code" href="classSVF_1_1MTAResultValidator.html#ab386260dd6bbaeacde10e5c81f07502c">rthdTovthdMap</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a7d2043cf3c354812fa5e4cdf7f60ff20"> 125</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, Set&lt;NodeID&gt;</a>&gt; <a class="code" href="classSVF_1_1MTAResultValidator.html#a7d2043cf3c354812fa5e4cdf7f60ff20">rthdToChildrenMap</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a8452bf182f6f1e0f4c239f620ee803b1"> 127</a></span>&#160; <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="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ac4a7773211a9c842639ac25b1a504c7e"> 128</a></span>&#160; <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="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a251e16fc1fb663c238122dd6d2ba02e1"> 130</a></span>&#160; <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">&quot;CXT_THREAD&quot;</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a7b47044960a12203ce0ce245c4c9c8ec"> 131</a></span>&#160; <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">&quot;INTERLEV_ACCESS&quot;</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ae709b039a68f5600271c40903b1c0dbe"> 132</a></span>&#160; <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">&quot;TCT_ACCESS&quot;</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#aa0ca978e95529568edc4bdac1ffac110"> 134</a></span>&#160; <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="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#abe087e2e8d92aa218ef282d2493193ef"> 135</a></span>&#160; <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="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a6b3592525d5275d583c0726744d1f857"> 136</a></span>&#160; <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="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a245c967245e5a693eaf7f60782143d7a"> 137</a></span>&#160; vthdToCxtMap <a class="code" href="classSVF_1_1MTAResultValidator.html#a245c967245e5a693eaf7f60782143d7a">vthdToCxt</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a"> 138</a></span>&#160; vthdTorthdMap <a class="code" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">vthdTorthd</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a615623a08324ee155cb527a3b57e8c19"> 139</a></span>&#160; rthdTovthdMap <a class="code" href="classSVF_1_1MTAResultValidator.html#a615623a08324ee155cb527a3b57e8c19">rthdTovthd</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ae2717c467dc7c49fab0ec93bfa4baaab"> 140</a></span>&#160; csnumToInst <a class="code" href="classSVF_1_1MTAResultValidator.html#ae2717c467dc7c49fab0ec93bfa4baaab">csnumToInstMap</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a542f2f41c90698270687fc7858a26555"> 141</a></span>&#160; rthdToChildrenMap <a class="code" href="classSVF_1_1MTAResultValidator.html#a542f2f41c90698270687fc7858a26555">rthdToChildren</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a8d54a1e8d1703d0c9ba541bcf997e900"> 142</a></span>&#160; <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="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#ac76235240be9684bc71fd924ed83b05b"> 145</a></span>&#160; <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="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a3f3cc6bcc79e4125ef9a49857442319d"> 146</a></span>&#160; <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="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAResultValidator.html#a1c34f6a65688a3261ec27a35e9b9601b"> 147</a></span>&#160; <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="l00149"></a><span class="lineno"> 149</span>&#160;};</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html"> 168</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1RaceResultValidator.html">RaceResultValidator</a></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;{</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ac57ae430ee5b6868fe810172ec658853"> 171</a></span>&#160; <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="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html"> 176</a></span>&#160; <span class="keyword">class </span><a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html">AccessPair</a></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a7dd2f8afab59ee4d107a6bfdb6c151ea"> 180</a></span>&#160; <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="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">const</span> RC_FLAG flags) :</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; I1(I1), I2(I2), flags(flags)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1"> 188</a></span>&#160; <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="l00189"></a><span class="lineno"> 189</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> flags &amp; flag;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a97307972daebc1fc358ba2c8009c5990"> 192</a></span>&#160; <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="l00193"></a><span class="lineno"> 193</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span> I1;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#acf383712e9399fec0d52614b2338836c"> 196</a></span>&#160; <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="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> I2;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a753e4df194dc85e37a0285eaac7b30f7"> 203</a></span>&#160; <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="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#ad06bd4046fd98b85e6d1f97fcd472d3b"> 204</a></span>&#160; <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="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#aafb0a0cd068e1632f0d643233cad8ad9"> 205</a></span>&#160; RC_FLAG <a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#aafb0a0cd068e1632f0d643233cad8ad9">flags</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; };</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a8f0d25327d5365f6ae229723aa5d6ff7"> 209</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a8f0d25327d5365f6ae229723aa5d6ff7">~RaceResultValidator</a>()</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; release();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#aec8b923a0da580113a13bf94ffb3ebd7"> 215</a></span>&#160; <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="l00216"></a><span class="lineno"> 216</span>&#160; {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; this-&gt;M = M;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; selectedValidationScenarios = RC_MHP | RC_ALIASES | RC_PROTECTED | RC_RACE;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; collectValidationTargets();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ab8a261120a7f6520d22a6f5cdf2257e9"> 223</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#ab8a261120a7f6520d22a6f5cdf2257e9">analyze</a>()</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; validateAll();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a64f61b58f59eba5f3e7c69f90edc68df"> 229</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a64f61b58f59eba5f3e7c69f90edc68df">release</a>()</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a749793355ab8390a1e6577d7b05efddf"> 234</a></span>&#160; <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="l00235"></a><span class="lineno"> 235</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> !accessPairs.empty();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ade9f150c970aa2cc481c878aebf71662"> 243</a></span>&#160; <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="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; selectedValidationScenarios &amp;= ~RC_ALIASES;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#aff51b56e5f7173dd8ac053e5d9b1e97d"> 249</a></span>&#160; <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="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; selectedValidationScenarios &amp;= ~RC_MHP;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#aeb24aa510c7073ef71062e89a11fe00a"> 255</a></span>&#160; <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="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; selectedValidationScenarios &amp;= ~RC_PROTECTED;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a1df6b00752e373ac7bf08a2cae0b9641"> 261</a></span>&#160; <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="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; selectedValidationScenarios &amp;= ~RC_RACE;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#adb3030fc7514506e2592e11898217375"> 274</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#adb3030fc7514506e2592e11898217375">collectValidationTargets</a>()</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="comment">// Collect call sites of all RC_ACCESS function calls.</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; std::vector&lt;const CallInst*&gt; csInsts;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = M-&gt;llvmFunBegin(); it != M-&gt;llvmFunEnd(); it++)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">const</span> std::string fName = (*it)-&gt;getName().str();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span>(fName.find(RC_ACCESS) != std::string::npos)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; F = (*it);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> (!F) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">for</span> (Value::const_use_iterator it = F-&gt;use_begin(), ie =</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; F-&gt;use_end(); it != ie; ++it)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a> *u = &amp;*it;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *user = u-&gt;getUser();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <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>&lt;<a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>&gt;(user);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(csInst);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; csInsts.push_back(csInst);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(csInsts.size() % 2 == 0 &amp;&amp; <span class="stringliteral">&quot;We should have RC_ACCESS called in pairs.&quot;</span>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="comment">// Sort the validation sites according to their ids.</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; std::sort(csInsts.begin(), csInsts.end(), compare);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="comment">// Generate access pairs.</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0, e = csInsts.size(); i != e;)</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *CI1 = csInsts[i++];</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *CI2 = csInsts[i++];</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <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>&lt;<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>&gt;(CI1-&gt;getOperand(1));</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(C);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <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="l00312"></a><span class="lineno"> 312</span>&#160; <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="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(I1 &amp;&amp; I2 &amp;&amp; <span class="stringliteral">&quot;RC_ACCESS should be placed immediately after the target memory access.&quot;</span>);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; RC_FLAG flags = C-&gt;getZExtValue();</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; accessPairs.push_back(<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html">AccessPair</a>(I1, I2, flags));</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a58e07fcd0d9a611dfd31ab62802c5990"> 320</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RaceResultValidator.html#a58e07fcd0d9a611dfd31ab62802c5990">validateAll</a>()</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">&quot; --- Analysis Result Validation ---\n&quot;</span>);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="comment">// Iterate every memory access pair to perform the validation.</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0, e = accessPairs.size(); i != e; ++i)</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html">AccessPair</a> &amp;ap = accessPairs[i];</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <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="l00329"></a><span class="lineno"> 329</span>&#160; <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="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <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="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordtype">bool</span> alias = mayAccessAliases(I1, I2);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordtype">bool</span> protect = protectedByCommonLocks(I1, I2);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordtype">bool</span> racy = mayHaveDataRace(I1, I2);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;For the memory access pair at (&quot;</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(I1) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(I2) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">if</span> (selectedValidationScenarios &amp; RC_ALIASES)</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="stringliteral">&quot;ALIASES&quot;</span>, alias, ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(RC_ALIASES))</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">if</span> (selectedValidationScenarios &amp; RC_MHP)</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="stringliteral">&quot;MHP&quot;</span>, mhp, ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(RC_MHP)) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> (selectedValidationScenarios &amp; RC_PROTECTED)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="stringliteral">&quot;PROTECT&quot;</span>, protect,</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(RC_PROTECTED)) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span> (selectedValidationScenarios &amp; RC_RACE)</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">getOutput</a>(<span class="stringliteral">&quot;RACE&quot;</span>, racy, ap.<a class="code" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a63f574da7298fd47d228592f512891d1">isFlaged</a>(RC_RACE))</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#afdd89e26a7c168762bfe85746252827f"> 368</a></span>&#160; <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="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordtype">bool</span> analysisRes, <span class="keywordtype">bool</span> expectedRes)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; std::string ret(scenario);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; ret += <span class="stringliteral">&quot;\t&quot;</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span> (expectedRes)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; ret += <span class="stringliteral">&quot; T: &quot;</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; ret += <span class="stringliteral">&quot; F: &quot;</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">if</span> (analysisRes == expectedRes)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; ret += <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">SVFUtil::sucMsg</a>(<span class="stringliteral">&quot;SUCCESS&quot;</span>);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; ret += <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">SVFUtil::errMsg</a>(<span class="stringliteral">&quot;FAILURE&quot;</span>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#abd3ad42a71357dfd1483e6e0d18d5ebd"> 385</a></span>&#160; <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="l00386"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a8436ecde1e34bca7cef86a320ad42162"> 386</a></span>&#160; std::vector&lt;AccessPair&gt; <a class="code" href="classSVF_1_1RaceResultValidator.html#a8436ecde1e34bca7cef86a320ad42162">accessPairs</a>;</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a1294cb90b073ba25a8ffc06180c09419"> 387</a></span>&#160; RC_FLAG <a class="code" href="classSVF_1_1RaceResultValidator.html#a1294cb90b073ba25a8ffc06180c09419">selectedValidationScenarios</a>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a7a16fb7a3f382284dbb080802f6e6f43"> 393</a></span>&#160; <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="l00394"></a><span class="lineno"> 394</span>&#160; {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *V1 = CI1-&gt;getOperand(0);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *V2 = CI2-&gt;getOperand(0);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <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>&lt;<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>&gt;(V1);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <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>&lt;<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>&gt;(V2);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 != C1 &amp;&amp; 0 != C2);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">return</span> C1-&gt;getZExtValue() &lt; C2-&gt;getZExtValue();</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ad029f7a9a5161191a44d1e841f9d6114"> 408</a></span>&#160; <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="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I)</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; I = I-&gt;getPrevNode();</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">while</span> (I)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(I) || SVFUtil::isa&lt;StoreInst&gt;(I))</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <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="l00418"></a><span class="lineno"> 418</span>&#160; {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <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>()-&gt;get_type(callee)</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; || callee-&gt;getName().find(<span class="stringliteral">&quot;llvm.memset&quot;</span>) != std::string::npos)</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; I = I-&gt;getPrevNode();</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a1effe26639e7663cc3baf36e0abffbac"> 430</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> RC_FLAG RC_MHP = 0x01;</div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#a05b95f3110d4653c37730df0b7622e8a"> 431</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> RC_FLAG RC_ALIASES = 0x02;</div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#adf7cfdebbb94b94fba093a8d345096ca"> 432</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> RC_FLAG RC_PROTECTED = 0x04;</div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#aabf8c6ed2c4c82ef53bfa67bf9304e04"> 433</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> RC_FLAG RC_RACE = 0x10;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="classSVF_1_1RaceResultValidator.html#ae296de41ead49fcff5ea9e7a5afde1c9"> 438</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *RC_ACCESS = <span class="stringliteral">&quot;RC_ACCESS&quot;</span>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;};</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;} <span class="comment">// namespace SVF end</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;<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#l00249">MTAResultValidator.h:249</a></div></div>
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>
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#l00024">MHP.h:24</a></div></div>
71
71
  <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#l00192">MTAResultValidator.h:192</a></div></div>
72
72
  <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#l00393">MTAResultValidator.h:393</a></div></div>
73
73
  <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&lt; NodeID, CallStrCxt &gt; vthdToCxtMap</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00121">MTAResultValidator.h:121</a></div></div>
74
74
  <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>
75
75
  <div class="ttc" id="MHP_8h_html"><div class="ttname"><a href="MHP_8h.html">MHP.h</a></div></div>
76
76
  <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&lt; std::string &gt; &amp; split(const std::string &amp;s, char delim, std::vector&lt; std::string &gt; &amp;elems)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00042">MTAResultValidator.cpp:42</a></div></div>
77
- <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&lt; const Instruction *, CxtThreadStmtSet &gt; InstToThreadStmtSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00033">MHP.h:33</a></div></div>
77
+ <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&lt; const Instruction *, CxtThreadStmtSet &gt; InstToThreadStmtSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00034">MHP.h:34</a></div></div>
78
78
  <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#l00135">MTAResultValidator.h:135</a></div></div>
79
79
  <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#l00019">MTAResultValidator.h:19</a></div></div>
80
80
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_af7f90c7a146c085d3b432ab40fb3777e"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#af7f90c7a146c085d3b432ab40fb3777e">SVF::MTAResultValidator::MTAResultValidator</a></div><div class="ttdeci">MTAResultValidator(MHP *mh)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00026">MTAResultValidator.h:26</a></div></div>
@@ -85,10 +85,10 @@ $(function() {
85
85
  <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>
86
86
  <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>
87
87
  <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>
88
- <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#l00133">BasicTypes.h:133</a></div></div>
88
+ <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#l00132">BasicTypes.h:132</a></div></div>
89
89
  <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#l00021">MTAResultValidator.h:21</a></div></div>
90
90
  <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#l00138">MTAResultValidator.h:138</a></div></div>
91
- <div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00106">BasicTypes.h:106</a></div></div>
91
+ <div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00105">BasicTypes.h:105</a></div></div>
92
92
  <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>
93
93
  <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#l00130">MTAResultValidator.h:130</a></div></div>
94
94
  <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#l00457">MTAResultValidator.cpp:457</a></div></div>
@@ -96,7 +96,7 @@ $(function() {
96
96
  <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&lt; NodeID, Set&lt; NodeID &gt; &gt; rthdToChildrenMap</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00125">MTAResultValidator.h:125</a></div></div>
97
97
  <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#l00368">MTAResultValidator.h:368</a></div></div>
98
98
  <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>
99
- <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#l00096">BasicTypes.h:96</a></div></div>
99
+ <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#l00095">BasicTypes.h:95</a></div></div>
100
100
  <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#l00387">MTAResultValidator.h:387</a></div></div>
101
101
  <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#l00205">MTAResultValidator.h:205</a></div></div>
102
102
  <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>
@@ -111,10 +111,10 @@ $(function() {
111
111
  <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#l00408">MTAResultValidator.h:408</a></div></div>
112
112
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
113
113
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_ae2717c467dc7c49fab0ec93bfa4baaab"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ae2717c467dc7c49fab0ec93bfa4baaab">SVF::MTAResultValidator::csnumToInstMap</a></div><div class="ttdeci">csnumToInst csnumToInstMap</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00140">MTAResultValidator.h:140</a></div></div>
114
- <div class="ttc" id="classSVF_1_1MHP_html_a20e740d4b96ef086b6b5778acd38ca88"><div class="ttname"><a href="classSVF_1_1MHP.html#a20e740d4b96ef086b6b5778acd38ca88">SVF::MHP::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00053">MHP.h:53</a></div></div>
114
+ <div class="ttc" id="classSVF_1_1MHP_html_a20e740d4b96ef086b6b5778acd38ca88"><div class="ttname"><a href="classSVF_1_1MHP.html#a20e740d4b96ef086b6b5778acd38ca88">SVF::MHP::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00054">MHP.h:54</a></div></div>
115
115
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a7b47044960a12203ce0ce245c4c9c8ec"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a7b47044960a12203ce0ce245c4c9c8ec">SVF::MTAResultValidator::INTERLEV_ACCESS</a></div><div class="ttdeci">static constexpr char const * INTERLEV_ACCESS</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00131">MTAResultValidator.h:131</a></div></div>
116
116
  <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#l00215">MTAResultValidator.h:215</a></div></div>
117
- <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&lt; CxtThreadStmt, NodeBS &gt; ThreadStmtToThreadInterleav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00032">MHP.h:32</a></div></div>
117
+ <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&lt; CxtThreadStmt, NodeBS &gt; ThreadStmtToThreadInterleav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00033">MHP.h:33</a></div></div>
118
118
  <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#l00223">MTAResultValidator.h:223</a></div></div>
119
119
  <div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector&lt; u32_t &gt; CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
120
120
  <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#l00128">MTAResultValidator.h:128</a></div></div>
@@ -143,7 +143,7 @@ $(function() {
143
143
  <div class="ttc" id="classSVF_1_1TCT_html_aabc2c84e951ed9ae64207e379acb3074"><div class="ttname"><a href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">SVF::TCT::getSVFModule</a></div><div class="ttdeci">SVFModule * getSVFModule() const</div><div class="ttdoc">Get SVFFModule. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00161">TCT.h:161</a></div></div>
144
144
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a8e26b7fe85478eef7b3d0551ab59d9c7"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a8e26b7fe85478eef7b3d0551ab59d9c7">SVF::MTAResultValidator::INTERLEV_FLAG</a></div><div class="ttdeci">int INTERLEV_FLAG</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00025">MTAResultValidator.h:25</a></div></div>
145
145
  <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#l00127">MTAResultValidator.h:127</a></div></div>
146
- <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>
146
+ <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#l00060">MHP.h:60</a></div></div>
147
147
  <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#l00204">MTAResultValidator.h:204</a></div></div>
148
148
  <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 &amp;lev)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00174">MTAResultValidator.cpp:174</a></div></div>
149
149
  <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&lt; AccessPair &gt; accessPairs</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00386">MTAResultValidator.h:386</a></div></div>