svf-tools 1.0.581 → 1.0.583

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 (286) hide show
  1. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +1 -2
  2. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -2
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -5
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -5
  5. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -2
  6. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +32 -30
  7. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +11 -11
  8. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +11 -11
  9. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +15 -16
  10. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +10 -10
  11. package/SVF-doxygen/html/html/CFLBase_8h_source.html +11 -9
  12. package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +3 -3
  13. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +23 -21
  14. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +70 -66
  15. package/SVF-doxygen/html/html/CFLGrammar_8txt.html +28 -262
  16. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +5 -5
  17. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +2 -2
  18. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +10 -10
  19. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +37 -20
  20. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +22 -19
  21. package/SVF-doxygen/html/html/CFLSolver_8h_source.html +18 -15
  22. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +10 -10
  23. package/SVF-doxygen/html/html/CFLStat_8h_source.html +8 -11
  24. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -3
  25. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +1 -3
  26. package/SVF-doxygen/html/html/CHG_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -4
  29. package/SVF-doxygen/html/html/CPPUtil_8h.html +4 -4
  30. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -2
  31. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -7
  32. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  33. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -3
  34. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  35. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -4
  36. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +1 -3
  38. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -2
  39. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -2
  40. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -3
  41. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -2
  42. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -5
  43. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -5
  44. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +4 -4
  47. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -2
  48. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -2
  49. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  52. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -2
  54. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -2
  55. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -3
  56. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -2
  57. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -2
  58. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -2
  59. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -2
  60. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -2
  61. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -2
  62. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -4
  63. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -2
  64. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -2
  65. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -3
  66. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -3
  67. package/SVF-doxygen/html/html/MemSSA_8h_source.html +1 -3
  68. package/SVF-doxygen/html/html/PCG_8cpp_source.html +1 -2
  69. package/SVF-doxygen/html/html/PEGGrammar_8txt.html +6 -6
  70. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
  71. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -2
  73. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +1 -3
  74. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -3
  75. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  76. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -3
  77. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -2
  78. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -2
  79. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -2
  80. package/SVF-doxygen/html/html/SVFUtil_8h.html +1 -1
  81. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -2
  82. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -2
  83. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -2
  84. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +2 -2
  85. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -2
  86. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +1 -2
  87. package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
  88. package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
  89. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -2
  90. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -1
  91. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  92. package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -5
  93. package/SVF-doxygen/html/html/VFG_8h_source.html +3 -6
  94. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -3
  95. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +1 -3
  96. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  98. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +3 -3
  99. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +4 -4
  100. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +4 -4
  101. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -4
  102. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +6 -6
  103. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +1 -2
  105. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
  107. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -2
  108. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +58 -56
  109. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +4 -2
  110. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +47 -42
  111. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +4 -2
  112. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +79 -26
  113. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge-members.html +19 -18
  114. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +43 -20
  115. package/SVF-doxygen/html/html/classSVF_1_1CFLFIFOWorkList.html +24 -24
  116. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar-members.html +40 -37
  117. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.html +55 -49
  118. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +15 -15
  119. package/SVF-doxygen/html/html/classSVF_1_1CFLNode-members.html +19 -9
  120. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +379 -20
  121. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver-members.html +12 -9
  122. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +144 -53
  123. package/SVF-doxygen/html/html/classSVF_1_1CFLStat-members.html +31 -32
  124. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +50 -78
  125. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +2 -0
  126. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +14 -10
  127. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +5 -7
  128. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +1 -2
  129. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +8 -17
  132. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +4 -5
  133. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
  135. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +6 -10
  136. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +2 -2
  137. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +13 -14
  138. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +3 -3
  139. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +4 -5
  140. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +6 -10
  141. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -4
  142. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase-members.html +23 -19
  144. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +197 -78
  145. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +5 -5
  146. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -2
  147. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
  148. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +2 -2
  149. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -2
  150. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -5
  153. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +5 -8
  155. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +3 -7
  156. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +3 -6
  157. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +3 -6
  158. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -2
  159. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +13 -25
  160. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +1 -1
  161. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +1 -2
  162. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +1 -2
  164. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +6 -10
  166. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
  167. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +4 -6
  168. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +2 -3
  169. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +2 -3
  170. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -2
  171. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  172. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +2 -2
  173. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -2
  174. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +1 -2
  176. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +2 -3
  179. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +14 -20
  182. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +4 -5
  183. package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +1 -2
  184. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  185. package/SVF-doxygen/html/html/functions.html +0 -3
  186. package/SVF-doxygen/html/html/functions_a.html +14 -4
  187. package/SVF-doxygen/html/html/functions_c.html +38 -30
  188. package/SVF-doxygen/html/html/functions_e.html +4 -1
  189. package/SVF-doxygen/html/html/functions_f.html +6 -6
  190. package/SVF-doxygen/html/html/functions_func.html +16 -6
  191. package/SVF-doxygen/html/html/functions_func_c.html +29 -27
  192. package/SVF-doxygen/html/html/functions_func_g.html +25 -16
  193. package/SVF-doxygen/html/html/functions_func_i.html +8 -4
  194. package/SVF-doxygen/html/html/functions_func_p.html +4 -1
  195. package/SVF-doxygen/html/html/functions_func_r.html +8 -2
  196. package/SVF-doxygen/html/html/functions_func_s.html +12 -9
  197. package/SVF-doxygen/html/html/functions_g.html +23 -14
  198. package/SVF-doxygen/html/html/functions_i.html +20 -13
  199. package/SVF-doxygen/html/html/functions_l.html +5 -5
  200. package/SVF-doxygen/html/html/functions_n.html +9 -4
  201. package/SVF-doxygen/html/html/functions_o.html +21 -10
  202. package/SVF-doxygen/html/html/functions_p.html +16 -17
  203. package/SVF-doxygen/html/html/functions_r.html +7 -1
  204. package/SVF-doxygen/html/html/functions_s.html +8 -5
  205. package/SVF-doxygen/html/html/functions_t.html +3 -3
  206. package/SVF-doxygen/html/html/functions_type_c.html +6 -0
  207. package/SVF-doxygen/html/html/functions_vars.html +0 -3
  208. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  209. package/SVF-doxygen/html/html/functions_vars_i.html +3 -0
  210. package/SVF-doxygen/html/html/functions_vars_n.html +6 -1
  211. package/SVF-doxygen/html/html/functions_vars_o.html +3 -0
  212. package/SVF-doxygen/html/html/functions_w.html +11 -11
  213. package/SVF-doxygen/html/html/globals_a.html +0 -4
  214. package/SVF-doxygen/html/html/globals_c.html +7 -8
  215. package/SVF-doxygen/html/html/globals_e.html +1 -2
  216. package/SVF-doxygen/html/html/globals_f.html +4 -8
  217. package/SVF-doxygen/html/html/globals_g.html +4 -8
  218. package/SVF-doxygen/html/html/globals_l.html +2 -8
  219. package/SVF-doxygen/html/html/globals_m.html +1 -4
  220. package/SVF-doxygen/html/html/globals_s.html +3 -6
  221. package/SVF-doxygen/html/html/globals_v.html +1 -4
  222. package/SVF-doxygen/html/html/globals_vars.html +22 -55
  223. package/SVF-doxygen/html/html/menudata.js +0 -1
  224. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  225. package/SVF-doxygen/html/html/namespaceSVF.html +4 -4
  226. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +2 -3
  227. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +9 -15
  228. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  229. package/SVF-doxygen/html/html/search/all_0.js +0 -1
  230. package/SVF-doxygen/html/html/search/all_1.js +6 -3
  231. package/SVF-doxygen/html/html/search/all_10.js +7 -6
  232. package/SVF-doxygen/html/html/search/all_11.js +3 -1
  233. package/SVF-doxygen/html/html/search/all_12.js +10 -9
  234. package/SVF-doxygen/html/html/search/all_13.js +6 -6
  235. package/SVF-doxygen/html/html/search/all_15.js +3 -4
  236. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  237. package/SVF-doxygen/html/html/search/all_3.js +8 -5
  238. package/SVF-doxygen/html/html/search/all_5.js +2 -1
  239. package/SVF-doxygen/html/html/search/all_6.js +3 -4
  240. package/SVF-doxygen/html/html/search/all_7.js +7 -5
  241. package/SVF-doxygen/html/html/search/all_9.js +6 -4
  242. package/SVF-doxygen/html/html/search/all_c.js +4 -5
  243. package/SVF-doxygen/html/html/search/all_d.js +1 -2
  244. package/SVF-doxygen/html/html/search/all_e.js +4 -3
  245. package/SVF-doxygen/html/html/search/all_f.js +3 -2
  246. package/SVF-doxygen/html/html/search/functions_0.js +4 -1
  247. package/SVF-doxygen/html/html/search/functions_10.js +2 -0
  248. package/SVF-doxygen/html/html/search/functions_11.js +1 -0
  249. package/SVF-doxygen/html/html/search/functions_2.js +3 -2
  250. package/SVF-doxygen/html/html/search/functions_6.js +3 -0
  251. package/SVF-doxygen/html/html/search/functions_8.js +2 -1
  252. package/SVF-doxygen/html/html/search/functions_f.js +1 -0
  253. package/SVF-doxygen/html/html/search/typedefs_2.js +2 -0
  254. package/SVF-doxygen/html/html/search/variables_0.js +0 -1
  255. package/SVF-doxygen/html/html/search/variables_1.js +1 -2
  256. package/SVF-doxygen/html/html/search/variables_12.js +1 -2
  257. package/SVF-doxygen/html/html/search/variables_13.js +3 -3
  258. package/SVF-doxygen/html/html/search/variables_15.js +1 -2
  259. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  260. package/SVF-doxygen/html/html/search/variables_5.js +2 -1
  261. package/SVF-doxygen/html/html/search/variables_6.js +1 -2
  262. package/SVF-doxygen/html/html/search/variables_7.js +4 -5
  263. package/SVF-doxygen/html/html/search/variables_9.js +2 -1
  264. package/SVF-doxygen/html/html/search/variables_c.js +1 -3
  265. package/SVF-doxygen/html/html/search/variables_d.js +0 -1
  266. package/SVF-doxygen/html/html/search/variables_e.js +3 -2
  267. package/SVF-doxygen/html/html/search/variables_f.js +1 -0
  268. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +3 -3
  269. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +4 -4
  270. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +1 -1
  271. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +2 -2
  272. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +1 -1
  273. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  274. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  275. package/include/CFL/CFLBase.h +2 -0
  276. package/include/CFL/CFLGrammar.h +13 -0
  277. package/include/CFL/CFLGrammar.txt +9 -33
  278. package/include/CFL/CFLSolver.h +8 -0
  279. package/include/CFL/CFLStat.h +3 -13
  280. package/include/Graphs/CFLGraph.h +69 -0
  281. package/lib/CFL/CFGNormalizer.cpp +1 -0
  282. package/lib/CFL/CFLAlias.cpp +5 -0
  283. package/lib/CFL/CFLGrammar.cpp +34 -1
  284. package/lib/CFL/CFLSolver.cpp +58 -45
  285. package/lib/CFL/CFLStat.cpp +20 -66
  286. package/package.json +1 -1
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">VersionedFlowSensitive.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="VersionedFlowSensitive_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- VersionedFlowSensitive.h -- Versioned flow-sensitive pointer analysis --------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * VersionedFlowSensitiveAnalysis.h</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Created on: Jun 26, 2020</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * Author: Mohamad Barbar</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * The implementation is based on</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Mohamad Barbar, Yulei Sui and Shiping Chen. &quot;Object Versioning for Flow-Sensitive Pointer Analysis&quot;.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * International Symposium on Code Generation and Optimization (CGO&#39;21)</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef VFS_H_</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define VFS_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFGOPT_8h.html">Graphs/SVFGOPT.h</a>&quot;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFGBuilder_8h.html">MSSA/SVFGBuilder.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="FlowSensitive_8h.html">WPA/FlowSensitive.h</a>&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WPAFSSolver_8h.html">WPA/WPAFSSolver.h</a>&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">class </span>AndersenWaveDiff;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">class </span>SVFModule;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html"> 32</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1FlowSensitive.html">FlowSensitive</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#aaee58f266762146e9fdc08ecfc326b29"> 34</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html">VersionedFlowSensitiveStat</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a630eeca9c3344d24fa196f7de45bce18"> 37</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a630eeca9c3344d24fa196f7de45bce18">MeldVersion</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0"> 40</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, Version&gt;</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0">ObjToVersionMap</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a9ee5add09f2b446c6c6bcb84da0f75b3"> 41</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;VersionedVar, const DummyVersionPropSVFGNode *&gt;</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a9ee5add09f2b446c6c6bcb84da0f75b3">VarToPropNodeMap</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296"> 43</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;ObjToVersionMap&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296">LocVersionMap</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#ad8108ee0b034877dea5e927d29ca0534"> 45</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, Map&lt;Version, std::vector&lt;Version&gt;</a>&gt;&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ad8108ee0b034877dea5e927d29ca0534">VersionRelianceMap</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112"> 48</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">invalidVersion</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a32489632f53dce062ca2e8bff42c65cf">VersionedVar</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a59f3dd74ed8c3e2fc48b9353ba2452aa">atKey</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ab88b7a966177e620c552d507b3763e17">VersionedFlowSensitive</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *_pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">VFS_WPA</a>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a81d3528fd082018e4345f0b026bf3584">initialize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ad955fda89f4f749151a1bd14562b03f6">finalize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a6e4964389f96667bd69354fd4a742720"> 63</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6e4964389f96667bd69354fd4a742720">PTAName</a>()<span class="keyword"> const override</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;VersionedFlowSensitive&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#afd1e0d4445e1e50e95f816e51f8de3c8"> 70</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#afd1e0d4445e1e50e95f816e51f8de3c8">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a> *)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#abe1874f12ba05b4f453604c6d91598d6"> 74</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#abe1874f12ba05b4f453604c6d91598d6">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">VFS_WPA</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#ae7cf16ad79c13104dd9981e6b984057e"> 81</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a> *<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ae7cf16ad79c13104dd9981e6b984057e">createVFSWPA</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *_pag)</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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ab88b7a966177e620c552d507b3763e17">VersionedFlowSensitive</a>(_pag);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">analyze</a>();</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;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a754c77fff88e8f415dc7a2096d1bffe2"> 93</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a754c77fff88e8f415dc7a2096d1bffe2">releaseVFSWPA</a>()</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>) <span class="keyword">delete</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</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">protected</span>:</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1d1f71c41cc3e81e636b58f4436e6d9b">processLoad</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* <a class="code" href="CFLGrammar_8txt.html#af94ae7efab42c57589a313f6cc7ada63">load</a>) <span class="keyword">override</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aa96f517740420665168e9b0c7d2347f1">processStore</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* <a class="code" href="CFLGrammar_8txt.html#a92d5a256d74eadeb5bfa131b84067f0d">store</a>) <span class="keyword">override</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a8cad0df2ae7df81dc2a966e694a0f7a2">processNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>) <span class="keyword">override</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a18f24fe34af677e2a8c78ee89b89be1c">updateConnectedNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a69289c48fa91f850da90de080b9d26e5">SVFGEdgeSetTy</a>&amp; newEdges) <span class="keyword">override</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#ad44c735b25158d2c934bdd44eb404686"> 106</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ad44c735b25158d2c934bdd44eb404686">propAlongIndirectEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>*)<span class="keyword"> override</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><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;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aedd12e894fb2c17d2201f4049e5f3793">cluster</a>(<span class="keywordtype">void</span>) <span class="keyword">override</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a7d86bc18060c0114a783aa1c3a7e9dda">prelabel</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aaff594c78d93f7ad632d344e5c1c7f6a">meldLabel</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1da960df51570b59161e380949d910c4">meld</a>(MeldVersion &amp;mv1, <span class="keyword">const</span> MeldVersion &amp;mv2);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a275095f60640d862034ad173af3371c3">removeAllIndirectSVFGEdges</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a7a98162b69de90f80ce853a6ff43af56">propagateVersion</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a7a98162b69de90f80ce853a6ff43af56">propagateVersion</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> vp, <span class="keywordtype">bool</span> time=<span class="keyword">true</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a8da4b9bd9d0c640a6857b4dc4991817c">buildIsStoreLoadMaps</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aac920c9a5f13dd147e3c130425e005eb">isStore</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l) <span class="keyword">const</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a984a4f929a18f97bfefac0102088a7fd">isLoad</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l) <span class="keyword">const</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3407cc82ef9806e26b79edb677979014">buildDeltaMaps</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a9f9b00551c157f42d1d995e8c4efb54b">delta</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l) <span class="keyword">const</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3fa5afa4f54e0828ec090fde07b1bfa2">deltaSource</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l) <span class="keyword">const</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6b398d59fc276980dd2d6d48a8675068">getVersion</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> LocVersionMap &amp;lvm) <span class="keyword">const</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af93e65faae99459621ae45cf9d36005d">getConsume</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o) <span class="keyword">const</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a01a199e9fdb5759c7f78ee344dbc413c">getYield</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o) <span class="keyword">const</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#adf37ae1f6a07716bca6fbe1603b8a070">setVersion</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v, LocVersionMap &amp;lvm);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aabc0a5a7a31b8d880e019773ba960741">setConsume</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ac33c7cef2d1d143950820ea48e97e806">setYield</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; std::vector&lt;Version&gt; &amp;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ae83c62a01196991d116ef5c36cb51e31">getReliantVersions</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> &amp;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3489def8e16e4d7c83d2c909d3287fc0">getStmtReliance</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a9d5990a41e90558595d0ad0defceb4e8">dumpReliances</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a032acdcd8b84523a7ac2f0e46d21c62f">dumpLocVersionMaps</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a7565989371100f84ae5f9e2efa655fcb">dumpMeldVersion</a>(MeldVersion &amp;v);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"> 189</a></span>&#160; LocVersionMap <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">consume</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab"> 191</a></span>&#160; LocVersionMap <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">yield</a>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3"> 194</a></span>&#160; VersionRelianceMap <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">versionReliance</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438"> 196</a></span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, Map&lt;Version, NodeBS&gt;</a>&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">stmtReliance</a>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#af14a4cbc0b990389d31b2f88f50ad8eb"> 200</a></span>&#160; VarToPropNodeMap <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af14a4cbc0b990389d31b2f88f50ad8eb">versionedVarToPropNode</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="comment">// Maps an object o to o&#39; if o is equivalent to o&#39; with respect to</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="comment">// versioning. Thus, we don&#39;t need to store the versions of o and look</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="comment">// up those for o&#39; instead.</span></div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f"> 205</a></span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, NodeID&gt;</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">equivalentObject</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#adfefc0dfa4e7fb4d20fafeaf96a5fa67"> 209</a></span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;NodeID&gt;</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#adfefc0dfa4e7fb4d20fafeaf96a5fa67">vWorklist</a>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#aaae8c6858593ed050dcf2c9220228e3e"> 211</a></span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;NodeID&gt;</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aaae8c6858593ed050dcf2c9220228e3e">prelabeledObjects</a>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07"> 214</a></span>&#160; <a class="code" href="classSVF_1_1VersionedPTData.html">BVDataPTAImpl::VersionedPTDataTy</a> *<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">vPtD</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1"> 218</a></span>&#160; std::vector&lt;bool&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1">deltaMap</a>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6"> 223</a></span>&#160; std::vector&lt;bool&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">deltaSourceMap</a>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a18e25c3871d7cc1a6bb0592ceca90f88"> 226</a></span>&#160; std::vector&lt;bool&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a18e25c3871d7cc1a6bb0592ceca90f88">isStoreMap</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a6bb3db072db0b899f306b37f1146f83d"> 229</a></span>&#160; std::vector&lt;bool&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6bb3db072db0b899f306b37f1146f83d">isLoadMap</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#aff5029fca933376be1fa374bec790da6"> 233</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aff5029fca933376be1fa374bec790da6">numPrelabeledNodes</a>; </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a207ae4d1f2e0ccab8e36add0a45578af"> 234</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a207ae4d1f2e0ccab8e36add0a45578af">numPrelabelVersions</a>; </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996"> 236</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996">prelabelingTime</a>; </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d"> 237</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d">meldLabelingTime</a>; </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451"> 238</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">versionPropTime</a>; </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb"> 241</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a> *<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html"> 243</a></span>&#160; <span class="keyword">class </span><a class="code" href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html">SCC</a></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html"> 246</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html">NodeData</a></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a823afbcf2b99a38367b7bc8be17ff2ba"> 248</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a823afbcf2b99a38367b7bc8be17ff2ba">index</a>;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a6d66813dfb5338c22de62c100e951cf2"> 249</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a6d66813dfb5338c22de62c100e951cf2">lowlink</a>;</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a0eb5f6b9985b9b512a76537d55b092b5"> 250</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a0eb5f6b9985b9b512a76537d55b092b5">onStack</a>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; } <a class="code" href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html#a3b4321bdd7924d05fd3b8506ec1c7c3c">NodeData</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html#ad52f6f586168ca4ceaf85cca8dfab825">detectSCCs</a>(<a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a> *vfs,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a> *<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">object</span>,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">const</span> std::vector&lt;const SVFGNode *&gt; &amp;startingNodes,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; std::vector&lt;int&gt; &amp;partOf,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; std::vector&lt;const IndirectSVFGEdge *&gt; &amp;footprint);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html#af7ba77d72962b930a8107752e259008b">visit</a>(<a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a> *vfs,</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">object</span>,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; std::vector&lt;int&gt; &amp;partOf,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; std::vector&lt;const IndirectSVFGEdge *&gt; &amp;footprint,</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; std::vector&lt;NodeData&gt; &amp;nodeData,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; std::stack&lt;const SVFGNode *&gt; &amp;stack,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordtype">int</span> &amp;<a class="code" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a823afbcf2b99a38367b7bc8be17ff2ba">index</a>,</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordtype">int</span> &amp;currentSCC,</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *v);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; };</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;};</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* VFS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a9ee5add09f2b446c6c6bcb84da0f75b3"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a9ee5add09f2b446c6c6bcb84da0f75b3">SVF::VersionedFlowSensitive::VarToPropNodeMap</a></div><div class="ttdeci">Map&lt; VersionedVar, const DummyVersionPropSVFGNode * &gt; VarToPropNodeMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00041">VersionedFlowSensitive.h:41</a></div></div>
69
+ <a href="VersionedFlowSensitive_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- VersionedFlowSensitive.h -- Versioned flow-sensitive pointer analysis --------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * VersionedFlowSensitiveAnalysis.h</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Created on: Jun 26, 2020</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * Author: Mohamad Barbar</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * The implementation is based on</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Mohamad Barbar, Yulei Sui and Shiping Chen. &quot;Object Versioning for Flow-Sensitive Pointer Analysis&quot;.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * International Symposium on Code Generation and Optimization (CGO&#39;21)</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef VFS_H_</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define VFS_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFGOPT_8h.html">Graphs/SVFGOPT.h</a>&quot;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFGBuilder_8h.html">MSSA/SVFGBuilder.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="FlowSensitive_8h.html">WPA/FlowSensitive.h</a>&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WPAFSSolver_8h.html">WPA/WPAFSSolver.h</a>&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">class </span>AndersenWaveDiff;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">class </span>SVFModule;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html"> 32</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1FlowSensitive.html">FlowSensitive</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#aaee58f266762146e9fdc08ecfc326b29"> 34</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html">VersionedFlowSensitiveStat</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a630eeca9c3344d24fa196f7de45bce18"> 37</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a630eeca9c3344d24fa196f7de45bce18">MeldVersion</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0"> 40</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, Version&gt;</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0">ObjToVersionMap</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a9ee5add09f2b446c6c6bcb84da0f75b3"> 41</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;VersionedVar, const DummyVersionPropSVFGNode *&gt;</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a9ee5add09f2b446c6c6bcb84da0f75b3">VarToPropNodeMap</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296"> 43</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;ObjToVersionMap&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296">LocVersionMap</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#ad8108ee0b034877dea5e927d29ca0534"> 45</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, Map&lt;Version, std::vector&lt;Version&gt;</a>&gt;&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ad8108ee0b034877dea5e927d29ca0534">VersionRelianceMap</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112"> 48</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">invalidVersion</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a32489632f53dce062ca2e8bff42c65cf">VersionedVar</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a59f3dd74ed8c3e2fc48b9353ba2452aa">atKey</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ab88b7a966177e620c552d507b3763e17">VersionedFlowSensitive</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *_pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">VFS_WPA</a>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a81d3528fd082018e4345f0b026bf3584">initialize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ad955fda89f4f749151a1bd14562b03f6">finalize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a6e4964389f96667bd69354fd4a742720"> 63</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6e4964389f96667bd69354fd4a742720">PTAName</a>()<span class="keyword"> const override</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;VersionedFlowSensitive&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#afd1e0d4445e1e50e95f816e51f8de3c8"> 70</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#afd1e0d4445e1e50e95f816e51f8de3c8">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a> *)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#abe1874f12ba05b4f453604c6d91598d6"> 74</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#abe1874f12ba05b4f453604c6d91598d6">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">VFS_WPA</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#ae7cf16ad79c13104dd9981e6b984057e"> 81</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a> *<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ae7cf16ad79c13104dd9981e6b984057e">createVFSWPA</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *_pag)</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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ab88b7a966177e620c552d507b3763e17">VersionedFlowSensitive</a>(_pag);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">analyze</a>();</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;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a754c77fff88e8f415dc7a2096d1bffe2"> 93</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a754c77fff88e8f415dc7a2096d1bffe2">releaseVFSWPA</a>()</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>) <span class="keyword">delete</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</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">protected</span>:</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1d1f71c41cc3e81e636b58f4436e6d9b">processLoad</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* load) <span class="keyword">override</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aa96f517740420665168e9b0c7d2347f1">processStore</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store) <span class="keyword">override</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a8cad0df2ae7df81dc2a966e694a0f7a2">processNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>) <span class="keyword">override</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a18f24fe34af677e2a8c78ee89b89be1c">updateConnectedNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a69289c48fa91f850da90de080b9d26e5">SVFGEdgeSetTy</a>&amp; newEdges) <span class="keyword">override</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#ad44c735b25158d2c934bdd44eb404686"> 106</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ad44c735b25158d2c934bdd44eb404686">propAlongIndirectEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>*)<span class="keyword"> override</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><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;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aedd12e894fb2c17d2201f4049e5f3793">cluster</a>(<span class="keywordtype">void</span>) <span class="keyword">override</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a7d86bc18060c0114a783aa1c3a7e9dda">prelabel</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aaff594c78d93f7ad632d344e5c1c7f6a">meldLabel</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1da960df51570b59161e380949d910c4">meld</a>(MeldVersion &amp;mv1, <span class="keyword">const</span> MeldVersion &amp;mv2);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a275095f60640d862034ad173af3371c3">removeAllIndirectSVFGEdges</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a7a98162b69de90f80ce853a6ff43af56">propagateVersion</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a7a98162b69de90f80ce853a6ff43af56">propagateVersion</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> vp, <span class="keywordtype">bool</span> time=<span class="keyword">true</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a8da4b9bd9d0c640a6857b4dc4991817c">buildIsStoreLoadMaps</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aac920c9a5f13dd147e3c130425e005eb">isStore</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l) <span class="keyword">const</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a984a4f929a18f97bfefac0102088a7fd">isLoad</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l) <span class="keyword">const</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3407cc82ef9806e26b79edb677979014">buildDeltaMaps</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a9f9b00551c157f42d1d995e8c4efb54b">delta</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l) <span class="keyword">const</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3fa5afa4f54e0828ec090fde07b1bfa2">deltaSource</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l) <span class="keyword">const</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6b398d59fc276980dd2d6d48a8675068">getVersion</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> LocVersionMap &amp;lvm) <span class="keyword">const</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af93e65faae99459621ae45cf9d36005d">getConsume</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o) <span class="keyword">const</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a01a199e9fdb5759c7f78ee344dbc413c">getYield</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o) <span class="keyword">const</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#adf37ae1f6a07716bca6fbe1603b8a070">setVersion</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v, LocVersionMap &amp;lvm);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aabc0a5a7a31b8d880e019773ba960741">setConsume</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ac33c7cef2d1d143950820ea48e97e806">setYield</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; std::vector&lt;Version&gt; &amp;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ae83c62a01196991d116ef5c36cb51e31">getReliantVersions</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> &amp;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3489def8e16e4d7c83d2c909d3287fc0">getStmtReliance</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a9d5990a41e90558595d0ad0defceb4e8">dumpReliances</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a032acdcd8b84523a7ac2f0e46d21c62f">dumpLocVersionMaps</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a7565989371100f84ae5f9e2efa655fcb">dumpMeldVersion</a>(MeldVersion &amp;v);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"> 189</a></span>&#160; LocVersionMap <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">consume</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab"> 191</a></span>&#160; LocVersionMap <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">yield</a>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3"> 194</a></span>&#160; VersionRelianceMap <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">versionReliance</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438"> 196</a></span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, Map&lt;Version, NodeBS&gt;</a>&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">stmtReliance</a>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#af14a4cbc0b990389d31b2f88f50ad8eb"> 200</a></span>&#160; VarToPropNodeMap <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af14a4cbc0b990389d31b2f88f50ad8eb">versionedVarToPropNode</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="comment">// Maps an object o to o&#39; if o is equivalent to o&#39; with respect to</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="comment">// versioning. Thus, we don&#39;t need to store the versions of o and look</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="comment">// up those for o&#39; instead.</span></div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f"> 205</a></span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, NodeID&gt;</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">equivalentObject</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#adfefc0dfa4e7fb4d20fafeaf96a5fa67"> 209</a></span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;NodeID&gt;</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#adfefc0dfa4e7fb4d20fafeaf96a5fa67">vWorklist</a>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#aaae8c6858593ed050dcf2c9220228e3e"> 211</a></span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;NodeID&gt;</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aaae8c6858593ed050dcf2c9220228e3e">prelabeledObjects</a>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07"> 214</a></span>&#160; <a class="code" href="classSVF_1_1VersionedPTData.html">BVDataPTAImpl::VersionedPTDataTy</a> *<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">vPtD</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1"> 218</a></span>&#160; std::vector&lt;bool&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1">deltaMap</a>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6"> 223</a></span>&#160; std::vector&lt;bool&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">deltaSourceMap</a>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a18e25c3871d7cc1a6bb0592ceca90f88"> 226</a></span>&#160; std::vector&lt;bool&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a18e25c3871d7cc1a6bb0592ceca90f88">isStoreMap</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a6bb3db072db0b899f306b37f1146f83d"> 229</a></span>&#160; std::vector&lt;bool&gt; <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6bb3db072db0b899f306b37f1146f83d">isLoadMap</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#aff5029fca933376be1fa374bec790da6"> 233</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aff5029fca933376be1fa374bec790da6">numPrelabeledNodes</a>; </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a207ae4d1f2e0ccab8e36add0a45578af"> 234</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a207ae4d1f2e0ccab8e36add0a45578af">numPrelabelVersions</a>; </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996"> 236</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996">prelabelingTime</a>; </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d"> 237</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d">meldLabelingTime</a>; </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451"> 238</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">versionPropTime</a>; </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb"> 241</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a> *<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html"> 243</a></span>&#160; <span class="keyword">class </span><a class="code" href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html">SCC</a></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html"> 246</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html">NodeData</a></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a823afbcf2b99a38367b7bc8be17ff2ba"> 248</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a823afbcf2b99a38367b7bc8be17ff2ba">index</a>;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a6d66813dfb5338c22de62c100e951cf2"> 249</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a6d66813dfb5338c22de62c100e951cf2">lowlink</a>;</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a0eb5f6b9985b9b512a76537d55b092b5"> 250</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a0eb5f6b9985b9b512a76537d55b092b5">onStack</a>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; } <a class="code" href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html#a3b4321bdd7924d05fd3b8506ec1c7c3c">NodeData</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html#ad52f6f586168ca4ceaf85cca8dfab825">detectSCCs</a>(<a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a> *vfs,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a> *<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">object</span>,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">const</span> std::vector&lt;const SVFGNode *&gt; &amp;startingNodes,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; std::vector&lt;int&gt; &amp;partOf,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; std::vector&lt;const IndirectSVFGEdge *&gt; &amp;footprint);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html#af7ba77d72962b930a8107752e259008b">visit</a>(<a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a> *vfs,</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">object</span>,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; std::vector&lt;int&gt; &amp;partOf,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; std::vector&lt;const IndirectSVFGEdge *&gt; &amp;footprint,</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; std::vector&lt;NodeData&gt; &amp;nodeData,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; std::stack&lt;const SVFGNode *&gt; &amp;stack,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordtype">int</span> &amp;<a class="code" href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a823afbcf2b99a38367b7bc8be17ff2ba">index</a>,</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordtype">int</span> &amp;currentSCC,</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *v);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; };</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;};</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* VFS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a9ee5add09f2b446c6c6bcb84da0f75b3"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a9ee5add09f2b446c6c6bcb84da0f75b3">SVF::VersionedFlowSensitive::VarToPropNodeMap</a></div><div class="ttdeci">Map&lt; VersionedVar, const DummyVersionPropSVFGNode * &gt; VarToPropNodeMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00041">VersionedFlowSensitive.h:41</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_abe1874f12ba05b4f453604c6d91598d6"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#abe1874f12ba05b4f453604c6d91598d6">SVF::VersionedFlowSensitive::classof</a></div><div class="ttdeci">static bool classof(const PointerAnalysis *pta)</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00074">VersionedFlowSensitive.h:74</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aaff594c78d93f7ad632d344e5c1c7f6a"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aaff594c78d93f7ad632d344e5c1c7f6a">SVF::VersionedFlowSensitive::meldLabel</a></div><div class="ttdeci">void meldLabel(void)</div><div class="ttdoc">Meld label the prelabeled SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00120">VersionedFlowSensitive.cpp:120</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1VersionedPTData_html"><div class="ttname"><a href="classSVF_1_1VersionedPTData.html">SVF::VersionedPTData</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00269">AbstractPointsToDS.h:269</a></div></div>
@@ -114,7 +114,6 @@ $(function() {
114
114
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aee97e196225aaad29c0bd31d3ccbabf6"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">SVF::VersionedFlowSensitive::deltaSourceMap</a></div><div class="ttdeci">std::vector&lt; bool &gt; deltaSourceMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00223">VersionedFlowSensitive.h:223</a></div></div>
115
115
  <div class="ttc" id="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData_html_a6d66813dfb5338c22de62c100e951cf2"><div class="ttname"><a href="structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a6d66813dfb5338c22de62c100e951cf2">SVF::VersionedFlowSensitive::SCC::NodeData::lowlink</a></div><div class="ttdeci">int lowlink</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00249">VersionedFlowSensitive.h:249</a></div></div>
116
116
  <div class="ttc" id="classSVF_1_1CoreBitVector_html"><div class="ttname"><a href="classSVF_1_1CoreBitVector.html">SVF::CoreBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="CoreBitVector_8h_source.html#l00030">CoreBitVector.h:30</a></div></div>
117
- <div class="ttc" id="CFLGrammar_8txt_html_af94ae7efab42c57589a313f6cc7ada63"><div class="ttname"><a href="CFLGrammar_8txt.html#af94ae7efab42c57589a313f6cc7ada63">load</a></div><div class="ttdeci">F F store V load</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00009">CFLGrammar.txt:9</a></div></div>
118
117
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a6e4964389f96667bd69354fd4a742720"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a6e4964389f96667bd69354fd4a742720">SVF::VersionedFlowSensitive::PTAName</a></div><div class="ttdeci">virtual const std::string PTAName() const override</div><div class="ttdoc">Get PTA name. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00063">VersionedFlowSensitive.h:63</a></div></div>
119
118
  <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
120
119
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aa96f517740420665168e9b0c7d2347f1"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aa96f517740420665168e9b0c7d2347f1">SVF::VersionedFlowSensitive::processStore</a></div><div class="ttdeci">virtual bool processStore(const StoreSVFGNode *store) override</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00690">VersionedFlowSensitive.cpp:690</a></div></div>
@@ -138,7 +137,6 @@ $(function() {
138
137
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00048">VersionedFlowSensitive.h:48</a></div></div>
139
138
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_1_1SCC_html_af7ba77d72962b930a8107752e259008b"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html#af7ba77d72962b930a8107752e259008b">SVF::VersionedFlowSensitive::SCC::visit</a></div><div class="ttdeci">static void visit(VersionedFlowSensitive *vfs, const NodeID object, std::vector&lt; int &gt; &amp;partOf, std::vector&lt; const IndirectSVFGEdge *&gt; &amp;footprint, std::vector&lt; NodeData &gt; &amp;nodeData, std::stack&lt; const SVFGNode *&gt; &amp;stack, int &amp;index, int &amp;currentSCC, const SVFGNode *v)</div><div class="ttdoc">Called by detectSCCs then called recursively. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00984">VersionedFlowSensitive.cpp:984</a></div></div>
140
139
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a032acdcd8b84523a7ac2f0e46d21c62f"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a032acdcd8b84523a7ac2f0e46d21c62f">SVF::VersionedFlowSensitive::dumpLocVersionMaps</a></div><div class="ttdeci">void dumpLocVersionMaps(void) const</div><div class="ttdoc">Dumps maps consume and yield. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00900">VersionedFlowSensitive.cpp:900</a></div></div>
141
- <div class="ttc" id="CFLGrammar_8txt_html_a92d5a256d74eadeb5bfa131b84067f0d"><div class="ttname"><a href="CFLGrammar_8txt.html#a92d5a256d74eadeb5bfa131b84067f0d">store</a></div><div class="ttdeci">Memflow load store</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00030">CFLGrammar.txt:30</a></div></div>
142
140
  <div class="ttc" id="SVFGOPT_8h_html"><div class="ttname"><a href="SVFGOPT_8h.html">SVFGOPT.h</a></div></div>
143
141
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList&lt; NodeID &gt;</a></div></div>
144
142
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aabc0a5a7a31b8d880e019773ba960741"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aabc0a5a7a31b8d880e019773ba960741">SVF::VersionedFlowSensitive::setConsume</a></div><div class="ttdeci">void setConsume(const NodeID l, const NodeID o, const Version v)</div><div class="ttdoc">Sets the consumed version of o at l to v. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00821">VersionedFlowSensitive.cpp:821</a></div></div>
@@ -68,7 +68,7 @@ $(function() {
68
68
  <div class="contents">
69
69
  <a href="cfl_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- cfl.cpp -- A driver of CFL Reachability Analysis-------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===-----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> // A driver of CFL Reachability Analysis</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> //</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> // Author: Yulei Sui,</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-FE/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIRBuilder_8h.html">SVF-FE/SVFIRBuilder.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLAlias_8h.html">CFL/CFLAlias.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLVF_8h.html">CFL/CFLVF.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacellvm.html">llvm</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">static</span> cl::opt&lt;bool&gt;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<a class="code" href="cfl_8cpp.html#afffbd7760f0128b74c9dbfd517d0f99e">StandardCompileOpts</a>(<span class="stringliteral">&quot;std-compile-opts&quot;</span>,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; cl::desc(<span class="stringliteral">&quot;Include the standard compile time optimizations&quot;</span>));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">static</span> llvm::cl::opt&lt;std::string&gt; <a class="code" href="cfl_8cpp.html#a139199e1f33675df72b018c31e0be35c">InputFilename</a>(llvm::cl::Positional,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; llvm::cl::desc(<span class="stringliteral">&quot;&lt;input bitcode&gt;&quot;</span>), llvm::cl::init(<span class="stringliteral">&quot;-&quot;</span>));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="cfl_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627"> 45</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="cfl_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> ** argv)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">int</span> arg_num = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(argc, argv, arg_num, arg_value, moduleNameVec);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; cl::ParseCommandLineOptions(arg_num, arg_value,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="stringliteral">&quot;CFL Reachability Analysis\n&quot;</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (Options::WriteAnder == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* svfir = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (Options::CFLGraph.empty())</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">buildSymbolTableInfo</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; svfir = builder.<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">build</a>(svfModule);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; } <span class="comment">// if no dot form CFLGraph is specified, we use svfir from .bc.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html">CFLBase</a>* cfl;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span> (Options::CFLSVFG)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; cfl = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLVF.html">CFLVF</a>(svfir);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; cfl = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLAlias.html">CFLAlias</a>(svfir); <span class="comment">// if no svfg is specified, we use CFLAlias as the default one.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; cfl-&gt;<a class="code" href="classSVF_1_1CFLBase.html#a2aac58e19676290042874c262f1edd4d">analyze</a>();</div><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; <span class="keyword">delete</span> cfl;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; SVFIR::releaseSVFIR();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="ttc" id="classSVF_1_1CFLAlias_html"><div class="ttname"><a href="classSVF_1_1CFLAlias.html">SVF::CFLAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00041">CFLAlias.h:41</a></div></div>
70
70
  <div class="ttc" id="cfl_8cpp_html_afffbd7760f0128b74c9dbfd517d0f99e"><div class="ttname"><a href="cfl_8cpp.html#afffbd7760f0128b74c9dbfd517d0f99e">StandardCompileOpts</a></div><div class="ttdeci">static cl::opt&lt; bool &gt; StandardCompileOpts(&quot;std-compile-opts&quot;, cl::desc(&quot;Include the standard compile time optimizations&quot;))</div></div>
71
- <div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00123">CFLGraph.h:123</a></div></div>
71
+ <div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00192">CFLGraph.h:192</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa6d56f9580f76fd09d25ce6cf7541e98"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">SVF::SVFIRBuilder::build</a></div><div class="ttdeci">virtual SVFIR * build(SVFModule *svfModule)</div><div class="ttdoc">Start building SVFIR here. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00050">SVFIRBuilder.cpp:50</a></div></div>
73
73
  <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>
74
74
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html">SVF::SVFIRBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00045">SVFIRBuilder.h:45</a></div></div>
@@ -176,7 +176,7 @@ Static Public Member Functions</h2></td></tr>
176
176
  <tr class="memitem:a4513c6e66b46c36219ba6d7403f3eb00 inherit pub_static_methods_classSVF_1_1SVFStmt"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a> (<a class="el" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *cs)</td></tr>
177
177
  <tr class="memdesc:a4513c6e66b46c36219ba6d7403f3eb00 inherit pub_static_methods_classSVF_1_1SVFStmt"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the unique edgeFlag value from edge kind and call site Instruction. <a href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">More...</a><br /></td></tr>
178
178
  <tr class="separator:a4513c6e66b46c36219ba6d7403f3eb00 inherit pub_static_methods_classSVF_1_1SVFStmt"><td class="memSeparator" colspan="2">&#160;</td></tr>
179
- <tr class="memitem:ad61722f886afaaee722ac55a4eed4d18 inherit pub_static_methods_classSVF_1_1SVFStmt"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">makeEdgeFlagWithStoreInst</a> (<a class="el" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *<a class="el" href="CFLGrammar_8txt.html#a92d5a256d74eadeb5bfa131b84067f0d">store</a>)</td></tr>
179
+ <tr class="memitem:ad61722f886afaaee722ac55a4eed4d18 inherit pub_static_methods_classSVF_1_1SVFStmt"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">makeEdgeFlagWithStoreInst</a> (<a class="el" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *store)</td></tr>
180
180
  <tr class="separator:ad61722f886afaaee722ac55a4eed4d18 inherit pub_static_methods_classSVF_1_1SVFStmt"><td class="memSeparator" colspan="2">&#160;</td></tr>
181
181
  <tr class="memitem:ac517a3166a3afe45d04480534ac3bb50 inherit pub_static_methods_classSVF_1_1SVFStmt"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFStmt.html#ac517a3166a3afe45d04480534ac3bb50">classof</a> (const <a class="el" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *)</td></tr>
182
182
  <tr class="memdesc:ac517a3166a3afe45d04480534ac3bb50 inherit pub_static_methods_classSVF_1_1SVFStmt"><td class="mdescLeft">&#160;</td><td class="mdescRight">ClassOf. <a href="classSVF_1_1SVFStmt.html#ac517a3166a3afe45d04480534ac3bb50">More...</a><br /></td></tr>