svf-tools 1.0.482 → 1.0.485

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 (282) hide show
  1. package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +2 -1
  2. package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +2 -1
  3. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +2 -1
  4. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -1
  5. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -1
  6. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +2 -1
  7. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -1
  8. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -2
  9. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  10. package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +2 -1
  11. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +2 -2
  12. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +32 -32
  13. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +11 -11
  14. package/SVF-doxygen/html/html/CFLAlias_8cpp.html +1 -0
  15. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +46 -13
  16. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +36 -13
  17. package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +3 -3
  18. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +8 -8
  19. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +74 -77
  20. package/SVF-doxygen/html/html/CFLGrammar_8txt.html +165 -39
  21. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +4 -4
  22. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +3 -3
  24. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +3 -3
  25. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +16 -16
  26. package/SVF-doxygen/html/html/CFLSolver_8h_source.html +10 -10
  27. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +3 -2
  28. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +2 -2
  29. package/SVF-doxygen/html/html/CHG_8cpp_source.html +3 -2
  30. package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/CPPUtil_8h.html +4 -4
  33. package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -1
  34. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -2
  35. package/SVF-doxygen/html/html/Casting_8h_source.html +2 -1
  36. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -3
  37. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -1
  39. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -2
  42. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +2 -1
  43. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +3 -2
  44. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +1 -1
  45. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -1
  46. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +2 -1
  47. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +2 -2
  48. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +2 -2
  49. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -1
  50. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +2 -1
  51. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -1
  52. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +2 -1
  54. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -1
  55. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  56. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
  57. package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +3 -3
  58. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +6 -4
  59. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +2 -2
  60. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -1
  61. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +3 -2
  62. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -2
  64. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  65. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +2 -1
  66. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
  67. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -1
  68. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +2 -1
  69. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +3 -2
  70. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -2
  71. package/SVF-doxygen/html/html/MHP_8cpp_source.html +3 -2
  72. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -2
  73. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -2
  74. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +3 -2
  75. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +2 -2
  76. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
  77. package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -2
  78. package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
  79. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +2 -1
  80. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -1
  81. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +3 -2
  82. package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +1 -1
  83. package/SVF-doxygen/html/html/Options_8cpp_source.html +4 -4
  84. package/SVF-doxygen/html/html/Options_8h_source.html +4 -4
  85. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -1
  86. package/SVF-doxygen/html/html/PCG_8cpp_source.html +3 -2
  87. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +3 -2
  88. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  89. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +2 -1
  90. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -5
  91. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +15 -13
  92. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +12 -12
  93. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -1
  94. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
  95. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -1
  96. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -1
  97. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +3 -2
  98. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +3 -2
  99. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  100. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +3 -2
  101. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +2 -2
  102. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +2 -1
  103. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +2 -1
  104. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +2 -2
  105. package/SVF-doxygen/html/html/SVFUtil_8h.html +1 -1
  106. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +3 -2
  107. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -1
  108. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
  109. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -1
  110. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -1
  111. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +2 -1
  112. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +3 -2
  113. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +2 -1
  114. package/SVF-doxygen/html/html/TCT_8cpp_source.html +3 -2
  115. package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
  116. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +2 -2
  117. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -1
  118. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -1
  119. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -1
  120. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +2 -1
  121. package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -2
  122. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  123. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +2 -1
  124. package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
  125. package/SVF-doxygen/html/html/cfl_8cpp_source.html +2 -2
  126. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
  128. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
  132. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +5 -5
  135. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +2 -2
  136. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +54 -53
  137. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +70 -63
  138. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +415 -95
  139. package/SVF-doxygen/html/html/classSVF_1_1CFLFIFOWorkList.html +25 -25
  140. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar-members.html +1 -1
  141. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.html +51 -51
  142. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver-members.html +4 -4
  143. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +39 -39
  144. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +4 -4
  145. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
  146. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +1 -1
  148. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +13 -13
  150. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +58 -58
  153. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +3 -3
  154. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +3 -3
  155. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +2 -2
  156. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
  157. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +2 -2
  158. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +4 -4
  159. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +2 -2
  160. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
  161. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +5 -5
  162. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
  163. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +6 -6
  164. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
  165. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +38 -38
  166. package/SVF-doxygen/html/html/classSVF_1_1Options.html +30 -30
  167. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
  168. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +40 -36
  169. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  170. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +2 -2
  171. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +4 -4
  172. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +3 -3
  173. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
  174. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +3 -3
  175. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  176. package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +1 -1
  177. package/SVF-doxygen/html/html/cuddInt_8c.html +30 -30
  178. package/SVF-doxygen/html/html/cuddInt_8c_source.html +3 -3
  179. package/SVF-doxygen/html/html/cuddInt_8h.html +10 -10
  180. package/SVF-doxygen/html/html/cudd_8h.html +14 -14
  181. package/SVF-doxygen/html/html/cudd_8h_source.html +2 -2
  182. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  183. package/SVF-doxygen/html/html/functions_a.html +11 -10
  184. package/SVF-doxygen/html/html/functions_c.html +30 -23
  185. package/SVF-doxygen/html/html/functions_func.html +12 -11
  186. package/SVF-doxygen/html/html/functions_func_c.html +11 -10
  187. package/SVF-doxygen/html/html/functions_func_h.html +3 -2
  188. package/SVF-doxygen/html/html/functions_func_n.html +1 -1
  189. package/SVF-doxygen/html/html/functions_func_o.html +4 -9
  190. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  191. package/SVF-doxygen/html/html/functions_func_u.html +1 -0
  192. package/SVF-doxygen/html/html/functions_g.html +5 -8
  193. package/SVF-doxygen/html/html/functions_h.html +2 -1
  194. package/SVF-doxygen/html/html/functions_i.html +6 -6
  195. package/SVF-doxygen/html/html/functions_l.html +5 -5
  196. package/SVF-doxygen/html/html/functions_n.html +1 -1
  197. package/SVF-doxygen/html/html/functions_o.html +14 -21
  198. package/SVF-doxygen/html/html/functions_p.html +12 -9
  199. package/SVF-doxygen/html/html/functions_r.html +4 -4
  200. package/SVF-doxygen/html/html/functions_s.html +10 -8
  201. package/SVF-doxygen/html/html/functions_t.html +3 -3
  202. package/SVF-doxygen/html/html/functions_type_c.html +1 -0
  203. package/SVF-doxygen/html/html/functions_u.html +1 -0
  204. package/SVF-doxygen/html/html/functions_v.html +3 -3
  205. package/SVF-doxygen/html/html/functions_vars_c.html +1 -0
  206. package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
  207. package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
  208. package/SVF-doxygen/html/html/functions_w.html +6 -10
  209. package/SVF-doxygen/html/html/globals_a.html +3 -0
  210. package/SVF-doxygen/html/html/globals_f.html +2 -2
  211. package/SVF-doxygen/html/html/globals_g.html +10 -4
  212. package/SVF-doxygen/html/html/globals_l.html +4 -1
  213. package/SVF-doxygen/html/html/globals_m.html +15 -12
  214. package/SVF-doxygen/html/html/globals_s.html +17 -13
  215. package/SVF-doxygen/html/html/globals_vars.html +26 -5
  216. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  217. package/SVF-doxygen/html/html/namespaceSVF.html +2 -2
  218. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +3 -3
  219. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +12 -12
  220. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  221. package/SVF-doxygen/html/html/search/all_1.js +2 -1
  222. package/SVF-doxygen/html/html/search/all_10.js +8 -7
  223. package/SVF-doxygen/html/html/search/all_12.js +2 -2
  224. package/SVF-doxygen/html/html/search/all_13.js +12 -11
  225. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  226. package/SVF-doxygen/html/html/search/all_15.js +2 -2
  227. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  228. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  229. package/SVF-doxygen/html/html/search/all_3.js +2 -2
  230. package/SVF-doxygen/html/html/search/all_5.js +1 -1
  231. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  232. package/SVF-doxygen/html/html/search/all_7.js +4 -3
  233. package/SVF-doxygen/html/html/search/all_8.js +1 -1
  234. package/SVF-doxygen/html/html/search/all_9.js +2 -2
  235. package/SVF-doxygen/html/html/search/all_c.js +6 -5
  236. package/SVF-doxygen/html/html/search/all_d.js +3 -2
  237. package/SVF-doxygen/html/html/search/all_e.js +3 -3
  238. package/SVF-doxygen/html/html/search/all_f.js +7 -9
  239. package/SVF-doxygen/html/html/search/functions_0.js +1 -1
  240. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  241. package/SVF-doxygen/html/html/search/functions_13.js +1 -1
  242. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  243. package/SVF-doxygen/html/html/search/functions_7.js +1 -1
  244. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  245. package/SVF-doxygen/html/html/search/functions_e.js +4 -6
  246. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  247. package/SVF-doxygen/html/html/search/variables_1.js +1 -0
  248. package/SVF-doxygen/html/html/search/variables_10.js +1 -0
  249. package/SVF-doxygen/html/html/search/variables_13.js +2 -0
  250. package/SVF-doxygen/html/html/search/variables_14.js +4 -4
  251. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  252. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  253. package/SVF-doxygen/html/html/search/variables_6.js +2 -2
  254. package/SVF-doxygen/html/html/search/variables_7.js +4 -3
  255. package/SVF-doxygen/html/html/search/variables_c.js +3 -2
  256. package/SVF-doxygen/html/html/search/variables_d.js +1 -0
  257. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  258. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol-members.html +10 -13
  259. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +44 -145
  260. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1SymbolVectorHash.html +3 -3
  261. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +6 -5
  262. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +4 -3
  263. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +4 -3
  264. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +1 -1
  265. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +2 -2
  266. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +1 -1
  267. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  268. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  269. package/include/CFL/CFLAlias.h +50 -4
  270. package/include/CFL/CFLGrammar.h +9 -28
  271. package/include/CFL/CFLGrammar.txt +22 -1
  272. package/include/CFL/CFLSolver.h +10 -8
  273. package/include/Graphs/CFLGraph.h +0 -1
  274. package/include/Graphs/GraphPrinter.h +3 -3
  275. package/include/Util/Options.h +2 -2
  276. package/lib/CFL/CFGNormalizer.cpp +8 -14
  277. package/lib/CFL/CFLAlias.cpp +175 -6
  278. package/lib/CFL/CFLSolver.cpp +1 -0
  279. package/lib/Graphs/CFLGraph.cpp +0 -4
  280. package/lib/MemoryModel/PointerAnalysis.cpp +3 -0
  281. package/lib/Util/Options.cpp +8 -8
  282. package/package.json +1 -1
@@ -307,7 +307,7 @@ Static Private Attributes</h2></td></tr>
307
307
  </div><div class="memdoc">
308
308
 
309
309
  <p class="definition">Definition at line <a class="el" href="LockResultValidator_8cpp_source.html#l00072">72</a> of file <a class="el" href="LockResultValidator_8cpp_source.html">LockResultValidator.cpp</a>.</p>
310
- <div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2">getModule</a>()-&gt;llvmFunBegin(); it != <a class="code" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); it++)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> fName = (*it)-&gt;getName().str();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span>(fName.find(<a class="code" href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">LOCK</a>) != std::string::npos)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; F = (*it);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (!F)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span>(Value::const_use_iterator it = F-&gt;use_begin(), ie = F-&gt;use_end(); it!=ie; it++)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a> *u = &amp;*it;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *user = u-&gt;getUser();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(user);</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"> 92</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">CxtLockSetStr</a> y = <a class="code" href="classSVF_1_1LockResultValidator.html#a1b1b841451fe51cb58417e864a28cbfc">getStringArg</a>(inst, 0);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* memInst = <a class="code" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6">getPreviousMemoryAccessInst</a>(inst);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">instToCxtLockSet</a>[memInst] = y;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast&lt;StoreInst&gt; (memInst))</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#ab58e9b290ff1defcedad101c3da8d8fd">BinaryOperator</a>* bop = SVFUtil::dyn_cast&lt;BinaryOperator&gt; (store-&gt;getValueOperand()))</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"> 99</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* v = bop-&gt;getOperand(0);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>&gt; (v);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">instToCxtLockSet</a>[prevInst] = y;</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"> 103</span>&#160; }</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"> 105</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}</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#l00112">LockResultValidator.h:112</a></div></div>
310
+ <div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2">getModule</a>()-&gt;llvmFunBegin(); it != <a class="code" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); it++)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> fName = (*it)-&gt;getName().str();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span>(fName.find(<a class="code" href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">LOCK</a>) != std::string::npos)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; F = (*it);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (!F)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span>(Value::const_use_iterator it = F-&gt;use_begin(), ie = F-&gt;use_end(); it!=ie; it++)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a> *u = &amp;*it;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *user = u-&gt;getUser();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(user);</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"> 92</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">CxtLockSetStr</a> y = <a class="code" href="classSVF_1_1LockResultValidator.html#a1b1b841451fe51cb58417e864a28cbfc">getStringArg</a>(inst, 0);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* memInst = <a class="code" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6">getPreviousMemoryAccessInst</a>(inst);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">instToCxtLockSet</a>[memInst] = y;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast&lt;StoreInst&gt; (memInst))</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#ab58e9b290ff1defcedad101c3da8d8fd">BinaryOperator</a>* bop = SVFUtil::dyn_cast&lt;BinaryOperator&gt; (store-&gt;getValueOperand()))</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"> 99</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* v = bop-&gt;getOperand(0);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>&gt; (v);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">instToCxtLockSet</a>[prevInst] = y;</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"> 103</span>&#160; }</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"> 105</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}</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#l00112">LockResultValidator.h:112</a></div></div>
311
311
  <div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
312
312
  <div class="ttc" id="namespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00104">BasicTypes.h:104</a></div></div>
313
313
  <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#l00035">LockResultValidator.h:35</a></div></div>
@@ -317,10 +317,10 @@ Static Private Attributes</h2></td></tr>
317
317
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
318
318
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
319
319
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a841c1dfb065999215b5f415e403f7a2a"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">SVF::LockResultValidator::instToCxtLockSet</a></div><div class="ttdeci">CxtStmtToCxtLockS instToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00101">LockResultValidator.h:101</a></div></div>
320
- <div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
321
320
  <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a9c01c67684e99545d8e0403321594977"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00029">BasicTypes.h:29</a></div></div>
322
321
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a1b1b841451fe51cb58417e864a28cbfc"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a1b1b841451fe51cb58417e864a28cbfc">SVF::LockResultValidator::getStringArg</a></div><div class="ttdeci">Set&lt; std::string &gt; getStringArg(const Instruction *inst, unsigned int arg_num)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00016">LockResultValidator.cpp:16</a></div></div>
323
322
  <div class="ttc" id="namespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00105">BasicTypes.h:105</a></div></div>
323
+ <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
324
324
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
325
325
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
326
326
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
@@ -694,7 +694,7 @@ Static Private Attributes</h2></td></tr>
694
694
  </div><div class="memdoc">
695
695
 
696
696
  <p class="definition">Definition at line <a class="el" href="LockResultValidator_8cpp_source.html#l00108">108</a> of file <a class="el" href="LockResultValidator_8cpp_source.html">LockResultValidator.cpp</a>.</p>
697
- <div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f">LockResultValidator::LOCK_FLAG</a> res = <a class="code" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f">LockResultValidator::LOCK_TRUE</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">LockAnalysis::CxtStmtToCxtLockSet</a> analyedLS = <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a7faecaee57dbef533dc46b2708305ab2">getCSTCLS</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">for</span>(LockAnalysis::CxtStmtToCxtLockSet::iterator it = analyedLS.begin(),</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; eit = analyedLS.end(); it!=eit; it++)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = ((*it).first).getStmt();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span>(!SVFUtil::isa&lt;LoadInst&gt; (inst) &amp;&amp; !SVFUtil::isa&lt;StoreInst&gt; (inst))</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> = inst-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb">inFilter</a>(F-&gt;getName().str()))</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">CxtLockSetStr</a> LS = <a class="code" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">instToCxtLockSet</a>[inst];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span>(LS.size() != (*it).second.size())</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ac609142ee5a0caaf3ac51238ec421c2e">Options::PrintValidRes</a>)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">errMsg</a>(<span class="stringliteral">&quot;\nValidate Stmt&#39;s Lock : Wrong at: &quot;</span>) &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(inst) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Reason: The number of lock on current stmt is wrong\n&quot;</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n----Given locks:\n&quot;</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">for</span> (CxtLockSetStr::iterator it1 = LS.begin(),eit1 = LS.end(); it1 != eit1; it++)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Lock &quot;</span> &lt;&lt; *it1 &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n----Analysis locks:\n&quot;</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">for</span> (LockAnalysis::CxtLockSet::iterator it2 = (*it).second.begin(),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; eit2 = (*it).second.end(); it2 != eit2; ++it)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call = (*it2).getStmt();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lockName = call-&gt;getOperand(0)-&gt;getName().str();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>()&lt;&lt;<span class="stringliteral">&quot;Lock &quot;</span> &lt;&lt; lockName &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; res = <a class="code" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf">LockResultValidator::LOCK_UNSOUND</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">LockAnalysis::CxtLockSet</a> LSA = (*it).second;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span>(LockAnalysis::CxtLockSet::iterator it3 = LSA.begin(), eit3=LSA.end(); it3!=eit3; it3++)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call = (*it3).getStmt();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lockName = call-&gt;getOperand(0)-&gt;getName().str();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07">match</a>(lockName, LS))</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ac609142ee5a0caaf3ac51238ec421c2e">Options::PrintValidRes</a>)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nValidate Stmt&#39;s Lock : Wrong at (&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(inst) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Reason: The number of lock on current stmt is wrong\n&quot;</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n Lock &quot;</span> &lt;&lt; lockName &lt;&lt; <span class="stringliteral">&quot; should not protect current instruction\n&quot;</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; res = <a class="code" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8">LockResultValidator::LOCK_IMPRECISE</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;}</div><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#l00110">LockResultValidator.h:110</a></div></div>
697
+ <div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f">LockResultValidator::LOCK_FLAG</a> res = <a class="code" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f">LockResultValidator::LOCK_TRUE</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">LockAnalysis::CxtStmtToCxtLockSet</a> analyedLS = <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a7faecaee57dbef533dc46b2708305ab2">getCSTCLS</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">for</span>(LockAnalysis::CxtStmtToCxtLockSet::iterator it = analyedLS.begin(),</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; eit = analyedLS.end(); it!=eit; it++)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = ((*it).first).getStmt();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span>(!SVFUtil::isa&lt;LoadInst&gt; (inst) &amp;&amp; !SVFUtil::isa&lt;StoreInst&gt; (inst))</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = inst-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb">inFilter</a>(F-&gt;getName().str()))</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">CxtLockSetStr</a> LS = <a class="code" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">instToCxtLockSet</a>[inst];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span>(LS.size() != (*it).second.size())</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ac609142ee5a0caaf3ac51238ec421c2e">Options::PrintValidRes</a>)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">errMsg</a>(<span class="stringliteral">&quot;\nValidate Stmt&#39;s Lock : Wrong at: &quot;</span>) &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(inst) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Reason: The number of lock on current stmt is wrong\n&quot;</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n----Given locks:\n&quot;</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">for</span> (CxtLockSetStr::iterator it1 = LS.begin(),eit1 = LS.end(); it1 != eit1; it++)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Lock &quot;</span> &lt;&lt; *it1 &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n----Analysis locks:\n&quot;</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">for</span> (LockAnalysis::CxtLockSet::iterator it2 = (*it).second.begin(),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; eit2 = (*it).second.end(); it2 != eit2; ++it)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call = (*it2).getStmt();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lockName = call-&gt;getOperand(0)-&gt;getName().str();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>()&lt;&lt;<span class="stringliteral">&quot;Lock &quot;</span> &lt;&lt; lockName &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; res = <a class="code" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf">LockResultValidator::LOCK_UNSOUND</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">LockAnalysis::CxtLockSet</a> LSA = (*it).second;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span>(LockAnalysis::CxtLockSet::iterator it3 = LSA.begin(), eit3=LSA.end(); it3!=eit3; it3++)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call = (*it3).getStmt();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lockName = call-&gt;getOperand(0)-&gt;getName().str();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07">match</a>(lockName, LS))</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ac609142ee5a0caaf3ac51238ec421c2e">Options::PrintValidRes</a>)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nValidate Stmt&#39;s Lock : Wrong at (&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(inst) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Reason: The number of lock on current stmt is wrong\n&quot;</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n Lock &quot;</span> &lt;&lt; lockName &lt;&lt; <span class="stringliteral">&quot; should not protect current instruction\n&quot;</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; res = <a class="code" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8">LockResultValidator::LOCK_IMPRECISE</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;}</div><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#l00110">LockResultValidator.h:110</a></div></div>
698
698
  <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#l00081">LockResultValidator.h:81</a></div></div>
699
699
  <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>
700
700
  <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#l00021">LockResultValidator.h:21</a></div></div>
@@ -707,7 +707,7 @@ Static Private Attributes</h2></td></tr>
707
707
  <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#l00391">SVFUtil.cpp:391</a></div></div>
708
708
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a841c1dfb065999215b5f415e403f7a2a"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">SVF::LockResultValidator::instToCxtLockSet</a></div><div class="ttdeci">CxtStmtToCxtLockS instToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00101">LockResultValidator.h:101</a></div></div>
709
709
  <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#l00024">LockResultValidator.h:24</a></div></div>
710
- <div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
710
+ <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
711
711
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a005c38dd07eb66d52066fa1927b1e19f"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f">SVF::LockResultValidator::LOCK_TRUE</a></div><div class="ttdeci">static const LOCK_FLAG LOCK_TRUE</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00108">LockResultValidator.h:108</a></div></div>
712
712
  <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>
713
713
  <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#l00105">LockResultValidator.h:105</a></div></div>
@@ -2149,7 +2149,7 @@ Private Member Functions</h2></td></tr>
2149
2149
  <p>Update non-candidate functions' interleaving </p>
2150
2150
 
2151
2151
  <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00148">148</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
2152
- <div class="fragment"><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), E = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()) &amp;&amp; !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(fun))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *entryinst = &amp;(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;getEntryBlock().front());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(entryinst))</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>&amp; tsSet = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(entryinst);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">for</span> (CxtThreadStmtSet::const_iterator it1 = tsSet.begin(), eit1 = tsSet.end(); it1 != eit1; ++it1)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; cts = *it1;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a> II = inst_begin(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()), EE = inst_end(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()); II != EE; ++II)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">if</span> (inst == entryinst)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(), curCxt, inst);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[newCts] |= <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[cts];</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>[inst].insert(newCts);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
2152
+ <div class="fragment"><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), E = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()) &amp;&amp; !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(fun))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *entryinst = &amp;(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;getEntryBlock().front());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(entryinst))</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>&amp; tsSet = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(entryinst);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">for</span> (CxtThreadStmtSet::const_iterator it1 = tsSet.begin(), eit1 = tsSet.end(); it1 != eit1; ++it1)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; cts = *it1;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a> II = inst_begin(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()), EE = inst_end(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()); II != EE; ++II)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">if</span> (inst == entryinst)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(), curCxt, inst);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[newCts] |= <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[cts];</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>[inst].insert(newCts);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
2153
2153
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
2154
2154
  <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>
2155
2155
  <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a160997c1a0fb1000445d04b89d9c1323"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00111">BasicTypes.h:111</a></div></div>
@@ -2160,9 +2160,9 @@ Private Member Functions</h2></td></tr>
2160
2160
  <div class="ttc" id="classSVF_1_1TCT_html_aabc2c84e951ed9ae64207e379acb3074"><div class="ttname"><a href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">SVF::TCT::getSVFModule</a></div><div class="ttdeci">SVFModule * getSVFModule() const</div><div class="ttdoc">Get SVFFModule. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00160">TCT.h:160</a></div></div>
2161
2161
  <div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00255">MHP.h:255</a></div></div>
2162
2162
  <div class="ttc" id="classSVF_1_1TCT_html_aa69b82c888c8193e97f9e95c62ac99d4"><div class="ttname"><a href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">SVF::TCT::isCandidateFun</a></div><div class="ttdeci">bool isCandidateFun(const PTACallGraph::FunctionSet &amp;callees) const</div><div class="ttdoc">Whether it is a candidate function for indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00248">TCT.h:248</a></div></div>
2163
- <div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
2164
2163
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt &amp; getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
2165
2164
  <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00142">BasicTypes.h:142</a></div></div>
2165
+ <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
2166
2166
  <div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00155">SVFModule.h:155</a></div></div>
2167
2167
  <div class="ttc" id="classSVF_1_1SVFModule_html_a709371b13dcf500277f8bc275bdb23c7"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVF::SVFModule::iterator</a></div><div class="ttdeci">FunctionSetType::iterator iterator</div><div class="ttdoc">Iterators type def. </div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00051">SVFModule.h:51</a></div></div>
2168
2168
  <div class="ttc" id="classSVF_1_1MHP_html_a28031502c4f8f0d4012c0827c57efb32"><div class="ttname"><a href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">SVF::MHP::CxtThreadStmtSet</a></div><div class="ttdeci">Set&lt; CxtThreadStmt &gt; CxtThreadStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00032">MHP.h:32</a></div></div>
@@ -2968,7 +2968,7 @@ Private Attributes</h2></td></tr>
2968
2968
  <p>Given a condition pts, insert into cptsToRepCPtsMap Always map it to its superset(rep) cpts according to existing items 1) map cpts to its superset(rep) which exists in the map, otherwise its superset is itself 2) adjust existing items in the map if their supersets are cpts </p>
2969
2969
 
2970
2970
  <p class="definition">Definition at line <a class="el" href="MemRegion_8cpp_source.html#l00285">285</a> of file <a class="el" href="MemRegion_8cpp_source.html">MemRegion.cpp</a>.</p>
2971
- <div class="fragment"><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;{</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>.find(cpts)!=<a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>.end())</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4740b14abf7d308e7806a0d6d6c42ee2">PointsToList</a> subSetList;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> repCPts = cpts;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">for</span>(PtsToRepPtsSetMap::iterator it = <a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>.begin(),</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; eit = <a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; existCPts = it-&gt;second;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span>(cpts.contains(existCPts))</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; subSetList.insert(it-&gt;first);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(existCPts.contains(cpts))</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; repCPts = existCPts;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">for</span>(PointsToList::iterator it = subSetList.begin(), eit = subSetList.end(); it!=eit; ++it)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>[*it] = cpts;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>[cpts] = repCPts;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4740b14abf7d308e7806a0d6d6c42ee2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4740b14abf7d308e7806a0d6d6c42ee2">SVF::SVFUtil::PointsToList</a></div><div class="ttdeci">OrderedSet&lt; PointsTo, equalPointsTo &gt; PointsToList</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00164">SVFUtil.h:164</a></div></div>
2971
+ <div class="fragment"><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;{</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>.find(cpts)!=<a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>.end())</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a> subSetList;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> repCPts = cpts;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">for</span>(PtsToRepPtsSetMap::iterator it = <a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>.begin(),</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; eit = <a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; existCPts = it-&gt;second;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span>(cpts.contains(existCPts))</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; subSetList.insert(it-&gt;first);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(existCPts.contains(cpts))</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; repCPts = existCPts;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">for</span>(PointsToList::iterator it = subSetList.begin(), eit = subSetList.end(); it!=eit; ++it)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>[*it] = cpts;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>[cpts] = repCPts;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRGenerator_html_a8b254a0c5063e25f297d1b00fb0b515e"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">SVF::MRGenerator::PointsToList</a></div><div class="ttdeci">OrderedSet&lt; NodeBS, SVFUtil::equalNodeBS &gt; PointsToList</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00139">MemRegion.h:139</a></div></div>
2972
2972
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
2973
2973
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ab4d1ff0357d389a65ff1c2112ce631a1"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">SVF::MRGenerator::cptsToRepCPtsMap</a></div><div class="ttdeci">PtsToRepPtsSetMap cptsToRepCPtsMap</div><div class="ttdoc">Map a condition pts to its rep conditional pts (super set points-to) </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00276">MemRegion.h:276</a></div></div>
2974
2974
  </div><!-- fragment -->
@@ -127,7 +127,7 @@ Public Member Functions</h2></td></tr>
127
127
  </table><table class="memberdecls">
128
128
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
129
129
  Static Public Member Functions</h2></td></tr>
130
- <tr class="memitem:a7cb2fd230ed5839b59f650cc87de192e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="SVF-FE_2BasicTypes_8h.html#a14e646200d8836461877804ee4a203d1">ScalarEvolution</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e">getSE</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="el" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</td></tr>
130
+ <tr class="memitem:a7cb2fd230ed5839b59f650cc87de192e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="SVF-FE_2BasicTypes_8h.html#a14e646200d8836461877804ee4a203d1">ScalarEvolution</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e">getSE</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</td></tr>
131
131
  <tr class="separator:a7cb2fd230ed5839b59f650cc87de192e"><td class="memSeparator" colspan="2">&#160;</td></tr>
132
132
  </table><table class="memberdecls">
133
133
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
@@ -398,7 +398,7 @@ Static Private Attributes</h2></td></tr>
398
398
  <p>Check (1) write-write race (2) write-read race (3) read-read race when two memory access may-happen in parallel and are not protected by the same lock (excluding global constraints because they are initialized before running the main function) </p>
399
399
 
400
400
  <p class="definition">Definition at line <a class="el" href="MTA_8cpp_source.html#l00165">165</a> of file <a class="el" href="MTA_8cpp_source.html">MTA.cpp</a>.</p>
401
- <div class="fragment"><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;{</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;Starting Race Detection\n&quot;</span>));</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b">LoadSet</a> loads;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="classSVF_1_1MTA.html#a891e56104b9c2daa8b052e3821e85b9b">StoreSet</a> stores;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Instruction*&gt;</a> needcheckinst;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">// Add symbols for all of the functions and the instructions in them.</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), E = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// collect and create symbols inside the function body</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a> II = inst_begin((*F)-&gt;getLLVMFun()), E = inst_end((*F)-&gt;getLLVMFun()); II != E; ++II)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; loads.insert(load);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; stores.insert(store);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">for</span> (LoadSet::const_iterator lit = loads.begin(), elit = loads.end(); lit != elit; ++lit)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = *lit;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordtype">bool</span> loadneedcheck = <span class="keyword">false</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">for</span> (StoreSet::const_iterator sit = stores.begin(), esit = stores.end(); sit != esit; ++sit)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = *sit;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; loadneedcheck = <span class="keyword">true</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; needcheckinst.insert(store);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span> (loadneedcheck)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; needcheckinst.insert(load);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;HP needcheck: &quot;</span> &lt;&lt; needcheckinst.size() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;}</div><div class="ttc" id="classSVF_1_1MTA_html_a80356495b6c45bac59dc15fd7a99730b"><div class="ttname"><a href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b">SVF::MTA::LoadSet</a></div><div class="ttdeci">Set&lt; const LoadInst * &gt; LoadSet</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00035">MTA.h:35</a></div></div>
401
+ <div class="fragment"><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;{</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;Starting Race Detection\n&quot;</span>));</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b">LoadSet</a> loads;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="classSVF_1_1MTA.html#a891e56104b9c2daa8b052e3821e85b9b">StoreSet</a> stores;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Instruction*&gt;</a> needcheckinst;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">// Add symbols for all of the functions and the instructions in them.</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), E = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// collect and create symbols inside the function body</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a> II = inst_begin((*F)-&gt;getLLVMFun()), E = inst_end((*F)-&gt;getLLVMFun()); II != E; ++II)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; loads.insert(load);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; stores.insert(store);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">for</span> (LoadSet::const_iterator lit = loads.begin(), elit = loads.end(); lit != elit; ++lit)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = *lit;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordtype">bool</span> loadneedcheck = <span class="keyword">false</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">for</span> (StoreSet::const_iterator sit = stores.begin(), esit = stores.end(); sit != esit; ++sit)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = *sit;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; loadneedcheck = <span class="keyword">true</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; needcheckinst.insert(store);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span> (loadneedcheck)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; needcheckinst.insert(load);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;HP needcheck: &quot;</span> &lt;&lt; needcheckinst.size() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;}</div><div class="ttc" id="classSVF_1_1MTA_html_a80356495b6c45bac59dc15fd7a99730b"><div class="ttname"><a href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b">SVF::MTA::LoadSet</a></div><div class="ttdeci">Set&lt; const LoadInst * &gt; LoadSet</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00035">MTA.h:35</a></div></div>
402
402
  <div class="ttc" id="namespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00104">BasicTypes.h:104</a></div></div>
403
403
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00100">SVFUtil.cpp:100</a></div></div>
404
404
  <div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
@@ -408,8 +408,8 @@ Static Private Attributes</h2></td></tr>
408
408
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
409
409
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
410
410
  <div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00159">SVFBasicTypes.h:159</a></div></div>
411
- <div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
412
411
  <div class="ttc" id="namespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00105">BasicTypes.h:105</a></div></div>
412
+ <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
413
413
  <div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00155">SVFModule.h:155</a></div></div>
414
414
  <div class="ttc" id="classSVF_1_1SVFModule_html_a709371b13dcf500277f8bc275bdb23c7"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVF::SVFModule::iterator</a></div><div class="ttdeci">FunctionSetType::iterator iterator</div><div class="ttdoc">Iterators type def. </div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00051">SVFModule.h:51</a></div></div>
415
415
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
@@ -504,8 +504,8 @@ Static Private Attributes</h2></td></tr>
504
504
  </div><div class="memdoc">
505
505
 
506
506
  <p class="definition">Definition at line <a class="el" href="MTA_8h_source.html#l00073">73</a> of file <a class="el" href="MTA_8h_source.html">MTA.h</a>.</p>
507
- <div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; FunToSEMap::iterator it = <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>.find(<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>.end())</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="SVF-FE_2BasicTypes_8h.html#a26413e6481a8551035d13215b29ea779">ScalarEvolutionWrapperPass</a> *scev = &amp;<a class="code" href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">modulePass</a>-&gt;getAnalysis&lt;<a class="code" href="SVF-FE_2BasicTypes_8h.html#a26413e6481a8551035d13215b29ea779">ScalarEvolutionWrapperPass</a>&gt;(*const_cast&lt;Function*&gt;(<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>[<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>] = &amp;scev-&gt;getSE();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> &amp;scev-&gt;getSE();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="ttc" id="classSVF_1_1MTA_html_a3dd09dcdcf58ae8ee1745634cefbb8aa"><div class="ttname"><a href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">SVF::MTA::modulePass</a></div><div class="ttdeci">static ModulePass * modulePass</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00043">MTA.h:43</a></div></div>
508
- <div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
507
+ <div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; FunToSEMap::iterator it = <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>.find(<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>.end())</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="SVF-FE_2BasicTypes_8h.html#a26413e6481a8551035d13215b29ea779">ScalarEvolutionWrapperPass</a> *scev = &amp;<a class="code" href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">modulePass</a>-&gt;getAnalysis&lt;<a class="code" href="SVF-FE_2BasicTypes_8h.html#a26413e6481a8551035d13215b29ea779">ScalarEvolutionWrapperPass</a>&gt;(*const_cast&lt;Function*&gt;(<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>[<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>] = &amp;scev-&gt;getSE();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> &amp;scev-&gt;getSE();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="ttc" id="classSVF_1_1MTA_html_a3dd09dcdcf58ae8ee1745634cefbb8aa"><div class="ttname"><a href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">SVF::MTA::modulePass</a></div><div class="ttdeci">static ModulePass * modulePass</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00043">MTA.h:43</a></div></div>
508
+ <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
509
509
  <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a26413e6481a8551035d13215b29ea779"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a26413e6481a8551035d13215b29ea779">ScalarEvolutionWrapperPass</a></div><div class="ttdeci">llvm::ScalarEvolutionWrapperPass ScalarEvolutionWrapperPass</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00118">BasicTypes.h:118</a></div></div>
510
510
  <div class="ttc" id="classSVF_1_1MTA_html_a7a879943a817d0283971b5588cfa83d5"><div class="ttname"><a href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">SVF::MTA::func2ScevMap</a></div><div class="ttdeci">static FunToSEMap func2ScevMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00087">MTA.h:87</a></div></div>
511
511
  </div><!-- fragment -->