svf-tools 1.0.340 → 1.0.344

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 (487) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +6 -6
  3. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
  4. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +9 -9
  5. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  6. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  7. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  8. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +7 -7
  9. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
  10. package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
  11. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +7 -7
  12. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +3 -3
  13. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +3 -3
  15. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  16. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
  17. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +6 -6
  18. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
  19. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +6 -6
  20. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +11 -11
  21. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +15 -15
  22. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/ICFGNode_8h.html +7 -7
  24. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +69 -69
  25. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +64 -61
  27. package/SVF-doxygen/html/html/ICFG_8h_source.html +46 -46
  28. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
  29. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +6 -6
  30. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +5 -5
  34. package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
  35. package/SVF-doxygen/html/html/MHP_8h_source.html +6 -6
  36. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +9 -9
  37. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
  39. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +27 -27
  40. package/SVF-doxygen/html/html/MemRegion_8h_source.html +18 -18
  41. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
  42. package/SVF-doxygen/html/html/MemSSA_8h_source.html +12 -12
  43. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -2
  45. package/SVF-doxygen/html/html/Options_8h_source.html +2 -2
  46. package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
  47. package/SVF-doxygen/html/html/PCG_8h_source.html +4 -4
  48. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +10 -10
  49. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +17 -17
  50. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +5 -5
  51. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
  52. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
  54. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
  55. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -4
  56. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
  57. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +3 -3
  58. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +17 -17
  59. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -2
  60. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +9 -9
  61. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +32 -32
  62. package/SVF-doxygen/html/html/SVFG_8h_source.html +27 -27
  63. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +3 -3
  64. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +13 -13
  65. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +9 -9
  66. package/SVF-doxygen/html/html/SVFIR_8h_source.html +32 -32
  67. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +20 -20
  68. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +14 -14
  69. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -8
  70. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +5 -5
  71. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +3 -3
  72. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +7 -7
  73. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  74. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +4 -4
  75. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
  76. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +2 -2
  77. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +16 -15
  78. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  79. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +30 -28
  80. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +44 -42
  81. package/SVF-doxygen/html/html/TCT_8h_source.html +3 -3
  82. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +15 -15
  83. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +20 -20
  84. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +5 -5
  85. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +2 -2
  86. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
  87. package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
  88. package/SVF-doxygen/html/html/VFG_8cpp_source.html +20 -20
  89. package/SVF-doxygen/html/html/VFG_8h_source.html +19 -19
  90. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  91. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
  92. package/SVF-doxygen/html/html/annotated.html +17 -17
  93. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +3 -3
  94. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +23 -23
  95. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +3 -3
  96. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +23 -23
  97. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +3 -3
  98. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +22 -22
  99. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +3 -3
  100. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +24 -24
  101. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +3 -3
  102. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient-members.html +1 -1
  103. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +7 -7
  104. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +12 -12
  105. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +47 -47
  106. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +12 -12
  107. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +34 -34
  108. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +12 -12
  109. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +32 -32
  110. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +12 -12
  111. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +32 -32
  112. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +12 -12
  113. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +32 -32
  114. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +12 -12
  115. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +34 -34
  116. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +12 -12
  117. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +32 -32
  118. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +12 -12
  119. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +32 -32
  120. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +12 -12
  121. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +38 -38
  122. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +6 -5
  123. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +15 -12
  125. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +5 -3
  126. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +2 -2
  127. package/SVF-doxygen/html/html/classSVF_1_1CallCHI-members.html +3 -3
  128. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +22 -22
  129. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +4 -4
  130. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +158 -0
  131. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +852 -0
  132. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.png +0 -0
  133. package/SVF-doxygen/html/html/classSVF_1_1CallMU-members.html +3 -3
  134. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +22 -22
  135. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +4 -4
  136. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +31 -31
  137. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +6 -5
  138. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  139. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +12 -12
  140. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +31 -31
  141. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +3 -3
  142. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +14 -14
  143. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +60 -60
  144. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +3 -3
  145. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver-members.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +16 -16
  147. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +21 -21
  148. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +51 -51
  149. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
  150. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
  151. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +3 -3
  152. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +12 -12
  153. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +33 -33
  154. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
  155. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +20 -20
  156. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +11 -11
  157. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +52 -52
  158. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +12 -12
  159. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +43 -43
  160. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +12 -12
  161. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +33 -33
  162. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis-members.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +21 -21
  164. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +3 -3
  165. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +19 -19
  166. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +3 -3
  167. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +18 -18
  168. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +4 -2
  169. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode-members.html +150 -0
  170. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +618 -0
  171. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.png +0 -0
  172. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +4 -2
  173. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode-members.html +149 -0
  174. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +624 -0
  175. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.png +0 -0
  176. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient-members.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +12 -12
  178. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +3 -3
  179. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  180. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
  181. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +4 -4
  182. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -3
  183. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +3 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode-members.html +144 -0
  185. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +413 -0
  186. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.png +0 -0
  187. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +3 -3
  188. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +11 -11
  189. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +22 -22
  190. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +224 -217
  191. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder-members.html +4 -4
  192. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +74 -71
  193. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +2 -2
  194. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +10 -10
  195. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.png +0 -0
  196. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +11 -11
  197. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +30 -30
  198. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +3 -3
  199. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +21 -21
  200. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +51 -51
  201. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode-members.html +144 -0
  202. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +399 -0
  203. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.png +0 -0
  204. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +2 -2
  205. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +23 -23
  206. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +2 -2
  207. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +21 -21
  208. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +7 -3
  209. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +2 -2
  210. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +21 -21
  211. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +51 -51
  212. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode-members.html +146 -0
  213. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +494 -0
  214. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.png +0 -0
  215. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  216. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
  217. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +61 -61
  218. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +4 -4
  219. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +14 -14
  221. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator-members.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +11 -11
  223. package/SVF-doxygen/html/html/classSVF_1_1MHP-members.html +1 -1
  224. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +22 -22
  225. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +24 -24
  226. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +198 -198
  227. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
  228. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +6 -6
  229. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
  230. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +23 -22
  231. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +70 -47
  232. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +10 -10
  233. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +77 -77
  234. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +4 -4
  235. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +2 -2
  236. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +4 -4
  237. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +17 -15
  238. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +141 -106
  239. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +3 -3
  240. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
  241. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +27 -27
  242. package/SVF-doxygen/html/html/classSVF_1_1Options.html +26 -26
  243. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  244. package/SVF-doxygen/html/html/classSVF_1_1PCG-members.html +1 -1
  245. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +13 -13
  246. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  247. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph-members.html +15 -15
  248. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +118 -118
  249. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +3 -3
  250. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +32 -32
  251. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +5 -5
  252. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +6 -6
  253. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +12 -12
  254. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +109 -109
  255. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice-members.html +2 -2
  256. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +18 -18
  257. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +5 -3
  258. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +2 -2
  259. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +153 -0
  260. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +696 -0
  261. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.png +0 -0
  262. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +4 -4
  263. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +30 -30
  264. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
  265. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +24 -24
  266. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +160 -160
  267. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  268. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +24 -24
  269. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +76 -76
  270. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +19 -19
  271. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +133 -133
  272. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
  273. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +62 -62
  274. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
  275. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI-members.html +4 -4
  276. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +20 -20
  277. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +1 -1
  278. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +13 -13
  279. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +1 -1
  280. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +7 -7
  281. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +24 -24
  282. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +12 -12
  283. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +32 -32
  284. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +1 -1
  285. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +11 -11
  286. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +17 -16
  287. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +16 -16
  288. package/SVF-doxygen/html/html/classSVF_1_1TCT-members.html +1 -1
  289. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +22 -22
  290. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +4 -4
  291. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +19 -19
  292. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +4 -4
  293. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +19 -19
  294. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph-members.html +40 -40
  295. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +220 -220
  296. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +10 -10
  297. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +3 -3
  298. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +11 -11
  299. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +3 -3
  300. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +11 -11
  301. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +12 -12
  302. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +42 -42
  303. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +3 -3
  304. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +10 -9
  305. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +9 -9
  307. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +96 -96
  308. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +3 -3
  309. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +4 -4
  310. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +12 -12
  311. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +37 -37
  312. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
  313. package/SVF-doxygen/html/html/classes.html +16 -16
  314. package/SVF-doxygen/html/html/functions_a.html +59 -59
  315. package/SVF-doxygen/html/html/functions_c.html +74 -71
  316. package/SVF-doxygen/html/html/functions_eval_c.html +5 -2
  317. package/SVF-doxygen/html/html/functions_f.html +14 -14
  318. package/SVF-doxygen/html/html/functions_func.html +56 -56
  319. package/SVF-doxygen/html/html/functions_func_c.html +28 -28
  320. package/SVF-doxygen/html/html/functions_func_f.html +6 -6
  321. package/SVF-doxygen/html/html/functions_func_g.html +88 -88
  322. package/SVF-doxygen/html/html/functions_func_h.html +17 -17
  323. package/SVF-doxygen/html/html/functions_func_i.html +31 -29
  324. package/SVF-doxygen/html/html/functions_func_m.html +1 -1
  325. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  326. package/SVF-doxygen/html/html/functions_func_r.html +6 -6
  327. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  328. package/SVF-doxygen/html/html/functions_func_t.html +7 -7
  329. package/SVF-doxygen/html/html/functions_func_u.html +3 -3
  330. package/SVF-doxygen/html/html/functions_g.html +88 -88
  331. package/SVF-doxygen/html/html/functions_h.html +16 -16
  332. package/SVF-doxygen/html/html/functions_i.html +37 -35
  333. package/SVF-doxygen/html/html/functions_m.html +2 -2
  334. package/SVF-doxygen/html/html/functions_n.html +3 -3
  335. package/SVF-doxygen/html/html/functions_o.html +10 -10
  336. package/SVF-doxygen/html/html/functions_p.html +21 -30
  337. package/SVF-doxygen/html/html/functions_r.html +6 -6
  338. package/SVF-doxygen/html/html/functions_s.html +15 -14
  339. package/SVF-doxygen/html/html/functions_t.html +13 -15
  340. package/SVF-doxygen/html/html/functions_type.html +1 -1
  341. package/SVF-doxygen/html/html/functions_type_c.html +24 -24
  342. package/SVF-doxygen/html/html/functions_type_f.html +3 -3
  343. package/SVF-doxygen/html/html/functions_type_i.html +2 -2
  344. package/SVF-doxygen/html/html/functions_type_p.html +1 -1
  345. package/SVF-doxygen/html/html/functions_type_s.html +1 -1
  346. package/SVF-doxygen/html/html/functions_type_v.html +2 -2
  347. package/SVF-doxygen/html/html/functions_u.html +3 -3
  348. package/SVF-doxygen/html/html/functions_v.html +5 -5
  349. package/SVF-doxygen/html/html/functions_vars_a.html +2 -2
  350. package/SVF-doxygen/html/html/functions_vars_c.html +11 -11
  351. package/SVF-doxygen/html/html/functions_vars_f.html +5 -5
  352. package/SVF-doxygen/html/html/functions_vars_g.html +1 -1
  353. package/SVF-doxygen/html/html/functions_vars_i.html +3 -3
  354. package/SVF-doxygen/html/html/functions_vars_p.html +0 -3
  355. package/SVF-doxygen/html/html/functions_vars_r.html +1 -1
  356. package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
  357. package/SVF-doxygen/html/html/functions_w.html +5 -9
  358. package/SVF-doxygen/html/html/hierarchy.html +7 -7
  359. package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
  360. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +11 -11
  361. package/SVF-doxygen/html/html/search/all_1.js +58 -58
  362. package/SVF-doxygen/html/html/search/all_10.js +13 -14
  363. package/SVF-doxygen/html/html/search/all_12.js +5 -5
  364. package/SVF-doxygen/html/html/search/all_13.js +9 -8
  365. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  366. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  367. package/SVF-doxygen/html/html/search/all_16.js +3 -3
  368. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  369. package/SVF-doxygen/html/html/search/all_3.js +37 -35
  370. package/SVF-doxygen/html/html/search/all_6.js +12 -12
  371. package/SVF-doxygen/html/html/search/all_7.js +62 -61
  372. package/SVF-doxygen/html/html/search/all_8.js +17 -17
  373. package/SVF-doxygen/html/html/search/all_9.js +19 -19
  374. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  375. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  376. package/SVF-doxygen/html/html/search/all_e.js +1 -1
  377. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  378. package/SVF-doxygen/html/html/search/classes_2.js +1 -1
  379. package/SVF-doxygen/html/html/search/classes_5.js +2 -2
  380. package/SVF-doxygen/html/html/search/classes_6.js +1 -1
  381. package/SVF-doxygen/html/html/search/classes_8.js +2 -2
  382. package/SVF-doxygen/html/html/search/classes_e.js +1 -1
  383. package/SVF-doxygen/html/html/search/enumvalues_2.js +2 -1
  384. package/SVF-doxygen/html/html/search/functions_0.js +55 -55
  385. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  386. package/SVF-doxygen/html/html/search/functions_11.js +4 -4
  387. package/SVF-doxygen/html/html/search/functions_12.js +1 -1
  388. package/SVF-doxygen/html/html/search/functions_2.js +10 -10
  389. package/SVF-doxygen/html/html/search/functions_5.js +4 -4
  390. package/SVF-doxygen/html/html/search/functions_6.js +61 -61
  391. package/SVF-doxygen/html/html/search/functions_7.js +17 -17
  392. package/SVF-doxygen/html/html/search/functions_8.js +16 -16
  393. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  394. package/SVF-doxygen/html/html/search/functions_e.js +2 -2
  395. package/SVF-doxygen/html/html/search/functions_f.js +4 -4
  396. package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
  397. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  398. package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
  399. package/SVF-doxygen/html/html/search/typedefs_2.js +21 -21
  400. package/SVF-doxygen/html/html/search/typedefs_5.js +3 -3
  401. package/SVF-doxygen/html/html/search/typedefs_8.js +2 -2
  402. package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
  403. package/SVF-doxygen/html/html/search/variables_1.js +2 -2
  404. package/SVF-doxygen/html/html/search/variables_10.js +0 -1
  405. package/SVF-doxygen/html/html/search/variables_12.js +1 -1
  406. package/SVF-doxygen/html/html/search/variables_13.js +1 -0
  407. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  408. package/SVF-doxygen/html/html/search/variables_3.js +4 -4
  409. package/SVF-doxygen/html/html/search/variables_6.js +5 -5
  410. package/SVF-doxygen/html/html/search/variables_7.js +1 -1
  411. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  412. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  413. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +23 -23
  414. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  415. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  416. package/include/DDA/ContextDDA.h +3 -3
  417. package/include/DDA/DDAClient.h +2 -2
  418. package/include/DDA/DDAVFSolver.h +2 -2
  419. package/include/DDA/FlowDDA.h +2 -2
  420. package/include/Graphs/ICFG.h +32 -32
  421. package/include/Graphs/ICFGNode.h +33 -33
  422. package/include/Graphs/ICFGStat.h +11 -11
  423. package/include/Graphs/PTACallGraph.h +19 -19
  424. package/include/Graphs/SVFG.h +16 -16
  425. package/include/Graphs/SVFGNode.h +14 -14
  426. package/include/Graphs/SVFGOPT.h +1 -1
  427. package/include/Graphs/ThreadCallGraph.h +25 -25
  428. package/include/Graphs/VFG.h +10 -10
  429. package/include/Graphs/VFGNode.h +8 -8
  430. package/include/MSSA/MSSAMuChi.h +6 -6
  431. package/include/MSSA/MemRegion.h +24 -24
  432. package/include/MSSA/MemSSA.h +10 -10
  433. package/include/MTA/LockResultValidator.h +2 -2
  434. package/include/MTA/MHP.h +4 -4
  435. package/include/MTA/PCG.h +1 -1
  436. package/include/MTA/TCT.h +2 -2
  437. package/include/MemoryModel/PointerAnalysis.h +12 -12
  438. package/include/MemoryModel/SVFIR.h +22 -22
  439. package/include/MemoryModel/SVFStatements.h +11 -11
  440. package/include/MemoryModel/SymbolTableInfo.h +15 -9
  441. package/include/SABER/LeakChecker.h +4 -4
  442. package/include/SABER/ProgSlice.h +2 -2
  443. package/include/SABER/SaberCheckerAPI.h +4 -4
  444. package/include/SABER/SaberSVFGBuilder.h +1 -1
  445. package/include/SABER/SrcSnkDDA.h +1 -1
  446. package/include/SVF-FE/ICFGBuilder.h +4 -4
  447. package/include/SVF-FE/SVFIRBuilder.h +5 -5
  448. package/include/Util/Options.h +1 -1
  449. package/lib/DDA/ContextDDA.cpp +3 -3
  450. package/lib/DDA/DDAClient.cpp +1 -1
  451. package/lib/DDA/FlowDDA.cpp +1 -1
  452. package/lib/Graphs/ICFG.cpp +88 -71
  453. package/lib/Graphs/PTACallGraph.cpp +5 -5
  454. package/lib/Graphs/SVFG.cpp +7 -7
  455. package/lib/Graphs/ThreadCallGraph.cpp +6 -6
  456. package/lib/Graphs/VFG.cpp +6 -6
  457. package/lib/MSSA/MemRegion.cpp +17 -17
  458. package/lib/MSSA/MemSSA.cpp +3 -3
  459. package/lib/MTA/LockAnalysis.cpp +4 -4
  460. package/lib/MTA/MHP.cpp +5 -5
  461. package/lib/MTA/MTAResultValidator.cpp +1 -1
  462. package/lib/MTA/PCG.cpp +1 -1
  463. package/lib/MemoryModel/PointerAnalysis.cpp +10 -10
  464. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  465. package/lib/MemoryModel/SVFIR.cpp +5 -5
  466. package/lib/MemoryModel/SVFStatements.cpp +53 -49
  467. package/lib/MemoryModel/SVFVariables.cpp +10 -10
  468. package/lib/MemoryModel/SymbolTableInfo.cpp +12 -7
  469. package/lib/SABER/DoubleFreeChecker.cpp +1 -1
  470. package/lib/SABER/FileChecker.cpp +2 -2
  471. package/lib/SABER/LeakChecker.cpp +8 -8
  472. package/lib/SABER/ProgSlice.cpp +2 -2
  473. package/lib/SVF-FE/CallGraphBuilder.cpp +4 -4
  474. package/lib/SVF-FE/Graph2Json.cpp +5 -5
  475. package/lib/SVF-FE/ICFGBuilder.cpp +31 -25
  476. package/lib/SVF-FE/SVFIRBuilder.cpp +8 -8
  477. package/lib/SVF-FE/SymbolTableBuilder.cpp +2 -2
  478. package/lib/Util/Options.cpp +3 -3
  479. package/lib/Util/PTAStat.cpp +3 -3
  480. package/lib/Util/SVFUtil.cpp +2 -0
  481. package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
  482. package/lib/WPA/Andersen.cpp +3 -3
  483. package/lib/WPA/FlowSensitive.cpp +2 -2
  484. package/lib/WPA/TypeAnalysis.cpp +1 -1
  485. package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
  486. package/lib/WPA/WPAPass.cpp +4 -4
  487. package/package.json +1 -1
@@ -86,7 +86,7 @@ $(function() {
86
86
  <div class="ttc" id="namespaceSVF_html_ad9ebd847ed5d901cd30b1cfcdaec3462"><div class="ttname"><a href="namespaceSVF.html#ad9ebd847ed5d901cd30b1cfcdaec3462">SVF::ConstantDataArray</a></div><div class="ttdeci">llvm::ConstantDataArray ConstantDataArray</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00138">BasicTypes.h:138</a></div></div>
87
87
  <div class="ttc" id="classSVF_1_1Options_html_ac609142ee5a0caaf3ac51238ec421c2e"><div class="ttname"><a href="classSVF_1_1Options.html#ac609142ee5a0caaf3ac51238ec421c2e">SVF::Options::PrintValidRes</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PrintValidRes</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00182">Options.h:182</a></div></div>
88
88
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a760c0f6f891daa4532a44c6594794bb8"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8">SVF::LockResultValidator::LOCK_IMPRECISE</a></div><div class="ttdeci">static const LOCK_FLAG LOCK_IMPRECISE</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00100">LockResultValidator.h:100</a></div></div>
89
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00388">SVFUtil.cpp:388</a></div></div>
89
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00390">SVFUtil.cpp:390</a></div></div>
90
90
  <div class="ttc" id="namespaceSVF_html_a88fd7387fcf16caf70abe265cdcf90b9"><div class="ttname"><a href="namespaceSVF.html#a88fd7387fcf16caf70abe265cdcf90b9">SVF::StringRef</a></div><div class="ttdeci">llvm::StringRef StringRef</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00102">BasicTypes.h:102</a></div></div>
91
91
  <div class="ttc" id="namespaceSVF_html_ac4e93e1fec646ff222940a663843921b"><div class="ttname"><a href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">SVF::GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00154">BasicTypes.h:154</a></div></div>
92
92
  <div class="ttc" id="classSVF_1_1CallSite_html_a145676880fce313b4634d14118476c27"><div class="ttname"><a href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">SVF::CallSite::arg_size</a></div><div class="ttdeci">unsigned arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00316">BasicTypes.h:316</a></div></div>
@@ -66,15 +66,14 @@ $(function() {
66
66
  <div class="title">LockResultValidator.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="LockResultValidator_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"> * LOCKResultValidator.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: 24/07/2021</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</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;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef LOCKRESULTVALIDATOR_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#define LOCKRESULTVALIDATOR_H_</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LockAnalysis_8h.html">MTA/LockAnalysis.h</a>&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">/* Validate the result of lock analysis */</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a> {</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html"> 17</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1LockResultValidator.html">LockResultValidator</a> {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6"> 19</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">CxtLockSetStr</a>;</div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a03954bdf28345cd7fbcd5cc242d40681"> 20</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Instruction*, CxtLockSetStr&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a03954bdf28345cd7fbcd5cc242d40681">CxtStmtToCxtLockS</a>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f"> 22</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f">LOCK_FLAG</a>;</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"><a class="line" href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529"> 24</a></span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529">LockResultValidator</a>(<a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* la) : <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>(la) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a> = <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-&gt;<a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375"> 28</a></span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375">~LockResultValidator</a>() {}</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a88ff3ed1398a0b847d71a4c0352ed66d">analyze</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2"> 32</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2">getModule</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="comment">// Get CallBlockNode</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a7cddeb9065b5a3db24b0cb886a959a14"> 37</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a7cddeb9065b5a3db24b0cb886a959a14">getCBN</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-&gt;<a class="code" href="classSVF_1_1TCT.html#a60a74209bd04b2c42fadee5c31e527d3">getCallBlockNode</a>(inst);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; }</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6"> 40</a></span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6">getPreviousMemoryAccessInst</a>( <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; I = I-&gt;getPrevNode();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">while</span> (I)</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="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(I) || SVFUtil::isa&lt;StoreInst&gt;(I))</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CallInst&gt; (I)) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a486f79252c216eb5a9f4c09261a24ae2">getCallees</a>(<a class="code" href="classSVF_1_1LockResultValidator.html#a7cddeb9065b5a3db24b0cb886a959a14">getCBN</a>(I), callees);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span>(PTACallGraph::FunctionSet::const_iterator cit = callees.begin(),</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; ecit = callees.end(); cit!=ecit; cit++)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">if</span>(*cit != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; callee = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*<span class="keyword">&gt;</span> (*cit);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">break</span>;</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; </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span> (callee)</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="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;<a class="code" href="classSVF_1_1ExtAPI.html#a90b433cf855adcf34c6ef7f7e5be62b1">get_type</a>(callee)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; || callee-&gt;<a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>().find(<span class="stringliteral">&quot;llvm.memset&quot;</span>) != StringRef::npos)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; I = I-&gt;getPrevNode();</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="keywordflow">return</span> <span class="keyword">nullptr</span>;</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; </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb"> 74</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb">inFilter</a>(std::string name) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a>.find(name) != <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a>.end();</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; </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07"> 78</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07">match</a>(std::string lockName, CxtLockSetStr LS) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> LS.find(lockName) != LS.end();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> &amp;<a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(<span class="keyword">const</span> std::string &amp;s, <span class="keywordtype">char</span> delim, <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> &amp;elems);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(<span class="keyword">const</span> std::string &amp;s, <span class="keywordtype">char</span> delim);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; std::string <a class="code" href="classSVF_1_1LockResultValidator.html#ab71d89c954395df7d108263b3fa87330">getOutput</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* scenario, LOCK_FLAG analysisRes);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a1b1b841451fe51cb58417e864a28cbfc">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="l00088"></a><span class="lineno"> 88</span>&#160; </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ae6c8782d10e96951f059789aaa309cc2">collectLockTargets</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#acddd2f9d118cbf448d92626d281fdaf9">validateStmtInLock</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a"> 92</a></span>&#160; CxtStmtToCxtLockS <a class="code" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">instToCxtLockSet</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb"> 93</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">LockAnalysis::CxtStmtToCxtLockSet</a> <a class="code" href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb">cxtStmtToCxtLockSet</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9"> 94</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">LockAnalysis::CxtLockSet</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9">cxtLockSet</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"><a class="line" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798"> 96</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61"> 97</a></span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f"> 99</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f">LOCK_TRUE</a> = 0x01;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8"> 100</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8">LOCK_IMPRECISE</a> = 0x02;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf"> 101</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf">LOCK_UNSOUND</a> = 0x04;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371"> 103</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_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">LOCK</a> = <span class="stringliteral">&quot;LOCK&quot;</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91"> 105</a></span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a> = {<span class="stringliteral">&quot;LOCK&quot;</span>, <span class="stringliteral">&quot;INTERLEV_ACCESS&quot;</span>, <span class="stringliteral">&quot;PAUSE&quot;</span>, <span class="stringliteral">&quot;CXT_THREAD&quot;</span>, <span class="stringliteral">&quot;TCT_ACCESS&quot;</span>};</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}; </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LOCKRESULTVALIDATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LockResultValidator_html_adb743de97f26167b39f6a348a63db371"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">SVF::LockResultValidator::LOCK</a></div><div class="ttdeci">static constexpr char const * LOCK</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00103">LockResultValidator.h:103</a></div></div>
69
+ <a href="LockResultValidator_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"> * LOCKResultValidator.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: 24/07/2021</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</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;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef LOCKRESULTVALIDATOR_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#define LOCKRESULTVALIDATOR_H_</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LockAnalysis_8h.html">MTA/LockAnalysis.h</a>&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">/* Validate the result of lock analysis */</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a> {</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html"> 17</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1LockResultValidator.html">LockResultValidator</a> {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6"> 19</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">CxtLockSetStr</a>;</div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a03954bdf28345cd7fbcd5cc242d40681"> 20</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Instruction*, CxtLockSetStr&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a03954bdf28345cd7fbcd5cc242d40681">CxtStmtToCxtLockS</a>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f"> 22</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f">LOCK_FLAG</a>;</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"><a class="line" href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529"> 24</a></span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529">LockResultValidator</a>(<a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* la) : <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>(la) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a> = <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-&gt;<a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375"> 28</a></span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375">~LockResultValidator</a>() {}</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a88ff3ed1398a0b847d71a4c0352ed66d">analyze</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2"> 32</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2">getModule</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="comment">// Get CallICFGNode</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a97eef42fa816256818b44382604b53c8"> 37</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a97eef42fa816256818b44382604b53c8">getCBN</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-&gt;<a class="code" href="classSVF_1_1TCT.html#afea9de8f27e501fdc2723cc14a8dc93f">getCallBlockNode</a>(inst);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; }</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6"> 40</a></span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6">getPreviousMemoryAccessInst</a>( <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; I = I-&gt;getPrevNode();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">while</span> (I)</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="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(I) || SVFUtil::isa&lt;StoreInst&gt;(I))</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CallInst&gt; (I)) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(<a class="code" href="classSVF_1_1LockResultValidator.html#a97eef42fa816256818b44382604b53c8">getCBN</a>(I), callees);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span>(PTACallGraph::FunctionSet::const_iterator cit = callees.begin(),</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; ecit = callees.end(); cit!=ecit; cit++)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">if</span>(*cit != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; callee = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*<span class="keyword">&gt;</span> (*cit);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">break</span>;</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; </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span> (callee)</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="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;<a class="code" href="classSVF_1_1ExtAPI.html#a90b433cf855adcf34c6ef7f7e5be62b1">get_type</a>(callee)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; || callee-&gt;<a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>().find(<span class="stringliteral">&quot;llvm.memset&quot;</span>) != StringRef::npos)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; I = I-&gt;getPrevNode();</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="keywordflow">return</span> <span class="keyword">nullptr</span>;</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; </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb"> 74</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb">inFilter</a>(std::string name) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a>.find(name) != <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a>.end();</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; </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07"> 78</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07">match</a>(std::string lockName, CxtLockSetStr LS) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> LS.find(lockName) != LS.end();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> &amp;<a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(<span class="keyword">const</span> std::string &amp;s, <span class="keywordtype">char</span> delim, <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> &amp;elems);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(<span class="keyword">const</span> std::string &amp;s, <span class="keywordtype">char</span> delim);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; std::string <a class="code" href="classSVF_1_1LockResultValidator.html#ab71d89c954395df7d108263b3fa87330">getOutput</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* scenario, LOCK_FLAG analysisRes);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a1b1b841451fe51cb58417e864a28cbfc">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="l00088"></a><span class="lineno"> 88</span>&#160; </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ae6c8782d10e96951f059789aaa309cc2">collectLockTargets</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#acddd2f9d118cbf448d92626d281fdaf9">validateStmtInLock</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a"> 92</a></span>&#160; CxtStmtToCxtLockS <a class="code" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">instToCxtLockSet</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb"> 93</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">LockAnalysis::CxtStmtToCxtLockSet</a> <a class="code" href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb">cxtStmtToCxtLockSet</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9"> 94</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">LockAnalysis::CxtLockSet</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9">cxtLockSet</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"><a class="line" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798"> 96</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61"> 97</a></span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f"> 99</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f">LOCK_TRUE</a> = 0x01;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8"> 100</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8">LOCK_IMPRECISE</a> = 0x02;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf"> 101</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf">LOCK_UNSOUND</a> = 0x04;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371"> 103</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_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">LOCK</a> = <span class="stringliteral">&quot;LOCK&quot;</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91"> 105</a></span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a> = {<span class="stringliteral">&quot;LOCK&quot;</span>, <span class="stringliteral">&quot;INTERLEV_ACCESS&quot;</span>, <span class="stringliteral">&quot;PAUSE&quot;</span>, <span class="stringliteral">&quot;CXT_THREAD&quot;</span>, <span class="stringliteral">&quot;TCT_ACCESS&quot;</span>};</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}; </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LOCKRESULTVALIDATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LockResultValidator_html_adb743de97f26167b39f6a348a63db371"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">SVF::LockResultValidator::LOCK</a></div><div class="ttdeci">static constexpr char const * LOCK</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00103">LockResultValidator.h:103</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_ad8a03181445edeb835fed08c88f6e0bb"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb">SVF::LockResultValidator::cxtStmtToCxtLockSet</a></div><div class="ttdeci">LockAnalysis::CxtStmtToCxtLockSet cxtStmtToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00093">LockResultValidator.h:93</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1LockResultValidator_html"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html">SVF::LockResultValidator</a></div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00017">LockResultValidator.h:17</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
73
73
  <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="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
74
- <div class="ttc" id="classSVF_1_1TCT_html_a60a74209bd04b2c42fadee5c31e527d3"><div class="ttname"><a href="classSVF_1_1TCT.html#a60a74209bd04b2c42fadee5c31e527d3">SVF::TCT::getCallBlockNode</a></div><div class="ttdeci">CallBlockNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdoc">Get CallBlockNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00151">TCT.h:151</a></div></div>
75
74
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a03589368482d3f7ee7f6734e257dcbdf"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf">SVF::LockResultValidator::LOCK_UNSOUND</a></div><div class="ttdeci">static const LOCK_FLAG LOCK_UNSOUND</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00101">LockResultValidator.h:101</a></div></div>
76
75
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a445dbda778198acac87fbbfa029b0dfb"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb">SVF::LockResultValidator::inFilter</a></div><div class="ttdeci">bool inFilter(std::string name)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00074">LockResultValidator.h:74</a></div></div>
77
- <div class="ttc" id="classSVF_1_1LockResultValidator_html_a7cddeb9065b5a3db24b0cb886a959a14"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a7cddeb9065b5a3db24b0cb886a959a14">SVF::LockResultValidator::getCBN</a></div><div class="ttdeci">CallBlockNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00037">LockResultValidator.h:37</a></div></div>
76
+ <div class="ttc" id="classSVF_1_1LockResultValidator_html_a97eef42fa816256818b44382604b53c8"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a97eef42fa816256818b44382604b53c8">SVF::LockResultValidator::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00037">LockResultValidator.h:37</a></div></div>
78
77
  <div class="ttc" id="classSVF_1_1SVFValue_html_adc15c1f7a77158142156fba7524e89c9"><div class="ttname"><a href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">SVF::SVFValue::getName</a></div><div class="ttdeci">const llvm::StringRef getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00231">SVFBasicTypes.h:231</a></div></div>
79
78
  <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>
80
79
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00100">SVFBasicTypes.h:100</a></div></div>
@@ -83,7 +82,6 @@ $(function() {
83
82
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a7b8a2bf9962bd57e103039ead85821d2"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2">SVF::LockResultValidator::getModule</a></div><div class="ttdeci">SVFModule * getModule() const</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00032">LockResultValidator.h:32</a></div></div>
84
83
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a0be1cdab3c36835044e3b26d5d8402e6"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6">SVF::LockResultValidator::getPreviousMemoryAccessInst</a></div><div class="ttdeci">const Instruction * getPreviousMemoryAccessInst(const Instruction *I)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00040">LockResultValidator.h:40</a></div></div>
85
84
  <div class="ttc" id="classSVF_1_1LockAnalysis_html_a0716c155b42b3ae7a6c8d7593bb6ac83"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">SVF::LockAnalysis::CxtLockSet</a></div><div class="ttdeci">Set&lt; CxtLock &gt; CxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00049">LockAnalysis.h:49</a></div></div>
86
- <div class="ttc" id="classSVF_1_1PTACallGraph_html_a486f79252c216eb5a9f4c09261a24ae2"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a486f79252c216eb5a9f4c09261a24ae2">SVF::PTACallGraph::getCallees</a></div><div class="ttdeci">void getCallees(const CallBlockNode *cs, FunctionSet &amp;callees)</div><div class="ttdoc">Get all callees for a callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00382">PTACallGraph.h:382</a></div></div>
87
85
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_afec6058866fe334646db78227fb4d6a6"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">SVF::LockResultValidator::CxtLockSetStr</a></div><div class="ttdeci">Set&lt; std::string &gt; CxtLockSetStr</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00019">LockResultValidator.h:19</a></div></div>
88
86
  <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
89
87
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
@@ -96,6 +94,7 @@ $(function() {
96
94
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a3b7d25dfe5251f49afbb733c25eee70f"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f">SVF::LockResultValidator::LOCK_FLAG</a></div><div class="ttdeci">unsigned LOCK_FLAG</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00022">LockResultValidator.h:22</a></div></div>
97
95
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a51e6f48be9f2a65b390e4e0350eb12a9"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9">SVF::LockResultValidator::cxtLockSet</a></div><div class="ttdeci">LockAnalysis::CxtLockSet cxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00094">LockResultValidator.h:94</a></div></div>
98
96
  <div class="ttc" id="classSVF_1_1ExtAPI_html_a86508e03ca1c2e37fc9414cb2335c3ec"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a86508e03ca1c2e37fc9414cb2335c3ec">SVF::ExtAPI::getExtAPI</a></div><div class="ttdeci">static ExtAPI * getExtAPI()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during whole analysis. </div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00114">ExtAPI.h:114</a></div></div>
97
+ <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
99
98
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_ae6c8782d10e96951f059789aaa309cc2"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#ae6c8782d10e96951f059789aaa309cc2">SVF::LockResultValidator::collectLockTargets</a></div><div class="ttdeci">bool collectLockTargets()</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00071">LockResultValidator.cpp:71</a></div></div>
100
99
  <div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00164">TCT.h:164</a></div></div>
101
100
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
@@ -109,11 +108,12 @@ $(function() {
109
108
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a88ff3ed1398a0b847d71a4c0352ed66d"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a88ff3ed1398a0b847d71a4c0352ed66d">SVF::LockResultValidator::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00150">LockResultValidator.cpp:150</a></div></div>
110
109
  <div class="ttc" id="classSVF_1_1LockAnalysis_html_a710aad28484677637367e9098a55c7d7"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">SVF::LockAnalysis::CxtStmtToCxtLockSet</a></div><div class="ttdeci">Map&lt; CxtStmt, CxtLockSet &gt; CxtStmtToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00055">LockAnalysis.h:55</a></div></div>
111
110
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_acddd2f9d118cbf448d92626d281fdaf9"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#acddd2f9d118cbf448d92626d281fdaf9">SVF::LockResultValidator::validateStmtInLock</a></div><div class="ttdeci">LOCK_FLAG validateStmtInLock()</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00101">LockResultValidator.cpp:101</a></div></div>
111
+ <div class="ttc" id="classSVF_1_1TCT_html_afea9de8f27e501fdc2723cc14a8dc93f"><div class="ttname"><a href="classSVF_1_1TCT.html#afea9de8f27e501fdc2723cc14a8dc93f">SVF::TCT::getCallBlockNode</a></div><div class="ttdeci">CallICFGNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00151">TCT.h:151</a></div></div>
112
112
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_ae68afb4d129dc6cecfc3561f6a17c798"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">SVF::LockResultValidator::_la</a></div><div class="ttdeci">LockAnalysis * _la</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00096">LockResultValidator.h:96</a></div></div>
113
- <div class="ttc" id="classSVF_1_1CallBlockNode_html"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html">SVF::CallBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
114
113
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_aa1b48d5792e596703f3283316e9f4c07"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07">SVF::LockResultValidator::match</a></div><div class="ttdeci">bool match(std::string lockName, CxtLockSetStr LS)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00078">LockResultValidator.h:78</a></div></div>
115
114
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a70cdb993b3e90c70cc083fb8ed93fb91"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">SVF::LockResultValidator::filterFun</a></div><div class="ttdeci">Set&lt; std::string &gt; filterFun</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00105">LockResultValidator.h:105</a></div></div>
116
115
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a6790b9a632b172e1ea537ab93f526375"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375">SVF::LockResultValidator::~LockResultValidator</a></div><div class="ttdeci">~LockResultValidator()</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00028">LockResultValidator.h:28</a></div></div>
116
+ <div class="ttc" id="classSVF_1_1PTACallGraph_html_a317e09edb29b110cf4273009551d31ec"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">SVF::PTACallGraph::getCallees</a></div><div class="ttdeci">void getCallees(const CallICFGNode *cs, FunctionSet &amp;callees)</div><div class="ttdoc">Get all callees for a callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00382">PTACallGraph.h:382</a></div></div>
117
117
  </div><!-- fragment --></div><!-- contents -->
118
118
  <!-- start footer part -->
119
119
  <hr class="footer"/><address class="footer"><small>