svf-tools 1.0.618 → 1.0.620

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 (385) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
  3. package/SVF-doxygen/html/html/Andersen_8h_source.html +4 -3
  4. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +3 -3
  5. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +4 -4
  6. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -2
  9. package/SVF-doxygen/html/html/CommandLine_8h.html +129 -0
  10. package/SVF-doxygen/html/html/CommandLine_8h_source.html +132 -0
  11. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  12. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -4
  13. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
  14. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +20 -19
  16. package/SVF-doxygen/html/html/DDAPass_8h_source.html +9 -9
  17. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +6 -6
  19. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
  21. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  23. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  24. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +21 -20
  26. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +17 -17
  27. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  28. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  29. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
  30. package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
  31. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -3
  32. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
  33. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
  34. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +2 -2
  36. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  37. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
  38. package/SVF-doxygen/html/html/Options_8cpp.html +1 -0
  39. package/SVF-doxygen/html/html/Options_8cpp_source.html +123 -119
  40. package/SVF-doxygen/html/html/Options_8h.html +1 -1
  41. package/SVF-doxygen/html/html/Options_8h_source.html +124 -120
  42. package/SVF-doxygen/html/html/PCG_8cpp.html +2 -1
  43. package/SVF-doxygen/html/html/PCG_8cpp_source.html +13 -12
  44. package/SVF-doxygen/html/html/PCG_8h_source.html +12 -12
  45. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +4 -4
  46. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +13 -13
  47. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  49. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +5 -5
  50. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
  51. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +2 -2
  52. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +4 -3
  53. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +5 -4
  55. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +3 -3
  56. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +2 -2
  57. package/SVF-doxygen/html/html/SVFType_8h.html +2 -2
  58. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +2 -2
  59. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  60. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +2 -2
  61. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +5 -5
  62. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
  63. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
  64. package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
  65. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  66. package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
  67. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  68. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +10 -9
  69. package/SVF-doxygen/html/html/WPAPass_8h_source.html +4 -4
  70. package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +2 -2
  71. package/SVF-doxygen/html/html/annotated.html +6 -2
  72. package/SVF-doxygen/html/html/cfl_8cpp.html +3 -85
  73. package/SVF-doxygen/html/html/cfl_8cpp_source.html +3 -5
  74. package/SVF-doxygen/html/html/classOption-members.html +99 -0
  75. package/SVF-doxygen/html/html/classOption.html +567 -0
  76. package/SVF-doxygen/html/html/classOption.png +0 -0
  77. package/SVF-doxygen/html/html/classOptionBase-members.html +95 -0
  78. package/SVF-doxygen/html/html/classOptionBase.html +823 -0
  79. package/SVF-doxygen/html/html/classOptionBase.png +0 -0
  80. package/SVF-doxygen/html/html/classOptionMap-members.html +97 -0
  81. package/SVF-doxygen/html/html/classOptionMap.html +428 -0
  82. package/SVF-doxygen/html/html/classOptionMap.png +0 -0
  83. package/SVF-doxygen/html/html/classOptionMultiple-members.html +97 -0
  84. package/SVF-doxygen/html/html/classOptionMultiple.html +460 -0
  85. package/SVF-doxygen/html/html/classOptionMultiple.png +0 -0
  86. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +2 -2
  87. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +16 -15
  88. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +9 -9
  89. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +6 -6
  90. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +6 -6
  91. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +2 -2
  92. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  93. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +6 -6
  94. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +7 -7
  95. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +2 -2
  96. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +4 -4
  97. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +5 -5
  98. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +2 -2
  99. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +2 -2
  100. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +2 -2
  101. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +2 -2
  102. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  103. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +72 -72
  104. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
  105. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +2 -2
  106. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +8 -8
  107. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
  108. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +36 -35
  109. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
  110. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +4 -4
  111. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +2 -2
  112. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  113. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +11 -11
  114. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +22 -8
  115. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  116. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
  117. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
  118. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +2 -2
  119. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  120. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +8 -8
  122. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +2 -2
  123. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +73 -72
  124. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
  125. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +2 -2
  126. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
  127. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +2 -2
  128. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +2 -2
  129. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +10 -10
  131. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +6 -6
  132. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +12 -12
  133. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
  134. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +4 -4
  135. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +2 -2
  136. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +8 -8
  137. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
  138. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +2 -2
  139. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +120 -120
  140. package/SVF-doxygen/html/html/classSVF_1_1Options.html +613 -613
  141. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +28 -28
  142. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  143. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +18 -18
  144. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +2 -2
  145. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  146. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +2 -2
  147. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +3 -3
  148. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +7 -7
  149. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +9 -9
  150. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +9 -8
  151. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +18 -18
  153. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +6 -6
  154. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +3 -3
  156. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +2 -2
  157. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +9 -9
  158. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +2 -2
  159. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +11 -11
  160. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +10 -10
  161. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +4 -4
  162. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +2 -2
  163. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +2 -2
  164. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  165. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +2 -2
  166. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +8 -8
  167. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +2 -2
  168. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +6 -6
  169. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +27 -26
  170. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +6 -6
  171. package/SVF-doxygen/html/html/classes.html +113 -112
  172. package/SVF-doxygen/html/html/dda_8cpp.html +51 -248
  173. package/SVF-doxygen/html/html/dda_8cpp_source.html +9 -10
  174. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
  175. package/SVF-doxygen/html/html/files.html +18 -17
  176. package/SVF-doxygen/html/html/functions_a.html +7 -7
  177. package/SVF-doxygen/html/html/functions_b.html +9 -6
  178. package/SVF-doxygen/html/html/functions_c.html +48 -46
  179. package/SVF-doxygen/html/html/functions_d.html +20 -17
  180. package/SVF-doxygen/html/html/functions_e.html +6 -3
  181. package/SVF-doxygen/html/html/functions_f.html +19 -16
  182. package/SVF-doxygen/html/html/functions_func_b.html +5 -2
  183. package/SVF-doxygen/html/html/functions_func_c.html +36 -30
  184. package/SVF-doxygen/html/html/functions_func_e.html +5 -2
  185. package/SVF-doxygen/html/html/functions_func_f.html +4 -1
  186. package/SVF-doxygen/html/html/functions_func_g.html +12 -6
  187. package/SVF-doxygen/html/html/functions_func_i.html +18 -7
  188. package/SVF-doxygen/html/html/functions_func_n.html +4 -1
  189. package/SVF-doxygen/html/html/functions_func_o.html +28 -13
  190. package/SVF-doxygen/html/html/functions_func_p.html +13 -4
  191. package/SVF-doxygen/html/html/functions_func_s.html +20 -19
  192. package/SVF-doxygen/html/html/functions_func_u.html +3 -0
  193. package/SVF-doxygen/html/html/functions_g.html +16 -10
  194. package/SVF-doxygen/html/html/functions_h.html +1 -1
  195. package/SVF-doxygen/html/html/functions_i.html +38 -23
  196. package/SVF-doxygen/html/html/functions_k.html +1 -1
  197. package/SVF-doxygen/html/html/functions_l.html +7 -7
  198. package/SVF-doxygen/html/html/functions_m.html +12 -12
  199. package/SVF-doxygen/html/html/functions_n.html +6 -2
  200. package/SVF-doxygen/html/html/functions_o.html +46 -25
  201. package/SVF-doxygen/html/html/functions_p.html +55 -33
  202. package/SVF-doxygen/html/html/functions_r.html +6 -6
  203. package/SVF-doxygen/html/html/functions_s.html +30 -29
  204. package/SVF-doxygen/html/html/functions_t.html +4 -4
  205. package/SVF-doxygen/html/html/functions_type_o.html +7 -0
  206. package/SVF-doxygen/html/html/functions_type_p.html +6 -0
  207. package/SVF-doxygen/html/html/functions_u.html +6 -3
  208. package/SVF-doxygen/html/html/functions_v.html +10 -8
  209. package/SVF-doxygen/html/html/functions_vars_a.html +7 -7
  210. package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
  211. package/SVF-doxygen/html/html/functions_vars_c.html +12 -12
  212. package/SVF-doxygen/html/html/functions_vars_d.html +18 -15
  213. package/SVF-doxygen/html/html/functions_vars_e.html +2 -2
  214. package/SVF-doxygen/html/html/functions_vars_f.html +6 -6
  215. package/SVF-doxygen/html/html/functions_vars_g.html +2 -2
  216. package/SVF-doxygen/html/html/functions_vars_h.html +1 -1
  217. package/SVF-doxygen/html/html/functions_vars_i.html +10 -6
  218. package/SVF-doxygen/html/html/functions_vars_k.html +1 -1
  219. package/SVF-doxygen/html/html/functions_vars_l.html +4 -4
  220. package/SVF-doxygen/html/html/functions_vars_m.html +11 -11
  221. package/SVF-doxygen/html/html/functions_vars_n.html +3 -2
  222. package/SVF-doxygen/html/html/functions_vars_o.html +5 -2
  223. package/SVF-doxygen/html/html/functions_vars_p.html +28 -21
  224. package/SVF-doxygen/html/html/functions_vars_r.html +5 -5
  225. package/SVF-doxygen/html/html/functions_vars_s.html +10 -10
  226. package/SVF-doxygen/html/html/functions_vars_t.html +4 -4
  227. package/SVF-doxygen/html/html/functions_vars_u.html +3 -3
  228. package/SVF-doxygen/html/html/functions_vars_v.html +6 -4
  229. package/SVF-doxygen/html/html/functions_vars_w.html +3 -3
  230. package/SVF-doxygen/html/html/functions_w.html +11 -7
  231. package/SVF-doxygen/html/html/globals_d.html +4 -4
  232. package/SVF-doxygen/html/html/globals_e.html +6 -6
  233. package/SVF-doxygen/html/html/globals_f.html +2 -2
  234. package/SVF-doxygen/html/html/globals_func.html +6 -58
  235. package/SVF-doxygen/html/html/globals_i.html +4 -12
  236. package/SVF-doxygen/html/html/globals_l.html +2 -2
  237. package/SVF-doxygen/html/html/globals_r.html +4 -4
  238. package/SVF-doxygen/html/html/globals_s.html +0 -4
  239. package/SVF-doxygen/html/html/globals_type.html +3 -0
  240. package/SVF-doxygen/html/html/globals_u.html +3 -0
  241. package/SVF-doxygen/html/html/globals_vars.html +43 -12
  242. package/SVF-doxygen/html/html/hierarchy.html +197 -182
  243. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  244. package/SVF-doxygen/html/html/menudata.js +1 -2
  245. package/SVF-doxygen/html/html/mta_8cpp.html +4 -47
  246. package/SVF-doxygen/html/html/mta_8cpp_source.html +4 -4
  247. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  248. package/SVF-doxygen/html/html/saber_8cpp.html +38 -136
  249. package/SVF-doxygen/html/html/saber_8cpp_source.html +8 -7
  250. package/SVF-doxygen/html/html/search/all_1.js +7 -7
  251. package/SVF-doxygen/html/html/search/all_10.js +31 -26
  252. package/SVF-doxygen/html/html/search/all_11.js +8 -8
  253. package/SVF-doxygen/html/html/search/all_12.js +19 -20
  254. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  255. package/SVF-doxygen/html/html/search/all_14.js +5 -4
  256. package/SVF-doxygen/html/html/search/all_15.js +6 -6
  257. package/SVF-doxygen/html/html/search/all_16.js +4 -4
  258. package/SVF-doxygen/html/html/search/all_2.js +2 -1
  259. package/SVF-doxygen/html/html/search/all_3.js +16 -14
  260. package/SVF-doxygen/html/html/search/all_4.js +18 -17
  261. package/SVF-doxygen/html/html/search/all_5.js +6 -5
  262. package/SVF-doxygen/html/html/search/all_6.js +9 -8
  263. package/SVF-doxygen/html/html/search/all_7.js +4 -2
  264. package/SVF-doxygen/html/html/search/all_8.js +1 -1
  265. package/SVF-doxygen/html/html/search/all_9.js +12 -9
  266. package/SVF-doxygen/html/html/search/all_b.js +2 -2
  267. package/SVF-doxygen/html/html/search/all_c.js +7 -7
  268. package/SVF-doxygen/html/html/search/all_d.js +12 -12
  269. package/SVF-doxygen/html/html/search/all_e.js +4 -3
  270. package/SVF-doxygen/html/html/search/all_f.js +24 -6
  271. package/SVF-doxygen/html/html/search/classes_c.js +15 -0
  272. package/SVF-doxygen/html/html/search/files_2.js +1 -0
  273. package/SVF-doxygen/html/html/search/functions_1.js +1 -0
  274. package/SVF-doxygen/html/html/search/functions_10.js +0 -2
  275. package/SVF-doxygen/html/html/search/functions_11.js +1 -2
  276. package/SVF-doxygen/html/html/search/functions_13.js +1 -0
  277. package/SVF-doxygen/html/html/search/functions_2.js +1 -0
  278. package/SVF-doxygen/html/html/search/functions_3.js +0 -2
  279. package/SVF-doxygen/html/html/search/functions_4.js +1 -3
  280. package/SVF-doxygen/html/html/search/functions_5.js +2 -1
  281. package/SVF-doxygen/html/html/search/functions_6.js +2 -0
  282. package/SVF-doxygen/html/html/search/functions_8.js +3 -1
  283. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  284. package/SVF-doxygen/html/html/search/functions_d.js +1 -0
  285. package/SVF-doxygen/html/html/search/functions_e.js +5 -1
  286. package/SVF-doxygen/html/html/search/functions_f.js +2 -0
  287. package/SVF-doxygen/html/html/search/typedefs_12.js +1 -1
  288. package/SVF-doxygen/html/html/search/typedefs_7.js +1 -1
  289. package/SVF-doxygen/html/html/search/typedefs_d.js +2 -0
  290. package/SVF-doxygen/html/html/search/typedefs_e.js +2 -0
  291. package/SVF-doxygen/html/html/search/variables_1.js +7 -7
  292. package/SVF-doxygen/html/html/search/variables_10.js +23 -21
  293. package/SVF-doxygen/html/html/search/variables_11.js +7 -5
  294. package/SVF-doxygen/html/html/search/variables_12.js +10 -10
  295. package/SVF-doxygen/html/html/search/variables_13.js +7 -7
  296. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  297. package/SVF-doxygen/html/html/search/variables_15.js +4 -4
  298. package/SVF-doxygen/html/html/search/variables_16.js +3 -3
  299. package/SVF-doxygen/html/html/search/variables_2.js +1 -1
  300. package/SVF-doxygen/html/html/search/variables_3.js +12 -12
  301. package/SVF-doxygen/html/html/search/variables_4.js +18 -15
  302. package/SVF-doxygen/html/html/search/variables_5.js +5 -2
  303. package/SVF-doxygen/html/html/search/variables_6.js +7 -6
  304. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  305. package/SVF-doxygen/html/html/search/variables_8.js +1 -1
  306. package/SVF-doxygen/html/html/search/variables_9.js +7 -6
  307. package/SVF-doxygen/html/html/search/variables_b.js +1 -1
  308. package/SVF-doxygen/html/html/search/variables_c.js +5 -4
  309. package/SVF-doxygen/html/html/search/variables_d.js +11 -11
  310. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  311. package/SVF-doxygen/html/html/search/variables_f.js +3 -2
  312. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +4 -4
  313. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  314. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
  315. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +4 -4
  316. package/SVF-doxygen/html/html/svf-ex_8cpp.html +12 -55
  317. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +8 -8
  318. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  319. package/SVF-doxygen/html/html/wpa_8cpp.html +4 -47
  320. package/SVF-doxygen/html/html/wpa_8cpp_source.html +4 -4
  321. package/include/Util/CommandLine.h +527 -0
  322. package/include/Util/Options.h +124 -124
  323. package/include/WPA/Andersen.h +5 -5
  324. package/lib/AbstractExecution/SVFIR2ItvExeState.cpp +2 -2
  325. package/lib/CFL/CFLAlias.cpp +5 -5
  326. package/lib/CFL/CFLBase.cpp +4 -4
  327. package/lib/CFL/CFLGraphBuilder.cpp +2 -2
  328. package/lib/CFL/CFLVF.cpp +5 -5
  329. package/lib/CMakeLists.txt +8 -4
  330. package/lib/DDA/ContextDDA.cpp +1 -1
  331. package/lib/DDA/DDAPass.cpp +14 -13
  332. package/lib/DDA/FlowDDA.cpp +1 -1
  333. package/lib/Graphs/ConsG.cpp +10 -10
  334. package/lib/Graphs/ICFG.cpp +1 -1
  335. package/lib/Graphs/IRGraph.cpp +2 -2
  336. package/lib/Graphs/SVFG.cpp +5 -5
  337. package/lib/Graphs/SVFGOPT.cpp +5 -5
  338. package/lib/Graphs/VFG.cpp +1 -1
  339. package/lib/MSSA/MemRegion.cpp +2 -2
  340. package/lib/MSSA/MemSSA.cpp +4 -4
  341. package/lib/MSSA/SVFGBuilder.cpp +4 -4
  342. package/lib/MTA/FSMPTA.cpp +13 -13
  343. package/lib/MTA/MHP.cpp +1 -1
  344. package/lib/MTA/MTA.cpp +2 -2
  345. package/lib/MTA/MTAStat.cpp +1 -1
  346. package/lib/MTA/PCG.cpp +8 -2
  347. package/lib/MTA/TCT.cpp +2 -2
  348. package/lib/MemoryModel/PointerAnalysis.cpp +13 -13
  349. package/lib/MemoryModel/PointerAnalysisImpl.cpp +13 -13
  350. package/lib/MemoryModel/PointsTo.cpp +1 -1
  351. package/lib/SABER/DoubleFreeChecker.cpp +1 -1
  352. package/lib/SABER/LeakChecker.cpp +1 -1
  353. package/lib/SABER/SaberCondAllocator.cpp +1 -1
  354. package/lib/SABER/SrcSnkDDA.cpp +5 -5
  355. package/lib/SVF-LLVM/CHGBuilder.cpp +1 -1
  356. package/lib/SVF-LLVM/DCHG.cpp +1 -1
  357. package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +2 -2
  358. package/lib/SVF-LLVM/LLVMModule.cpp +10 -4
  359. package/lib/SVF-LLVM/SVFIRBuilder.cpp +8 -8
  360. package/lib/SVF-LLVM/SymbolTableBuilder.cpp +5 -5
  361. package/lib/SVFIR/SVFIR.cpp +4 -4
  362. package/lib/SVFIR/SVFStatements.cpp +16 -16
  363. package/lib/SVFIR/SVFVariables.cpp +5 -5
  364. package/lib/SVFIR/SymbolTableInfo.cpp +6 -6
  365. package/lib/Util/NodeIDAllocator.cpp +9 -9
  366. package/lib/Util/Options.cpp +426 -412
  367. package/lib/Util/SVFStat.cpp +5 -5
  368. package/lib/Util/SVFUtil.cpp +1 -1
  369. package/lib/Util/Z3Expr.cpp +2 -2
  370. package/lib/WPA/Andersen.cpp +13 -13
  371. package/lib/WPA/AndersenSCD.cpp +3 -3
  372. package/lib/WPA/FlowSensitive.cpp +8 -8
  373. package/lib/WPA/TypeAnalysis.cpp +1 -1
  374. package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
  375. package/lib/WPA/WPAPass.cpp +10 -9
  376. package/package.json +1 -1
  377. package/tools/CFL/cfl.cpp +6 -14
  378. package/tools/DDA/dda.cpp +39 -29
  379. package/tools/Example/svf-ex.cpp +5 -8
  380. package/tools/MTA/LockResultValidator.cpp +2 -2
  381. package/tools/MTA/MTAAnnotator.cpp +5 -5
  382. package/tools/MTA/MTAResultValidator.cpp +8 -8
  383. package/tools/MTA/mta.cpp +5 -8
  384. package/tools/SABER/saber.cpp +23 -17
  385. package/tools/WPA/wpa.cpp +6 -9
@@ -967,8 +967,8 @@ Additional Inherited Members</h2></td></tr>
967
967
  <p>Reimplemented from <a class="el" href="classSVF_1_1Andersen.html#ab069683dd6ca563113efbde2813ab35e">SVF::Andersen</a>.</p>
968
968
 
969
969
  <p class="definition">Definition at line <a class="el" href="AndersenSCD_8cpp_source.html#l00149">149</a> of file <a class="el" href="AndersenSCD_8cpp_source.html">AndersenSCD.cpp</a>.</p>
970
- <div class="fragment"><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;{</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> nodeId = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a> &amp;&amp; <a class="code" href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">getSCCDetector</a>()-&gt;subNodes(nodeId).<a class="code" href="cJSON_8h.html#ad43c3812e6d13e0518d9f8b8f463ffcf">count</a>() &gt; 1)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1AndersenSCD.html#aaee864bb1fc5b5d4643e145d80ecfb8b">processPWC</a>(node);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1WPASolver.html#a09c85e7a12715fc64e05a8448b699ec0">isInWorklist</a>(nodeId))</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1Andersen.html#ab069683dd6ca563113efbde2813ab35e">Andersen::handleCopyGep</a>(node);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
971
- <div class="ttc" id="classSVF_1_1Options_html_a1d299e736ee653759d340508fd30c6ab"><div class="ttname"><a href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">SVF::Options::DetectPWC</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; DetectPWC</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00238">Options.h:238</a></div></div>
970
+ <div class="fragment"><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;{</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> nodeId = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>() &amp;&amp; <a class="code" href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">getSCCDetector</a>()-&gt;subNodes(nodeId).<a class="code" href="cJSON_8h.html#ad43c3812e6d13e0518d9f8b8f463ffcf">count</a>() &gt; 1)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1AndersenSCD.html#aaee864bb1fc5b5d4643e145d80ecfb8b">processPWC</a>(node);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1WPASolver.html#a09c85e7a12715fc64e05a8448b699ec0">isInWorklist</a>(nodeId))</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1Andersen.html#ab069683dd6ca563113efbde2813ab35e">Andersen::handleCopyGep</a>(node);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
971
+ <div class="ttc" id="classSVF_1_1Options_html_a3fc22d0a45be551110d1e326380f3202"><div class="ttname"><a href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">SVF::Options::DetectPWC</a></div><div class="ttdeci">static Option&lt; bool &gt; DetectPWC</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00238">Options.h:238</a></div></div>
972
972
  <div class="ttc" id="classSVF_1_1WPASolver_html_a37ca8a99b8f83fba796293e6e13b0953"><div class="ttname"><a href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">SVF::WPASolver::getSCCDetector</a></div><div class="ttdeci">SCC * getSCCDetector() const</div><div class="ttdoc">Get SCC detector. </div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00067">WPASolver.h:67</a></div></div>
973
973
  <div class="ttc" id="cJSON_8h_html_ad43c3812e6d13e0518d9f8b8f463ffcf"><div class="ttname"><a href="cJSON_8h.html#ad43c3812e6d13e0518d9f8b8f463ffcf">count</a></div><div class="ttdeci">int count</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00216">cJSON.h:216</a></div></div>
974
974
  <div class="ttc" id="classSVF_1_1AndersenSCD_html_aaee864bb1fc5b5d4643e145d80ecfb8b"><div class="ttname"><a href="classSVF_1_1AndersenSCD.html#aaee864bb1fc5b5d4643e145d80ecfb8b">SVF::AndersenSCD::processPWC</a></div><div class="ttdeci">virtual void processPWC(ConstraintNode *rep)</div><div class="ttdef"><b>Definition:</b> <a href="AndersenSCD_8cpp_source.html#l00163">AndersenSCD.cpp:163</a></div></div>
@@ -1136,10 +1136,10 @@ Additional Inherited Members</h2></td></tr>
1136
1136
  <p>Reimplemented in <a class="el" href="classSVF_1_1AndersenSFR.html#a7bb1bd307c5db4d732e51af810c5ad75">SVF::AndersenSFR</a>.</p>
1137
1137
 
1138
1138
  <p class="definition">Definition at line <a class="el" href="AndersenSCD_8cpp_source.html#l00126">126</a> of file <a class="el" href="AndersenSCD_8cpp_source.html">AndersenSCD.cpp</a>.</p>
1139
- <div class="fragment"><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;{</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// replace scc candidates by their reps</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> tmpSccCandidates = <a class="code" href="classSVF_1_1AndersenSCD.html#aeb0b3644c3bfbfa5768b92c99aeeef40">sccCandidates</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classSVF_1_1AndersenSCD.html#aeb0b3644c3bfbfa5768b92c99aeeef40">sccCandidates</a>.clear();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> candidate : tmpSccCandidates)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classSVF_1_1AndersenSCD.html#aeb0b3644c3bfbfa5768b92c99aeeef40">sccCandidates</a>.insert(<a class="code" href="classSVF_1_1Andersen.html#aad706e332847e6b0892350a05028ba30">sccRepNode</a>(candidate));</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; tmpSccCandidates.clear();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// set scc edge type as direct edge</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">bool</span> pwcFlag = <a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1Andersen.html#a1462bdde3748b1513e92a119b8a43794">setDetectPWC</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">getSCCDetector</a>()-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>(<a class="code" href="classSVF_1_1AndersenSCD.html#aeb0b3644c3bfbfa5768b92c99aeeef40">sccCandidates</a>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// reset scc edge type</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classSVF_1_1Andersen.html#a1462bdde3748b1513e92a119b8a43794">setDetectPWC</a>(pwcFlag);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a212231734fa43d5c7414137deaac7df3"><div class="ttname"><a href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">SVF::NodeSet</a></div><div class="ttdeci">Set&lt; NodeID &gt; NodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00110">SVFType.h:110</a></div></div>
1139
+ <div class="fragment"><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;{</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// replace scc candidates by their reps</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> tmpSccCandidates = <a class="code" href="classSVF_1_1AndersenSCD.html#aeb0b3644c3bfbfa5768b92c99aeeef40">sccCandidates</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classSVF_1_1AndersenSCD.html#aeb0b3644c3bfbfa5768b92c99aeeef40">sccCandidates</a>.clear();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> candidate : tmpSccCandidates)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classSVF_1_1AndersenSCD.html#aeb0b3644c3bfbfa5768b92c99aeeef40">sccCandidates</a>.insert(<a class="code" href="classSVF_1_1Andersen.html#aad706e332847e6b0892350a05028ba30">sccRepNode</a>(candidate));</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; tmpSccCandidates.clear();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// set scc edge type as direct edge</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">bool</span> pwcFlag = <a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1Andersen.html#a1462bdde3748b1513e92a119b8a43794">setDetectPWC</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">getSCCDetector</a>()-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>(<a class="code" href="classSVF_1_1AndersenSCD.html#aeb0b3644c3bfbfa5768b92c99aeeef40">sccCandidates</a>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// reset scc edge type</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classSVF_1_1Andersen.html#a1462bdde3748b1513e92a119b8a43794">setDetectPWC</a>(pwcFlag);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a212231734fa43d5c7414137deaac7df3"><div class="ttname"><a href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">SVF::NodeSet</a></div><div class="ttdeci">Set&lt; NodeID &gt; NodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00110">SVFType.h:110</a></div></div>
1140
1140
  <div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
1141
1141
  <div class="ttc" id="classSVF_1_1SCCDetection_html_a123b5006a6da7053e5e357140da3c5a3"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">SVF::SCCDetection::find</a></div><div class="ttdeci">void find(void)</div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00308">SCC.h:308</a></div></div>
1142
- <div class="ttc" id="classSVF_1_1Options_html_a1d299e736ee653759d340508fd30c6ab"><div class="ttname"><a href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">SVF::Options::DetectPWC</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; DetectPWC</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00238">Options.h:238</a></div></div>
1142
+ <div class="ttc" id="classSVF_1_1Options_html_a3fc22d0a45be551110d1e326380f3202"><div class="ttname"><a href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">SVF::Options::DetectPWC</a></div><div class="ttdeci">static Option&lt; bool &gt; DetectPWC</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00238">Options.h:238</a></div></div>
1143
1143
  <div class="ttc" id="classSVF_1_1WPASolver_html_a37ca8a99b8f83fba796293e6e13b0953"><div class="ttname"><a href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">SVF::WPASolver::getSCCDetector</a></div><div class="ttdeci">SCC * getSCCDetector() const</div><div class="ttdoc">Get SCC detector. </div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00067">WPASolver.h:67</a></div></div>
1144
1144
  <div class="ttc" id="classSVF_1_1Andersen_html_a1462bdde3748b1513e92a119b8a43794"><div class="ttname"><a href="classSVF_1_1Andersen.html#a1462bdde3748b1513e92a119b8a43794">SVF::Andersen::setDetectPWC</a></div><div class="ttdeci">void setDetectPWC(bool flag)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00232">Andersen.h:232</a></div></div>
1145
1145
  <div class="ttc" id="classSVF_1_1Andersen_html_aad706e332847e6b0892350a05028ba30"><div class="ttname"><a href="classSVF_1_1Andersen.html#aad706e332847e6b0892350a05028ba30">SVF::Andersen::sccRepNode</a></div><div class="ttdeci">NodeID sccRepNode(NodeID id) const</div><div class="ttdoc">SCC methods. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00202">Andersen.h:202</a></div></div>
@@ -1202,13 +1202,13 @@ Additional Inherited Members</h2></td></tr>
1202
1202
  <p>Reimplemented from <a class="el" href="classSVF_1_1Andersen.html#a31ea24432ff42ab86a4728f2bde571bc">SVF::Andersen</a>.</p>
1203
1203
 
1204
1204
  <p class="definition">Definition at line <a class="el" href="AndersenSCD_8cpp_source.html#l00097">97</a> of file <a class="el" href="AndersenSCD_8cpp_source.html">AndersenSCD.cpp</a>.</p>
1205
- <div class="fragment"><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; <a class="code" href="classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968">numOfSCCDetection</a>++;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">double</span> sccStart = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">getSCCDetector</a>()-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>(<a class="code" href="classSVF_1_1AndersenSCD.html#aeb0b3644c3bfbfa5768b92c99aeeef40">sccCandidates</a>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">double</span> sccEnd = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143">timeOfSCCDetection</a> += (sccEnd - sccStart)/<a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">double</span> mergeStart = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classSVF_1_1Andersen.html#ac86ffd334568e4df5c08b3c827018bef">mergeSccCycle</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">double</span> mergeEnd = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a02c5a50b214d36921e1404784e76704d">timeOfSCCMerges</a> += (mergeEnd - mergeStart)/<a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; sccStart = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classSVF_1_1AndersenSCD.html#af155524f6f78424a846fe2eb575bb40a">PWCDetect</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; sccEnd = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143">timeOfSCCDetection</a> += (sccEnd - sccStart) / <a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">getSCCDetector</a>()-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a6502c0a765ac1653474ffee651949f93">topoNodeStack</a>();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;}</div><div class="ttc" id="classSVF_1_1SCCDetection_html_a6502c0a765ac1653474ffee651949f93"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a6502c0a765ac1653474ffee651949f93">SVF::SCCDetection::topoNodeStack</a></div><div class="ttdeci">GNodeStack &amp; topoNodeStack()</div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00128">SCC.h:128</a></div></div>
1205
+ <div class="fragment"><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; <a class="code" href="classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968">numOfSCCDetection</a>++;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">double</span> sccStart = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">getSCCDetector</a>()-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>(<a class="code" href="classSVF_1_1AndersenSCD.html#aeb0b3644c3bfbfa5768b92c99aeeef40">sccCandidates</a>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">double</span> sccEnd = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143">timeOfSCCDetection</a> += (sccEnd - sccStart)/<a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">double</span> mergeStart = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classSVF_1_1Andersen.html#ac86ffd334568e4df5c08b3c827018bef">mergeSccCycle</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">double</span> mergeEnd = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a02c5a50b214d36921e1404784e76704d">timeOfSCCMerges</a> += (mergeEnd - mergeStart)/<a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; sccStart = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classSVF_1_1AndersenSCD.html#af155524f6f78424a846fe2eb575bb40a">PWCDetect</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; sccEnd = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143">timeOfSCCDetection</a> += (sccEnd - sccStart) / <a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">getSCCDetector</a>()-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a6502c0a765ac1653474ffee651949f93">topoNodeStack</a>();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;}</div><div class="ttc" id="classSVF_1_1SCCDetection_html_a6502c0a765ac1653474ffee651949f93"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a6502c0a765ac1653474ffee651949f93">SVF::SCCDetection::topoNodeStack</a></div><div class="ttdeci">GNodeStack &amp; topoNodeStack()</div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00128">SCC.h:128</a></div></div>
1206
1206
  <div class="ttc" id="classSVF_1_1SCCDetection_html_a123b5006a6da7053e5e357140da3c5a3"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">SVF::SCCDetection::find</a></div><div class="ttdeci">void find(void)</div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00308">SCC.h:308</a></div></div>
1207
1207
  <div class="ttc" id="SVFType_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00444">SVFType.h:444</a></div></div>
1208
1208
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a02c5a50b214d36921e1404784e76704d"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a02c5a50b214d36921e1404784e76704d">SVF::AndersenBase::timeOfSCCMerges</a></div><div class="ttdeci">static double timeOfSCCMerges</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00133">Andersen.h:133</a></div></div>
1209
- <div class="ttc" id="classSVF_1_1Options_html_a1d299e736ee653759d340508fd30c6ab"><div class="ttname"><a href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">SVF::Options::DetectPWC</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; DetectPWC</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00238">Options.h:238</a></div></div>
1210
1209
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a0d7298cbf83568f24fd2bd1926a32968"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968">SVF::AndersenBase::numOfSCCDetection</a></div><div class="ttdeci">static u32_t numOfSCCDetection</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00131">Andersen.h:131</a></div></div>
1211
1210
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a6b7d0e57f741c446d0bf178939960143"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143">SVF::AndersenBase::timeOfSCCDetection</a></div><div class="ttdeci">static double timeOfSCCDetection</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00132">Andersen.h:132</a></div></div>
1211
+ <div class="ttc" id="classSVF_1_1Options_html_a3fc22d0a45be551110d1e326380f3202"><div class="ttname"><a href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">SVF::Options::DetectPWC</a></div><div class="ttdeci">static Option&lt; bool &gt; DetectPWC</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00238">Options.h:238</a></div></div>
1212
1212
  <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00047">SVFStat.cpp:47</a></div></div>
1213
1213
  <div class="ttc" id="classSVF_1_1WPASolver_html_a37ca8a99b8f83fba796293e6e13b0953"><div class="ttname"><a href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">SVF::WPASolver::getSCCDetector</a></div><div class="ttdeci">SCC * getSCCDetector() const</div><div class="ttdoc">Get SCC detector. </div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00067">WPASolver.h:67</a></div></div>
1214
1214
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
@@ -805,15 +805,14 @@ Additional Inherited Members</h2></td></tr>
805
805
  <p>Constructor </p>
806
806
 
807
807
  <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00045">45</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
808
- <div class="fragment"><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; :</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a14e2a209cb594f91a24ef09b12f82f3f">PointerAnalysis</a>(p, <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, alias_check), <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">ptCache</a>()</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">FlowS_DDA</a></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">AndersenSCD_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">AndersenSFR_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">CFLFICI_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d">CFLFSCS_WPA</a>)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// Only maintain reverse points-to when the analysis is field-sensitive, as objects turning</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// field-insensitive is all it is used for.</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">bool</span> maintainRevPts = <a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a> != 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;MutDiffPTDataTy&gt;(maintainRevPts);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;PersDiffPTDataTy&gt;(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#afaeae813ff38e010bbe8fe61befb345c">getPtCache</a>(), maintainRevPts);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">Steensgaard_WPA</a>)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// Steensgaard is only field-insensitive (for now?), so no reverse points-to.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;MutDiffPTDataTy&gt;(<span class="keyword">false</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;PersDiffPTDataTy&gt;(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#afaeae813ff38e010bbe8fe61befb345c">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">FSSPARSE_WPA</a>)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a5896e2aaf59305441a74ede0dfb85845">Options::INCDFPTData</a>)</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"> 70</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;MutIncDFPTDataTy&gt;(<span class="keyword">false</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;PersIncDFPTDataTy&gt;(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#afaeae813ff38e010bbe8fe61befb345c">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</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"> 74</span>&#160; <span class="keywordflow">else</span></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">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;MutDFPTDataTy&gt;(<span class="keyword">false</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;PersDFPTDataTy&gt;(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#afaeae813ff38e010bbe8fe61befb345c">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<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="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_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;MutVersionedPTDataTy&gt;(<span class="keyword">false</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;PersVersionedPTDataTy&gt;(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#afaeae813ff38e010bbe8fe61befb345c">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no points-to data available&quot;</span>);</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; <a class="code" href="classSVF_1_1PointerAnalysis.html#a5d3c3094e263bf16a4f312a118c1bd36">ptaImplTy</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8">BVDataImpl</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d">SVF::PointerAnalysis::CFLFSCS_WPA</a></div><div class="ttdoc">Flow-, context-, CFL-reachability-based analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00080">PointerAnalysis.h:80</a></div></div>
808
+ <div class="fragment"><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; :</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a14e2a209cb594f91a24ef09b12f82f3f">PointerAnalysis</a>(p, <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, alias_check), <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">ptCache</a>()</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">FlowS_DDA</a></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">AndersenSCD_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">AndersenSFR_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">CFLFICI_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d">CFLFSCS_WPA</a>)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// Only maintain reverse points-to when the analysis is field-sensitive, as objects turning</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// field-insensitive is all it is used for.</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">bool</span> maintainRevPts = <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() != 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">Options::ptDataBacking</a>() == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;MutDiffPTDataTy&gt;(maintainRevPts);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">Options::ptDataBacking</a>() == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;PersDiffPTDataTy&gt;(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#afaeae813ff38e010bbe8fe61befb345c">getPtCache</a>(), maintainRevPts);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">Steensgaard_WPA</a>)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// Steensgaard is only field-insensitive (for now?), so no reverse points-to.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">Options::ptDataBacking</a>() == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;MutDiffPTDataTy&gt;(<span class="keyword">false</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">Options::ptDataBacking</a>() == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;PersDiffPTDataTy&gt;(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#afaeae813ff38e010bbe8fe61befb345c">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">FSSPARSE_WPA</a>)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1743b8a1ab2d71c35206c7befa725d90">Options::INCDFPTData</a>())</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"> 70</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">Options::ptDataBacking</a>() == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;MutIncDFPTDataTy&gt;(<span class="keyword">false</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">Options::ptDataBacking</a>() == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;PersIncDFPTDataTy&gt;(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#afaeae813ff38e010bbe8fe61befb345c">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</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"> 74</span>&#160; <span class="keywordflow">else</span></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">if</span> (<a class="code" href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">Options::ptDataBacking</a>() == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;MutDFPTDataTy&gt;(<span class="keyword">false</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">Options::ptDataBacking</a>() == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;PersDFPTDataTy&gt;(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#afaeae813ff38e010bbe8fe61befb345c">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<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="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_1Options.html#ae3c3cc703ef35987a32aa808038a1307">Options::ptDataBacking</a>() == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;MutVersionedPTDataTy&gt;(<span class="keyword">false</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">Options::ptDataBacking</a>() == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = std::make_unique&lt;PersVersionedPTDataTy&gt;(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#afaeae813ff38e010bbe8fe61befb345c">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no points-to data available&quot;</span>);</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; <a class="code" href="classSVF_1_1PointerAnalysis.html#a5d3c3094e263bf16a4f312a118c1bd36">ptaImplTy</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8">BVDataImpl</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d">SVF::PointerAnalysis::CFLFSCS_WPA</a></div><div class="ttdoc">Flow-, context-, CFL-reachability-based analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00080">PointerAnalysis.h:80</a></div></div>
809
809
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8">SVF::PointerAnalysis::BVDataImpl</a></div><div class="ttdoc">Represents BVDataPTAImpl. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00097">PointerAnalysis.h:97</a></div></div>
810
- <div class="ttc" id="classSVF_1_1Options_html_a9ec1d22e20b655e364fea03ba7d923a2"><div class="ttname"><a href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">SVF::Options::ptDataBacking</a></div><div class="ttdeci">static const llvm::cl::opt&lt; BVDataPTAImpl::PTBackingType &gt; ptDataBacking</div><div class="ttdoc">PTData type. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00069">Options.h:69</a></div></div>
811
810
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">SVF::PointerAnalysis::CFLFICI_WPA</a></div><div class="ttdoc">Flow-, context-, insensitive CFL-reachability-based analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00078">PointerAnalysis.h:78</a></div></div>
812
811
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a14e2a209cb594f91a24ef09b12f82f3f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a14e2a209cb594f91a24ef09b12f82f3f">SVF::PointerAnalysis::PointerAnalysis</a></div><div class="ttdeci">PointerAnalysis(SVFIR *pag, PTATY ty=Default_PTA, bool alias_check=true)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00069">PointerAnalysis.cpp:69</a></div></div>
813
- <div class="ttc" id="classSVF_1_1Options_html_adfc1a5c6098d3867e29fc65ca9ffa1cc"><div class="ttname"><a href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &gt; MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00038">Options.h:38</a></div></div>
812
+ <div class="ttc" id="classSVF_1_1Options_html_aaab923c093730b1670a54f09340b1bd5"><div class="ttname"><a href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const Option&lt; u32_t &gt; MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00038">Options.h:38</a></div></div>
814
813
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">SVF::PointerAnalysis::VFS_WPA</a></div><div class="ttdoc">Versioned sparse flow-sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00076">PointerAnalysis.h:76</a></div></div>
815
814
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">SVF::PointerAnalysis::Steensgaard_WPA</a></div><div class="ttdoc">Steensgaard PTA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00071">PointerAnalysis.h:71</a></div></div>
816
- <div class="ttc" id="classSVF_1_1Options_html_a5896e2aaf59305441a74ede0dfb85845"><div class="ttname"><a href="classSVF_1_1Options.html#a5896e2aaf59305441a74ede0dfb85845">SVF::Options::INCDFPTData</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; INCDFPTData</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00146">Options.h:146</a></div></div>
815
+ <div class="ttc" id="classSVF_1_1Options_html_a1743b8a1ab2d71c35206c7befa725d90"><div class="ttname"><a href="classSVF_1_1Options.html#a1743b8a1ab2d71c35206c7befa725d90">SVF::Options::INCDFPTData</a></div><div class="ttdeci">static const Option&lt; bool &gt; INCDFPTData</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00146">Options.h:146</a></div></div>
817
816
  <div class="ttc" id="cJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
818
817
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ab283427a420ab349da4920ec10b7e1cd"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">std::unique_ptr&lt; PTDataTy &gt; ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00203">PointerAnalysisImpl.h:203</a></div></div>
819
818
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_afaeae813ff38e010bbe8fe61befb345c"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#afaeae813ff38e010bbe8fe61befb345c">SVF::BVDataPTAImpl::getPtCache</a></div><div class="ttdeci">PersistentPointsToCache&lt; PointsTo &gt; &amp; getPtCache()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00076">PointerAnalysisImpl.h:76</a></div></div>
@@ -827,6 +826,7 @@ Additional Inherited Members</h2></td></tr>
827
826
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">SVF::PointerAnalysis::FlowS_DDA</a></div><div class="ttdoc">Flow sensitive DDA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00085">PointerAnalysis.h:85</a></div></div>
828
827
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">SVF::PointerAnalysis::AndersenSCD_WPA</a></div><div class="ttdoc">Selective cycle detection andersen-style WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00068">PointerAnalysis.h:68</a></div></div>
829
828
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">SVF::PointerAnalysis::TypeCPP_WPA</a></div><div class="ttdoc">Type-based analysis for C++. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00081">PointerAnalysis.h:81</a></div></div>
829
+ <div class="ttc" id="classSVF_1_1Options_html_ae3c3cc703ef35987a32aa808038a1307"><div class="ttname"><a href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">SVF::Options::ptDataBacking</a></div><div class="ttdeci">static const OptionMap&lt; BVDataPTAImpl::PTBackingType &gt; ptDataBacking</div><div class="ttdoc">PTData type. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00069">Options.h:69</a></div></div>
830
830
  </div><!-- fragment -->
831
831
  </div>
832
832
  </div>
@@ -1405,8 +1405,7 @@ Additional Inherited Members</h2></td></tr>
1405
1405
  <p>Reimplemented in <a class="el" href="classSVF_1_1Andersen.html#ad90c8cf193bd81870ce8dd88c9580e2c">SVF::Andersen</a>, <a class="el" href="classSVF_1_1FlowSensitive.html#a911aa7dd8d696b96a85d85af852e1e58">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase</a>, <a class="el" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">SVF::TypeAnalysis</a>, and <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#ad955fda89f4f749151a1bd14562b03f6">SVF::VersionedFlowSensitive</a>.</p>
1406
1406
 
1407
1407
  <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00092">92</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1408
- <div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a2026cffd7043208333083ed1a6603e7b">normalizePointsTo</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">PointerAnalysis::finalize</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">print_stat</a>)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa8bab1ad6cab332fe24066b9cf487344">getModuleIdentifier</a>());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; std::vector&lt;std::string&gt; names = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af54e70082388bbd70868250aaa0bc86b">SVFUtil::split</a>(moduleName,<span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (names.size() &gt; 1)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; moduleName = names[names.size() - 1];</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> subtitle;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &gt;= <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &lt;= <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">Steensgaard_WPA</a>)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; subtitle = <span class="stringliteral">&quot;Andersen&#39;s analysis bitvector&quot;</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &gt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322">FSDATAFLOW_WPA</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &lt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a43837619e78e03dc95ec6e88959faf82">FSCS_WPA</a>)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; subtitle = <span class="stringliteral">&quot;flow-sensitive analysis bitvector&quot;</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &gt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">CFLFICI_WPA</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &lt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d">CFLFSCS_WPA</a>)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; subtitle = <span class="stringliteral">&quot;CFL analysis bitvector&quot;</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a>)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; subtitle = <span class="stringliteral">&quot;Type analysis bitvector&quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &gt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abe1d8104c77bfe4bbc201a64410c7f61">FieldS_DDA</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &lt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8">Cxt_DDA</a>)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; subtitle = <span class="stringliteral">&quot;DDA bitvector&quot;</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; subtitle = <span class="stringliteral">&quot;bitvector&quot;</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n****Persistent Points-To Cache Statistics: &quot;</span> &lt;&lt; subtitle &lt;&lt; <span class="stringliteral">&quot;****\n&quot;</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;################ (program : &quot;</span> &lt;&lt; moduleName &lt;&lt; <span class="stringliteral">&quot;)###############\n&quot;</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flags(std::ios::left);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">ptCache</a>.printStats(<span class="stringliteral">&quot;bitvector&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;#######################################################&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d">SVF::PointerAnalysis::CFLFSCS_WPA</a></div><div class="ttdoc">Flow-, context-, CFL-reachability-based analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00080">PointerAnalysis.h:80</a></div></div>
1409
- <div class="ttc" id="classSVF_1_1Options_html_a9ec1d22e20b655e364fea03ba7d923a2"><div class="ttname"><a href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">SVF::Options::ptDataBacking</a></div><div class="ttdeci">static const llvm::cl::opt&lt; BVDataPTAImpl::PTBackingType &gt; ptDataBacking</div><div class="ttdoc">PTData type. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00069">Options.h:69</a></div></div>
1408
+ <div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a2026cffd7043208333083ed1a6603e7b">normalizePointsTo</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">PointerAnalysis::finalize</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">Options::ptDataBacking</a>() == PTBackingType::Persistent &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">print_stat</a>)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa8bab1ad6cab332fe24066b9cf487344">getModuleIdentifier</a>());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; std::vector&lt;std::string&gt; names = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af54e70082388bbd70868250aaa0bc86b">SVFUtil::split</a>(moduleName,<span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (names.size() &gt; 1)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; moduleName = names[names.size() - 1];</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> subtitle;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &gt;= <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &lt;= <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">Steensgaard_WPA</a>)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; subtitle = <span class="stringliteral">&quot;Andersen&#39;s analysis bitvector&quot;</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &gt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322">FSDATAFLOW_WPA</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &lt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a43837619e78e03dc95ec6e88959faf82">FSCS_WPA</a>)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; subtitle = <span class="stringliteral">&quot;flow-sensitive analysis bitvector&quot;</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &gt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">CFLFICI_WPA</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &lt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d">CFLFSCS_WPA</a>)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; subtitle = <span class="stringliteral">&quot;CFL analysis bitvector&quot;</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a>)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; subtitle = <span class="stringliteral">&quot;Type analysis bitvector&quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &gt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abe1d8104c77bfe4bbc201a64410c7f61">FieldS_DDA</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &lt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8">Cxt_DDA</a>)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; subtitle = <span class="stringliteral">&quot;DDA bitvector&quot;</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; subtitle = <span class="stringliteral">&quot;bitvector&quot;</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n****Persistent Points-To Cache Statistics: &quot;</span> &lt;&lt; subtitle &lt;&lt; <span class="stringliteral">&quot;****\n&quot;</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;################ (program : &quot;</span> &lt;&lt; moduleName &lt;&lt; <span class="stringliteral">&quot;)###############\n&quot;</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flags(std::ios::left);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">ptCache</a>.printStats(<span class="stringliteral">&quot;bitvector&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;#######################################################&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d">SVF::PointerAnalysis::CFLFSCS_WPA</a></div><div class="ttdoc">Flow-, context-, CFL-reachability-based analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00080">PointerAnalysis.h:80</a></div></div>
1410
1409
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">SVF::PointerAnalysis::CFLFICI_WPA</a></div><div class="ttdoc">Flow-, context-, insensitive CFL-reachability-based analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00078">PointerAnalysis.h:78</a></div></div>
1411
1410
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85abe1d8104c77bfe4bbc201a64410c7f61"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abe1d8104c77bfe4bbc201a64410c7f61">SVF::PointerAnalysis::FieldS_DDA</a></div><div class="ttdoc">Field sensitive DDA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00084">PointerAnalysis.h:84</a></div></div>
1412
1411
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8">SVF::PointerAnalysis::Cxt_DDA</a></div><div class="ttdoc">context sensitive DDA </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00087">PointerAnalysis.h:87</a></div></div>
@@ -1425,6 +1424,7 @@ Additional Inherited Members</h2></td></tr>
1425
1424
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a3550ea3f087ec557a6fe076bc443b05d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">SVF::PointerAnalysis::print_stat</a></div><div class="ttdeci">bool print_stat</div><div class="ttdoc">User input flags. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00134">PointerAnalysis.h:134</a></div></div>
1426
1425
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">SVF::PointerAnalysis::TypeCPP_WPA</a></div><div class="ttdoc">Type-based analysis for C++. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00081">PointerAnalysis.h:81</a></div></div>
1427
1426
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
1427
+ <div class="ttc" id="classSVF_1_1Options_html_ae3c3cc703ef35987a32aa808038a1307"><div class="ttname"><a href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">SVF::Options::ptDataBacking</a></div><div class="ttdeci">static const OptionMap&lt; BVDataPTAImpl::PTBackingType &gt; ptDataBacking</div><div class="ttdoc">PTData type. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00069">Options.h:69</a></div></div>
1428
1428
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322">SVF::PointerAnalysis::FSDATAFLOW_WPA</a></div><div class="ttdoc">Traditional Dataflow-based flow sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00074">PointerAnalysis.h:74</a></div></div>
1429
1429
  </div><!-- fragment -->
1430
1430
  </div>
@@ -591,12 +591,12 @@ Additional Inherited Members</h2></td></tr>
591
591
  <p>Reimplemented from <a class="el" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">SVF::SVFStmt</a>.</p>
592
592
 
593
593
  <p class="definition">Definition at line <a class="el" href="SVFStatements_8cpp_source.html#l00143">143</a> of file <a class="el" href="SVFStatements_8cpp_source.html">SVFStatements.cpp</a>.</p>
594
- <div class="fragment"><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BinaryOPStmt: [Var&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>() &lt;&lt; <span class="stringliteral">&quot; &lt;-- (Var&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0) &lt;&lt; <span class="stringliteral">&quot; opcode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>() &lt;&lt; <span class="stringliteral">&quot; Var&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1) &lt;&lt; <span class="stringliteral">&quot;)]\t&quot;</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a63c2ff1420867ea4ef0a94d28b3f0558">Options::ShowSVFIRValue</a>)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1SVFStmt.html#abb784290c90d26f35897fa15bae277d2">getValue</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">toString</a>();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;}</div><div class="ttc" id="classSVF_1_1BinaryOPStmt_html_ad0a7c5e87355d7a83176343322db448f"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">SVF::BinaryOPStmt::getOpcode</a></div><div class="ttdeci">u32_t getOpcode() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00876">SVFStatements.h:876</a></div></div>
594
+ <div class="fragment"><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BinaryOPStmt: [Var&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>() &lt;&lt; <span class="stringliteral">&quot; &lt;-- (Var&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0) &lt;&lt; <span class="stringliteral">&quot; opcode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>() &lt;&lt; <span class="stringliteral">&quot; Var&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1) &lt;&lt; <span class="stringliteral">&quot;)]\t&quot;</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a424a44f39a43b22434dbdce26007a353">Options::ShowSVFIRValue</a>())</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1SVFStmt.html#abb784290c90d26f35897fa15bae277d2">getValue</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">toString</a>();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;}</div><div class="ttc" id="classSVF_1_1BinaryOPStmt_html_ad0a7c5e87355d7a83176343322db448f"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">SVF::BinaryOPStmt::getOpcode</a></div><div class="ttdeci">u32_t getOpcode() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00876">SVFStatements.h:876</a></div></div>
595
595
  <div class="ttc" id="classSVF_1_1SVFValue_html_aa678ca4616a3e69b53726b33d0b9c5a2"><div class="ttname"><a href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">SVF::SVFValue::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdoc">Needs to be implemented by a specific SVF front end (e.g., the implementation in LLVMUtil) ...</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00680">LLVMUtil.cpp:680</a></div></div>
596
596
  <div class="ttc" id="classSVF_1_1SVFStmt_html_abb784290c90d26f35897fa15bae277d2"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#abb784290c90d26f35897fa15bae277d2">SVF::SVFStmt::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00120">SVFStatements.h:120</a></div></div>
597
- <div class="ttc" id="classSVF_1_1Options_html_a63c2ff1420867ea4ef0a94d28b3f0558"><div class="ttname"><a href="classSVF_1_1Options.html#a63c2ff1420867ea4ef0a94d28b3f0558">SVF::Options::ShowSVFIRValue</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ShowSVFIRValue</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00135">Options.h:135</a></div></div>
598
597
  <div class="ttc" id="classSVF_1_1MultiOpndStmt_html_a71a530eb9fa9f7e273e471b4a75a039e"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">SVF::MultiOpndStmt::getResID</a></div><div class="ttdeci">NodeID getResID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00287">SVFStatements.cpp:287</a></div></div>
599
598
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
599
+ <div class="ttc" id="classSVF_1_1Options_html_a424a44f39a43b22434dbdce26007a353"><div class="ttname"><a href="classSVF_1_1Options.html#a424a44f39a43b22434dbdce26007a353">SVF::Options::ShowSVFIRValue</a></div><div class="ttdeci">static const Option&lt; bool &gt; ShowSVFIRValue</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00135">Options.h:135</a></div></div>
600
600
  <div class="ttc" id="classSVF_1_1MultiOpndStmt_html_a5c6efcc023e90ef2e618586091958c59"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">SVF::MultiOpndStmt::getOpVarID</a></div><div class="ttdeci">NodeID getOpVarID(u32_t pos) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00282">SVFStatements.cpp:282</a></div></div>
601
601
  </div><!-- fragment -->
602
602
  </div>
@@ -875,16 +875,16 @@ Additional Inherited Members</h2></td></tr>
875
875
  <p>Reimplemented from <a class="el" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">SVF::SVFStmt</a>.</p>
876
876
 
877
877
  <p class="definition">Definition at line <a class="el" href="SVFStatements_8cpp_source.html#l00169">169</a> of file <a class="el" href="SVFStatements_8cpp_source.html">SVFStatements.cpp</a>.</p>
878
- <div class="fragment"><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;{</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BranchStmt.html#a71e7e95f095a937c900d049991312901">isConditional</a>())</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BranchStmt: [Condition Var&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">getCondition</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BranchStmt: [&quot;</span> &lt;&lt; <span class="stringliteral">&quot; Unconditional branch&quot;</span> &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; <a class="code" href="classSVF_1_1BranchStmt.html#a022d355bde3d0d0a9471cd125b24583b">getNumSuccessors</a>(); i++)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Successor &quot;</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">&quot; ICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(i)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a63c2ff1420867ea4ef0a94d28b3f0558">Options::ShowSVFIRValue</a>)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1SVFStmt.html#abb784290c90d26f35897fa15bae277d2">getValue</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">toString</a>();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;}</div><div class="ttc" id="classSVF_1_1BranchStmt_html_a71e7e95f095a937c900d049991312901"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a71e7e95f095a937c900d049991312901">SVF::BranchStmt::isConditional</a></div><div class="ttdeci">bool isConditional() const</div><div class="ttdoc">The branch is conditional if cond is not a null value. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00315">SVFStatements.cpp:315</a></div></div>
878
+ <div class="fragment"><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;{</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BranchStmt.html#a71e7e95f095a937c900d049991312901">isConditional</a>())</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BranchStmt: [Condition Var&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">getCondition</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BranchStmt: [&quot;</span> &lt;&lt; <span class="stringliteral">&quot; Unconditional branch&quot;</span> &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; <a class="code" href="classSVF_1_1BranchStmt.html#a022d355bde3d0d0a9471cd125b24583b">getNumSuccessors</a>(); i++)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Successor &quot;</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">&quot; ICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(i)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a424a44f39a43b22434dbdce26007a353">Options::ShowSVFIRValue</a>())</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1SVFStmt.html#abb784290c90d26f35897fa15bae277d2">getValue</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">toString</a>();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;}</div><div class="ttc" id="classSVF_1_1BranchStmt_html_a71e7e95f095a937c900d049991312901"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a71e7e95f095a937c900d049991312901">SVF::BranchStmt::isConditional</a></div><div class="ttdeci">bool isConditional() const</div><div class="ttdoc">The branch is conditional if cond is not a null value. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00315">SVFStatements.cpp:315</a></div></div>
879
879
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
880
880
  <div class="ttc" id="classSVF_1_1BranchStmt_html_a7d9a6ebb2d95942c453864b5327b1ae8"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">SVF::BranchStmt::getSuccessor</a></div><div class="ttdeci">const ICFGNode * getSuccessor(u32_t i) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01012">SVFStatements.h:1012</a></div></div>
881
881
  <div class="ttc" id="classSVF_1_1SVFValue_html_aa678ca4616a3e69b53726b33d0b9c5a2"><div class="ttname"><a href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">SVF::SVFValue::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdoc">Needs to be implemented by a specific SVF front end (e.g., the implementation in LLVMUtil) ...</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00680">LLVMUtil.cpp:680</a></div></div>
882
882
  <div class="ttc" id="classSVF_1_1SVFStmt_html_abb784290c90d26f35897fa15bae277d2"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#abb784290c90d26f35897fa15bae277d2">SVF::SVFStmt::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00120">SVFStatements.h:120</a></div></div>
883
883
  <div class="ttc" id="classSVF_1_1BranchStmt_html_a915384027ae53e99311f05a08edf99f0"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">SVF::BranchStmt::getCondition</a></div><div class="ttdeci">const SVFVar * getCondition() const</div><div class="ttdoc">Return the condition. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00320">SVFStatements.cpp:320</a></div></div>
884
884
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00171">GenericGraph.h:171</a></div></div>
885
- <div class="ttc" id="classSVF_1_1Options_html_a63c2ff1420867ea4ef0a94d28b3f0558"><div class="ttname"><a href="classSVF_1_1Options.html#a63c2ff1420867ea4ef0a94d28b3f0558">SVF::Options::ShowSVFIRValue</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ShowSVFIRValue</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00135">Options.h:135</a></div></div>
886
885
  <div class="ttc" id="classSVF_1_1BranchStmt_html_a022d355bde3d0d0a9471cd125b24583b"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a022d355bde3d0d0a9471cd125b24583b">SVF::BranchStmt::getNumSuccessors</a></div><div class="ttdeci">u32_t getNumSuccessors() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01004">SVFStatements.h:1004</a></div></div>
887
886
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
887
+ <div class="ttc" id="classSVF_1_1Options_html_a424a44f39a43b22434dbdce26007a353"><div class="ttname"><a href="classSVF_1_1Options.html#a424a44f39a43b22434dbdce26007a353">SVF::Options::ShowSVFIRValue</a></div><div class="ttdeci">static const Option&lt; bool &gt; ShowSVFIRValue</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00135">Options.h:135</a></div></div>
888
888
  </div><!-- fragment -->
889
889
  </div>
890
890
  </div>