svf-tools 1.0.418 → 1.0.421

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 (260) hide show
  1. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +14 -14
  3. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/Conditions_8cpp.html +0 -1
  5. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +58 -49
  6. package/SVF-doxygen/html/html/Conditions_8h.html +6 -2
  7. package/SVF-doxygen/html/html/Conditions_8h_source.html +68 -60
  8. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  9. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
  12. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
  13. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
  14. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
  15. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
  27. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/html/Options_8cpp_source.html +114 -113
  29. package/SVF-doxygen/html/html/Options_8h.html +1 -0
  30. package/SVF-doxygen/html/html/Options_8h_source.html +117 -115
  31. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +41 -23
  33. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +74 -74
  34. package/SVF-doxygen/html/html/PathDPItem_8h_source.html +7 -7
  35. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +4 -4
  36. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +12 -12
  37. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +13 -13
  40. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  41. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +4 -4
  42. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
  43. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +3 -3
  44. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  45. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +4 -4
  48. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +3 -3
  49. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +3 -3
  50. package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
  51. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  52. package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
  53. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  54. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
  55. package/SVF-doxygen/html/html/annotated.html +7 -5
  56. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  57. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +23 -25
  58. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +6 -6
  59. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +1 -1
  60. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +1 -1
  61. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -0
  62. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +2 -6
  63. package/SVF-doxygen/html/html/classSVF_1_1BDDExpr-members.html +92 -0
  64. package/SVF-doxygen/html/html/classSVF_1_1BDDExpr.html +304 -0
  65. package/SVF-doxygen/html/html/classSVF_1_1BDDExpr.png +0 -0
  66. package/SVF-doxygen/html/html/classSVF_1_1BDDManager-members.html +124 -0
  67. package/SVF-doxygen/html/html/classSVF_1_1BDDManager.html +1139 -0
  68. package/SVF-doxygen/html/html/classSVF_1_1BDDManager.png +0 -0
  69. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +5 -5
  70. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  71. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
  72. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
  73. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1CondExpr-members.html +5 -8
  76. package/SVF-doxygen/html/html/classSVF_1_1CondExpr.html +22 -151
  77. package/SVF-doxygen/html/html/classSVF_1_1CondExpr.png +0 -0
  78. package/SVF-doxygen/html/html/classSVF_1_1CondManager-members.html +25 -36
  79. package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +276 -605
  80. package/SVF-doxygen/html/html/classSVF_1_1CondManager.png +0 -0
  81. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
  82. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  83. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
  84. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
  85. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  86. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  87. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +9 -9
  88. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +7 -7
  89. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
  94. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
  95. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  96. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  98. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
  99. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  101. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +3 -3
  102. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +6 -6
  103. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +2 -2
  105. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +6 -6
  107. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  108. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +103 -102
  110. package/SVF-doxygen/html/html/classSVF_1_1Options.html +141 -115
  111. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +3 -3
  112. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +1 -1
  113. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +189 -196
  114. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  115. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +13 -13
  116. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +20 -20
  118. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +5 -5
  120. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +5 -5
  121. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +4 -4
  122. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +5 -5
  123. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +8 -8
  125. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  126. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +3 -3
  127. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
  128. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +2 -2
  129. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  132. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  135. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
  136. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +11 -11
  137. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr-members.html +95 -0
  138. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +396 -0
  139. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.png +0 -0
  140. package/SVF-doxygen/html/html/classSVF_1_1Z3Manager-members.html +122 -0
  141. package/SVF-doxygen/html/html/classSVF_1_1Z3Manager.html +1066 -0
  142. package/SVF-doxygen/html/html/classSVF_1_1Z3Manager.png +0 -0
  143. package/SVF-doxygen/html/html/classes.html +12 -11
  144. package/SVF-doxygen/html/html/functions_0x7e.html +9 -3
  145. package/SVF-doxygen/html/html/functions_a.html +4 -6
  146. package/SVF-doxygen/html/html/functions_b.html +33 -34
  147. package/SVF-doxygen/html/html/functions_c.html +43 -32
  148. package/SVF-doxygen/html/html/functions_d.html +5 -4
  149. package/SVF-doxygen/html/html/functions_e.html +8 -7
  150. package/SVF-doxygen/html/html/functions_enum.html +3 -0
  151. package/SVF-doxygen/html/html/functions_eval_b.html +6 -3
  152. package/SVF-doxygen/html/html/functions_eval_z.html +79 -0
  153. package/SVF-doxygen/html/html/functions_f.html +3 -3
  154. package/SVF-doxygen/html/html/functions_func.html +8 -7
  155. package/SVF-doxygen/html/html/functions_func_0x7e.html +9 -3
  156. package/SVF-doxygen/html/html/functions_func_b.html +10 -10
  157. package/SVF-doxygen/html/html/functions_func_c.html +23 -20
  158. package/SVF-doxygen/html/html/functions_func_d.html +5 -4
  159. package/SVF-doxygen/html/html/functions_func_e.html +3 -2
  160. package/SVF-doxygen/html/html/functions_func_g.html +33 -24
  161. package/SVF-doxygen/html/html/functions_func_i.html +17 -11
  162. package/SVF-doxygen/html/html/functions_func_n.html +4 -3
  163. package/SVF-doxygen/html/html/functions_func_o.html +4 -3
  164. package/SVF-doxygen/html/html/functions_func_p.html +3 -3
  165. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  166. package/SVF-doxygen/html/html/functions_func_z.html +79 -0
  167. package/SVF-doxygen/html/html/functions_g.html +35 -26
  168. package/SVF-doxygen/html/html/functions_i.html +30 -15
  169. package/SVF-doxygen/html/html/functions_l.html +8 -8
  170. package/SVF-doxygen/html/html/functions_m.html +1 -1
  171. package/SVF-doxygen/html/html/functions_n.html +4 -3
  172. package/SVF-doxygen/html/html/functions_o.html +9 -14
  173. package/SVF-doxygen/html/html/functions_p.html +10 -10
  174. package/SVF-doxygen/html/html/functions_r.html +7 -7
  175. package/SVF-doxygen/html/html/functions_rela.html +4 -0
  176. package/SVF-doxygen/html/html/functions_s.html +13 -15
  177. package/SVF-doxygen/html/html/functions_t.html +1 -3
  178. package/SVF-doxygen/html/html/functions_type_b.html +5 -6
  179. package/SVF-doxygen/html/html/functions_type_c.html +1 -1
  180. package/SVF-doxygen/html/html/functions_type_i.html +4 -1
  181. package/SVF-doxygen/html/html/functions_type_z.html +77 -0
  182. package/SVF-doxygen/html/html/functions_v.html +3 -3
  183. package/SVF-doxygen/html/html/functions_vars_a.html +0 -3
  184. package/SVF-doxygen/html/html/functions_vars_b.html +6 -9
  185. package/SVF-doxygen/html/html/functions_vars_c.html +5 -2
  186. package/SVF-doxygen/html/html/functions_vars_e.html +1 -1
  187. package/SVF-doxygen/html/html/functions_vars_i.html +6 -0
  188. package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
  189. package/SVF-doxygen/html/html/functions_vars_n.html +1 -1
  190. package/SVF-doxygen/html/html/functions_vars_s.html +1 -1
  191. package/SVF-doxygen/html/html/functions_z.html +16 -0
  192. package/SVF-doxygen/html/html/hierarchy.html +436 -434
  193. package/SVF-doxygen/html/html/menudata.js +5 -2
  194. package/SVF-doxygen/html/html/namespaceSVF.html +8 -4
  195. package/SVF-doxygen/html/html/search/all_1.js +1 -2
  196. package/SVF-doxygen/html/html/search/all_10.js +11 -11
  197. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  198. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  199. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  200. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  201. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  202. package/SVF-doxygen/html/html/search/all_1a.js +5 -0
  203. package/SVF-doxygen/html/html/search/all_1b.js +5 -3
  204. package/SVF-doxygen/html/html/search/all_2.js +10 -9
  205. package/SVF-doxygen/html/html/search/all_3.js +9 -7
  206. package/SVF-doxygen/html/html/search/all_4.js +3 -3
  207. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  208. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  209. package/SVF-doxygen/html/html/search/all_7.js +13 -11
  210. package/SVF-doxygen/html/html/search/all_9.js +8 -6
  211. package/SVF-doxygen/html/html/search/all_c.js +5 -5
  212. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  213. package/SVF-doxygen/html/html/search/all_e.js +4 -4
  214. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  215. package/SVF-doxygen/html/html/search/classes_1.js +2 -2
  216. package/SVF-doxygen/html/html/search/classes_14.html +26 -0
  217. package/SVF-doxygen/html/html/search/classes_14.js +5 -0
  218. package/SVF-doxygen/html/html/search/enums_1.js +1 -0
  219. package/SVF-doxygen/html/html/search/enumvalues_1.js +2 -1
  220. package/SVF-doxygen/html/html/search/enumvalues_14.html +26 -0
  221. package/SVF-doxygen/html/html/search/enumvalues_14.js +5 -0
  222. package/SVF-doxygen/html/html/search/functions_0.js +1 -1
  223. package/SVF-doxygen/html/html/search/functions_1.js +5 -5
  224. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  225. package/SVF-doxygen/html/html/search/functions_15.js +2 -0
  226. package/SVF-doxygen/html/html/search/functions_16.js +5 -3
  227. package/SVF-doxygen/html/html/search/functions_2.js +5 -5
  228. package/SVF-doxygen/html/html/search/functions_3.js +3 -3
  229. package/SVF-doxygen/html/html/search/functions_4.js +1 -1
  230. package/SVF-doxygen/html/html/search/functions_6.js +13 -11
  231. package/SVF-doxygen/html/html/search/functions_8.js +4 -4
  232. package/SVF-doxygen/html/html/search/functions_c.js +1 -1
  233. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  234. package/SVF-doxygen/html/html/search/functions_e.js +4 -4
  235. package/SVF-doxygen/html/html/search/related_0.js +2 -1
  236. package/SVF-doxygen/html/html/search/searchdata.js +3 -3
  237. package/SVF-doxygen/html/html/search/typedefs_1.js +2 -2
  238. package/SVF-doxygen/html/html/search/typedefs_16.html +26 -0
  239. package/SVF-doxygen/html/html/search/typedefs_16.js +4 -0
  240. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  241. package/SVF-doxygen/html/html/search/typedefs_8.js +2 -1
  242. package/SVF-doxygen/html/html/search/variables_1.js +0 -1
  243. package/SVF-doxygen/html/html/search/variables_13.js +1 -1
  244. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  245. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  246. package/SVF-doxygen/html/html/search/variables_2.js +2 -3
  247. package/SVF-doxygen/html/html/search/variables_3.js +2 -1
  248. package/SVF-doxygen/html/html/search/variables_5.js +1 -1
  249. package/SVF-doxygen/html/html/search/variables_9.js +2 -0
  250. package/SVF-doxygen/html/html/search/variables_d.js +2 -2
  251. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  252. package/include/SABER/PathCondAllocator.h +2 -3
  253. package/include/Util/Conditions.h +272 -166
  254. package/include/Util/Options.h +4 -0
  255. package/index.html +2 -0
  256. package/lib/SABER/PathCondAllocator.cpp +3 -0
  257. package/lib/Util/Conditions.cpp +245 -209
  258. package/lib/Util/Options.cpp +11 -0
  259. package/lib/WPA/Andersen.cpp +10 -9
  260. package/package.json +1 -1
@@ -1516,7 +1516,7 @@ Private Attributes</h2></td></tr>
1516
1516
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00219">BasicTypes.h:219</a></div></div>
1517
1517
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_af4b18e8e1fdfb117cb5dd1a81cea4b71"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#af4b18e8e1fdfb117cb5dd1a81cea4b71">SVF::SVFIRBuilder::initialiseNodes</a></div><div class="ttdeci">void initialiseNodes()</div><div class="ttdoc">Initialize nodes and edges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00142">SVFIRBuilder.cpp:142</a></div></div>
1518
1518
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a09baa8c7246853c3faaed85b38f0da60"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60">SVF::SVFIRBuilder::sanityCheck</a></div><div class="ttdeci">void sanityCheck()</div><div class="ttdoc">Sanity check for SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01524">SVFIRBuilder.cpp:1524</a></div></div>
1519
- <div class="ttc" id="classSVF_1_1Options_html_a3a20311c732fb391332ae0ee1cb450a0"><div class="ttname"><a href="classSVF_1_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">SVF::Options::PAGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PAGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00133">Options.h:133</a></div></div>
1519
+ <div class="ttc" id="classSVF_1_1Options_html_a3a20311c732fb391332ae0ee1cb450a0"><div class="ttname"><a href="classSVF_1_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">SVF::Options::PAGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PAGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00134">Options.h:134</a></div></div>
1520
1520
  <div class="ttc" id="classSVF_1_1SVFIR_html_ac27b9eedd489f13175c010a32203abae"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac27b9eedd489f13175c010a32203abae">SVF::SVFIR::addFunArgs</a></div><div class="ttdeci">void addFunArgs(const SVFFunction *fun, const SVFVar *arg)</div><div class="ttdoc">Get/set method for function/callsite arguments and returns. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00462">SVFIR.h:462</a></div></div>
1521
1521
  <div class="ttc" id="classSVF_1_1SVFIR_html_af6a2c401d5c7582a4a958b1fe40838e5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">SVF::SVFIR::initialiseCandidatePointers</a></div><div class="ttdeci">void initialiseCandidatePointers()</div><div class="ttdoc">Initialize candidate pointers. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00678">SVFIR.cpp:678</a></div></div>
1522
1522
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a15105737c91d01ba9daf2161fad220ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">SVF::SVFIRBuilder::setCurrentLocation</a></div><div class="ttdeci">void setCurrentLocation(const Value *val, const BasicBlock *bb)</div><div class="ttdoc">Set current basic block in order to keep track of control flow information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00247">SVFIRBuilder.h:247</a></div></div>
@@ -1530,8 +1530,8 @@ Private Attributes</h2></td></tr>
1530
1530
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa67bbd366b93fb1ec7a540c83566c977"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa67bbd366b93fb1ec7a540c83566c977">SVF::SVFIRBuilder::svfMod</a></div><div class="ttdeci">SVFModule * svfMod</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00050">SVFIRBuilder.h:50</a></div></div>
1531
1531
  <div class="ttc" id="classSVF_1_1ICFG_html_a999956500bbd605326531480546db9ba"><div class="ttname"><a href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">SVF::ICFG::dump</a></div><div class="ttdeci">void dump(const std::string &amp;file, bool simple=false)</div><div class="ttdoc">Dump graph into dot file. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00410">ICFG.cpp:410</a></div></div>
1532
1532
  <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00235">BasicTypes.h:235</a></div></div>
1533
- <div class="ttc" id="classSVF_1_1Options_html_aea29a835c54fab800117e57de00e0b1e"><div class="ttname"><a href="classSVF_1_1Options.html#aea29a835c54fab800117e57de00e0b1e">SVF::Options::DumpICFG</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; DumpICFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00135">Options.h:135</a></div></div>
1534
- <div class="ttc" id="classSVF_1_1Options_html_a98df022c5da54ea30b3f0ce008d3ca80"><div class="ttname"><a href="classSVF_1_1Options.html#a98df022c5da54ea30b3f0ce008d3ca80">SVF::Options::PAGPrint</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PAGPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00137">Options.h:137</a></div></div>
1533
+ <div class="ttc" id="classSVF_1_1Options_html_aea29a835c54fab800117e57de00e0b1e"><div class="ttname"><a href="classSVF_1_1Options.html#aea29a835c54fab800117e57de00e0b1e">SVF::Options::DumpICFG</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; DumpICFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00136">Options.h:136</a></div></div>
1534
+ <div class="ttc" id="classSVF_1_1Options_html_a98df022c5da54ea30b3f0ce008d3ca80"><div class="ttname"><a href="classSVF_1_1Options.html#a98df022c5da54ea30b3f0ce008d3ca80">SVF::Options::PAGPrint</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PAGPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00138">Options.h:138</a></div></div>
1535
1535
  <div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00155">SVFModule.h:155</a></div></div>
1536
1536
  <div class="ttc" id="classSVF_1_1SVFModule_html_a709371b13dcf500277f8bc275bdb23c7"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVF::SVFModule::iterator</a></div><div class="ttdeci">FunctionSetType::iterator iterator</div><div class="ttdoc">Iterators type def. </div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00051">SVFModule.h:51</a></div></div>
1537
1537
  <div class="ttc" id="classSVF_1_1IRGraph_html_a5fe12445ed0528183775747dec356db0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a5fe12445ed0528183775747dec356db0">SVF::IRGraph::setNodeNumAfterPAGBuild</a></div><div class="ttdeci">void setNodeNumAfterPAGBuild(u32_t num)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00181">IRGraph.h:181</a></div></div>
@@ -2391,7 +2391,7 @@ Private Attributes</h2></td></tr>
2391
2391
 
2392
2392
  <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00443">443</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2393
2393
  <div class="fragment"><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;{</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;global &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(gvar) &lt;&lt; <span class="stringliteral">&quot; constant initializer: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(C) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>); </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span> (C-&gt;getType()-&gt;isSingleValueType())</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(C);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="comment">// get the field value if it is avaiable, otherwise we create a dummy field node.</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(gvar, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> field = <a class="code" href="classSVF_1_1SVFIRBuilder.html#afd86b94574632e927a5764df74f9e555">getGlobalVarField</a>(gvar, offset, C-&gt;getType());</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalVariable&gt;(C) || SVFUtil::isa&lt;Function&gt;(C))</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantExpr&gt;(C))</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="comment">// add gep edge of C1 itself is a constant expression</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(C);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;BlockAddress&gt;(C))</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="comment">// blockaddress instruction (e.g. i8* blockaddress(@run_vm, %182))</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="comment">// is treated as constant data object for now, see LLVMUtil.h:397, SymbolTableInfo.cpp:674 and SVFIRBuilder.cpp:183-194</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(C);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">getConstantNode</a>(), src);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (C-&gt;getType()-&gt;isPtrOrPtrVectorTy() &amp;&amp; src != <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>())</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>(), src);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantArray&gt;(C) || SVFUtil::isa&lt;ConstantStruct&gt;(C))</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C-&gt;getNumOperands(); i != e; i++){</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">getFlattenedElemIdx</a>(C-&gt;getType(), i);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)), offset + off);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* data = SVFUtil::dyn_cast&lt;ConstantData&gt;(C))</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">Options::ModelConsts</a>){</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a>* seq = SVFUtil::dyn_cast&lt;ConstantDataSequential&gt;(data)){</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; seq-&gt;getNumElements(); i++){</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">getFlattenedElemIdx</a>(C-&gt;getType(), i);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ct = seq-&gt;getElementAsConstant(i);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, ct, offset + off);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, data, offset);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="comment">//TODO:assert(SVFUtil::isa&lt;ConstantVector&gt;(C),&quot;what else do we have&quot;);</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a2a0711cb1fdd3c5c90b07ff107aff1ac"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">SVF::SVFIRBuilder::addAddrEdge</a></div><div class="ttdeci">AddrStmt * addAddrEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Address edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00294">SVFIRBuilder.h:294</a></div></div>
2394
- <div class="ttc" id="classSVF_1_1Options_html_a5c051cf6a93a87a07aa1d31e302a2877"><div class="ttname"><a href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">SVF::Options::ModelConsts</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ModelConsts</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00213">Options.h:213</a></div></div>
2394
+ <div class="ttc" id="classSVF_1_1Options_html_a5c051cf6a93a87a07aa1d31e302a2877"><div class="ttname"><a href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">SVF::Options::ModelConsts</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ModelConsts</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00214">Options.h:214</a></div></div>
2395
2395
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00086">SVFIRBuilder.h:86</a></div></div>
2396
2396
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
2397
2397
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a8fc42c2b02317621d6aeb3c5f52d3ee8"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">SVF::SymbolTableInfo::getFlattenedElemIdx</a></div><div class="ttdeci">u32_t getFlattenedElemIdx(const Type *T, u32_t origId)</div><div class="ttdoc">Flatterned element idx of an array or struct by considering stride. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00407">SymbolTableInfo.cpp:407</a></div></div>
@@ -2700,7 +2700,7 @@ Private Attributes</h2></td></tr>
2700
2700
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
2701
2701
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
2702
2702
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00219">BasicTypes.h:219</a></div></div>
2703
- <div class="ttc" id="classSVF_1_1Options_html_a3a20311c732fb391332ae0ee1cb450a0"><div class="ttname"><a href="classSVF_1_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">SVF::Options::PAGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PAGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00133">Options.h:133</a></div></div>
2703
+ <div class="ttc" id="classSVF_1_1Options_html_a3a20311c732fb391332ae0ee1cb450a0"><div class="ttname"><a href="classSVF_1_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">SVF::Options::PAGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PAGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00134">Options.h:134</a></div></div>
2704
2704
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a15105737c91d01ba9daf2161fad220ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">SVF::SVFIRBuilder::setCurrentLocation</a></div><div class="ttdeci">void setCurrentLocation(const Value *val, const BasicBlock *bb)</div><div class="ttdoc">Set current basic block in order to keep track of control flow information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00247">SVFIRBuilder.h:247</a></div></div>
2705
2705
  <div class="ttc" id="classSVF_1_1CallICFGNode_html_aa11226a2e4fa6a7b1d78006cc8ca0518"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#aa11226a2e4fa6a7b1d78006cc8ca0518">SVF::CallICFGNode::isIndirectCall</a></div><div class="ttdeci">bool isIndirectCall() const</div><div class="ttdoc">Return true if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00412">ICFGNode.h:412</a></div></div>
2706
2706
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aff08d65b1411d1db81f80b9d4228c65d"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aff08d65b1411d1db81f80b9d4228c65d">SVF::SVFIRBuilder::handleExtCall</a></div><div class="ttdeci">virtual void handleExtCall(CallSite cs, const SVFFunction *F)</div><div class="ttdoc">Handle external call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01069">SVFIRBuilder.cpp:1069</a></div></div>
@@ -656,7 +656,7 @@ Additional Inherited Members</h2></td></tr>
656
656
  <div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
657
657
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00390">SVFUtil.cpp:390</a></div></div>
658
658
  <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#l00165">GenericGraph.h:165</a></div></div>
659
- <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#l00134">Options.h:134</a></div></div>
659
+ <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>
660
660
  <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#l00255">SVFStatements.cpp:255</a></div></div>
661
661
  </div><!-- fragment -->
662
662
  </div>
@@ -803,8 +803,8 @@ Private Attributes</h2></td></tr>
803
803
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a8883b9a42106ed8c55835d2ba9a579cd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a8883b9a42106ed8c55835d2ba9a579cd">SVF::SrcSnkDDA::initialize</a></div><div class="ttdeci">virtual void initialize(SVFModule *module)</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00042">SrcSnkDDA.cpp:42</a></div></div>
804
804
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad6935e27bbd95d26a01b22b879efed58"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVF::SrcSnkDDA::SVFGNodeSetIter</a></div><div class="ttdeci">SVFGNodeSet::const_iterator SVFGNodeSetIter</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00052">SrcSnkDDA.h:52</a></div></div>
805
805
  <div class="ttc" id="SVFBasicTypes_8h_html_a817abc424f7cfcdec5954c7807970f36"><div class="ttname"><a href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a></div><div class="ttdeci">#define DSaber</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00170">SVFBasicTypes.h:170</a></div></div>
806
- <div class="ttc" id="classSVF_1_1Options_html_a21cbaab292e9f5bd39109f774fcc88d4"><div class="ttname"><a href="classSVF_1_1Options.html#a21cbaab292e9f5bd39109f774fcc88d4">SVF::Options::CxtLimit</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &gt; CxtLimit</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00199">Options.h:199</a></div></div>
807
- <div class="ttc" id="classSVF_1_1Options_html_ace1f2368a0a466f98c9e53def47db3ab"><div class="ttname"><a href="classSVF_1_1Options.html#ace1f2368a0a466f98c9e53def47db3ab">SVF::Options::DumpSlice</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; DumpSlice</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00198">Options.h:198</a></div></div>
806
+ <div class="ttc" id="classSVF_1_1Options_html_a21cbaab292e9f5bd39109f774fcc88d4"><div class="ttname"><a href="classSVF_1_1Options.html#a21cbaab292e9f5bd39109f774fcc88d4">SVF::Options::CxtLimit</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &gt; CxtLimit</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00200">Options.h:200</a></div></div>
807
+ <div class="ttc" id="classSVF_1_1Options_html_ace1f2368a0a466f98c9e53def47db3ab"><div class="ttname"><a href="classSVF_1_1Options.html#ace1f2368a0a466f98c9e53def47db3ab">SVF::Options::DumpSlice</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; DumpSlice</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00199">Options.h:199</a></div></div>
808
808
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a0515c9079f28f8c5d4f0f9a2fc39a137"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a0515c9079f28f8c5d4f0f9a2fc39a137">SVF::SrcSnkDDA::sourcesBegin</a></div><div class="ttdeci">SVFGNodeSetIter sourcesBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00200">SrcSnkDDA.h:200</a></div></div>
809
809
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad50e479db8f0733326974709d6ffe653"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad50e479db8f0733326974709d6ffe653">SVF::SrcSnkDDA::getCurSlice</a></div><div class="ttdeci">ProgSlice * getCurSlice() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00140">SrcSnkDDA.h:140</a></div></div>
810
810
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
@@ -1036,7 +1036,7 @@ Private Attributes</h2></td></tr>
1036
1036
  <p>Dump <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> with annotated slice informaiton. </p>
1037
1037
 
1038
1038
  <p class="definition">Definition at line <a class="el" href="SrcSnkDDA_8cpp_source.html#l00295">295</a> of file <a class="el" href="SrcSnkDDA_8cpp_source.html">SrcSnkDDA.cpp</a>.</p>
1039
- <div class="fragment"><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;{</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ace1f2368a0a466f98c9e53def47db3ab">Options::DumpSlice</a>)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1SVFG.html">SVFG</a>*<span class="keyword">&gt;</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">getSVFG</a>())-&gt;dump(<span class="stringliteral">&quot;Slice&quot;</span>,<span class="keyword">true</span>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;}</div><div class="ttc" id="classSVF_1_1Options_html_ace1f2368a0a466f98c9e53def47db3ab"><div class="ttname"><a href="classSVF_1_1Options.html#ace1f2368a0a466f98c9e53def47db3ab">SVF::Options::DumpSlice</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; DumpSlice</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00198">Options.h:198</a></div></div>
1039
+ <div class="fragment"><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;{</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ace1f2368a0a466f98c9e53def47db3ab">Options::DumpSlice</a>)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1SVFG.html">SVFG</a>*<span class="keyword">&gt;</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">getSVFG</a>())-&gt;dump(<span class="stringliteral">&quot;Slice&quot;</span>,<span class="keyword">true</span>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;}</div><div class="ttc" id="classSVF_1_1Options_html_ace1f2368a0a466f98c9e53def47db3ab"><div class="ttname"><a href="classSVF_1_1Options.html#ace1f2368a0a466f98c9e53def47db3ab">SVF::Options::DumpSlice</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; DumpSlice</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00199">Options.h:199</a></div></div>
1040
1040
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a529b40c870c74309440f025e490bb161"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">SVF::SrcSnkDDA::getSVFG</a></div><div class="ttdeci">const SVFG * getSVFG() const</div><div class="ttdoc">Get SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00120">SrcSnkDDA.h:120</a></div></div>
1041
1041
  <div class="ttc" id="classSVF_1_1SVFG_html"><div class="ttname"><a href="classSVF_1_1SVFG.html">SVF::SVFG</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00065">SVFG.h:65</a></div></div>
1042
1042
  </div><!-- fragment -->
@@ -1455,14 +1455,14 @@ Private Attributes</h2></td></tr>
1455
1455
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a0f6cfa30c346aab1fb03a44e47c32559"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a0f6cfa30c346aab1fb03a44e47c32559">SVF::SrcSnkDDA::initSnks</a></div><div class="ttdeci">virtual void initSnks()=0</div></div>
1456
1456
  <div class="ttc" id="classSVF_1_1SVFGBuilder_html_a54a713e3989597b11cee70864d0197bd"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#a54a713e3989597b11cee70864d0197bd">SVF::SVFGBuilder::buildFullSVFG</a></div><div class="ttdeci">SVFG * buildFullSVFG(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8cpp_source.html#l00052">SVFGBuilder.cpp:52</a></div></div>
1457
1457
  <div class="ttc" id="classSVF_1_1AndersenWaveDiff_html"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html">SVF::AndersenWaveDiff</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00419">Andersen.h:419</a></div></div>
1458
- <div class="ttc" id="classSVF_1_1Options_html_a5fb7733fd66ecad30eea8ced3839e590"><div class="ttname"><a href="classSVF_1_1Options.html#a5fb7733fd66ecad30eea8ced3839e590">SVF::Options::SABERFULLSVFG</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; SABERFULLSVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00249">Options.h:249</a></div></div>
1458
+ <div class="ttc" id="classSVF_1_1Options_html_a5fb7733fd66ecad30eea8ced3839e590"><div class="ttname"><a href="classSVF_1_1Options.html#a5fb7733fd66ecad30eea8ced3839e590">SVF::Options::SABERFULLSVFG</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; SABERFULLSVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00250">Options.h:250</a></div></div>
1459
1459
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ab6803f0a2b3507213ad2979b9b12f700"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ab6803f0a2b3507213ad2979b9b12f700">SVF::SrcSnkDDA::memSSA</a></div><div class="ttdeci">SaberSVFGBuilder memSSA</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00069">SrcSnkDDA.h:69</a></div></div>
1460
1460
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a97be553370acf305f86e903bc3f0bb1a"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a97be553370acf305f86e903bc3f0bb1a">SVF::SrcSnkDDA::ptaCallGraph</a></div><div class="ttdeci">PTACallGraph * ptaCallGraph</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00071">SrcSnkDDA.h:71</a></div></div>
1461
1461
  <div class="ttc" id="classSVF_1_1SVFGBuilder_html_ab7353191edd06568e2598177d253c1d9"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#ab7353191edd06568e2598177d253c1d9">SVF::SVFGBuilder::buildPTROnlySVFG</a></div><div class="ttdeci">SVFG * buildPTROnlySVFG(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8cpp_source.html#l00044">SVFGBuilder.cpp:44</a></div></div>
1462
1462
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00178">PointerAnalysis.h:178</a></div></div>
1463
1463
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html">SVF::SVFIRBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00045">SVFIRBuilder.h:45</a></div></div>
1464
1464
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ae657ebdeae8a083cfec210859a0023e4"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ae657ebdeae8a083cfec210859a0023e4">SVF::SrcSnkDDA::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00070">SrcSnkDDA.h:70</a></div></div>
1465
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a3fce010083b85a4421eed4c17eb54640"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a3fce010083b85a4421eed4c17eb54640">SVF::PathCondAllocator::allocate</a></div><div class="ttdeci">void allocate(const SVFModule *module)</div><div class="ttdoc">Perform path allocation. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00051">PathCondAllocator.cpp:51</a></div></div>
1465
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a3fce010083b85a4421eed4c17eb54640"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a3fce010083b85a4421eed4c17eb54640">SVF::PathCondAllocator::allocate</a></div><div class="ttdeci">void allocate(const SVFModule *module)</div><div class="ttdoc">Perform path allocation. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00054">PathCondAllocator.cpp:54</a></div></div>
1466
1466
  <div class="ttc" id="classSVF_1_1AndersenWaveDiff_html_a48ff6fc4badc79ad3204ae9bd95cc540"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">SVF::AndersenWaveDiff::createAndersenWaveDiff</a></div><div class="ttdeci">static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00430">Andersen.h:430</a></div></div>
1467
1467
  <div class="ttc" id="classSVF_1_1SVFGBuilder_html_ad70dc4134a6290223b4168bde146b6d5"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#ad70dc4134a6290223b4168bde146b6d5">SVF::SVFGBuilder::getSVFG</a></div><div class="ttdeci">SVFG * getSVFG() const</div><div class="ttdoc">Get SVFG instance. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8h_source.html#l00087">SVFGBuilder.h:87</a></div></div>
1468
1468
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a4f37c66db2588cd691353a9ad1a4d5b1"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a4f37c66db2588cd691353a9ad1a4d5b1">SVF::SrcSnkDDA::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdoc">Get SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00114">SrcSnkDDA.h:114</a></div></div>
@@ -1622,7 +1622,7 @@ Private Attributes</h2></td></tr>
1622
1622
  <div class="fragment"><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;{</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordtype">bool</span> reachFunExit = <span class="keyword">false</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a3c0d8850c4dae49a760ce5f80fb8822a">WorkList</a> <a class="code" href="classSVF_1_1CFLSolver.html#a9d3cbcb9db049e3069b6553ab17ccf5b">worklist</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(src);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a70cff8ea7c033c01400935c9e446f2c6">SVFGNodeBS</a> visited;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> step = 0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = worklist.pop();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">if</span>(visited.test(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())==0)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; visited.set(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// reaching maximum steps when traversing on SVFG to identify a memory allocation wrapper</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (step++ &gt; <a class="code" href="classSVF_1_1Options.html#a0b82f16ee0c7e6566a6ae20662525e84">Options::MaxStepInWrapper</a>)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit =</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit; ++it)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = (*it);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">//assert(edge-&gt;isDirectVFGEdge() &amp;&amp; &quot;the edge should always be direct VF&quot;);</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// if this is a call edge</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a92e3da59f7f5a693945b9a93f169da04">isCallDirectVFGEdge</a>())</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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; <span class="comment">// if this is a return edge</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a49cbf2a714c9b965b19452d266cd8bdf">isRetDirectVFGEdge</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; reachFunExit = <span class="keyword">true</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; csIdSet.insert(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">getSVFG</a>()-&gt;getCallSite(SVFUtil::cast&lt;RetDirSVFGEdge&gt;(edge)-&gt;getCallSiteId()));</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// (1) an intra direct edge, we will keep tracking</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// (2) an intra indirect edge, we only track if the succ SVFGNode is a load, which means we only track one level store-load pair .</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">// (3) do not track for all other interprocedural edges.</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* succ = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraDirSVFGEdge&gt;(edge)){</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CopySVFGNode&gt;(succ) || SVFUtil::isa&lt;GepSVFGNode&gt;(succ)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; || SVFUtil::isa&lt;PHISVFGNode&gt;(succ) || SVFUtil::isa&lt;FormalRetSVFGNode&gt;(succ)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; || SVFUtil::isa&lt;ActualRetSVFGNode&gt;(succ) || SVFUtil::isa&lt;StoreSVFGNode&gt;(succ))</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; worklist.push(succ);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraIndSVFGEdge&gt;(edge))</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadSVFGNode&gt;(succ))</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; worklist.push(succ);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span>(reachFunExit)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00202">GenericGraph.h:202</a></div></div>
1623
1623
  <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="SVFBasicTypes_8h_source.html#l00077">SVFBasicTypes.h:77</a></div></div>
1624
1624
  <div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
1625
- <div class="ttc" id="classSVF_1_1Options_html_a0b82f16ee0c7e6566a6ae20662525e84"><div class="ttname"><a href="classSVF_1_1Options.html#a0b82f16ee0c7e6566a6ae20662525e84">SVF::Options::MaxStepInWrapper</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &gt; MaxStepInWrapper</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00096">Options.h:96</a></div></div>
1625
+ <div class="ttc" id="classSVF_1_1Options_html_a0b82f16ee0c7e6566a6ae20662525e84"><div class="ttname"><a href="classSVF_1_1Options.html#a0b82f16ee0c7e6566a6ae20662525e84">SVF::Options::MaxStepInWrapper</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &gt; MaxStepInWrapper</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00097">Options.h:97</a></div></div>
1626
1626
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a3c0d8850c4dae49a760ce5f80fb8822a"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a3c0d8850c4dae49a760ce5f80fb8822a">SVF::SrcSnkDDA::WorkList</a></div><div class="ttdeci">ProgSlice::VFWorkList WorkList</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00058">SrcSnkDDA.h:58</a></div></div>
1627
1627
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
1628
1628
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a70cff8ea7c033c01400935c9e446f2c6"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a70cff8ea7c033c01400935c9e446f2c6">SVF::SrcSnkDDA::SVFGNodeBS</a></div><div class="ttdeci">NodeBS SVFGNodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00057">SrcSnkDDA.h:57</a></div></div>
@@ -1872,9 +1872,9 @@ Private Attributes</h2></td></tr>
1872
1872
 
1873
1873
  <p class="definition">Definition at line <a class="el" href="SrcSnkDDA_8cpp_source.html#l00302">302</a> of file <a class="el" href="SrcSnkDDA_8cpp_source.html">SrcSnkDDA.cpp</a>.</p>
1874
1874
  <div class="fragment"><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;{</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;BDD Mem usage: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a1a6ae6b1f6864057067d0e5533ea801e">getPathAllocator</a>()-&gt;<a class="code" href="classSVF_1_1PathCondAllocator.html#ad6d58127299d87ae3c231065bb411557">getMemUsage</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;BDD Number: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a1a6ae6b1f6864057067d0e5533ea801e">getPathAllocator</a>()-&gt;<a class="code" href="classSVF_1_1PathCondAllocator.html#ae8f2447d33e2c638c1375f97ff3c3b40">getCondNum</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;}</div><div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a1a6ae6b1f6864057067d0e5533ea801e"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a1a6ae6b1f6864057067d0e5533ea801e">SVF::SrcSnkDDA::getPathAllocator</a></div><div class="ttdeci">PathCondAllocator * getPathAllocator() const</div><div class="ttdoc">Get path condition allocator. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00231">SrcSnkDDA.h:231</a></div></div>
1875
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad6d58127299d87ae3c231065bb411557"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad6d58127299d87ae3c231065bb411557">SVF::PathCondAllocator::getMemUsage</a></div><div class="ttdeci">std::string getMemUsage()</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00071">PathCondAllocator.h:71</a></div></div>
1875
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad6d58127299d87ae3c231065bb411557"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad6d58127299d87ae3c231065bb411557">SVF::PathCondAllocator::getMemUsage</a></div><div class="ttdeci">std::string getMemUsage()</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00070">PathCondAllocator.h:70</a></div></div>
1876
1876
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
1877
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae8f2447d33e2c638c1375f97ff3c3b40"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae8f2447d33e2c638c1375f97ff3c3b40">SVF::PathCondAllocator::getCondNum</a></div><div class="ttdeci">u32_t getCondNum()</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00075">PathCondAllocator.h:75</a></div></div>
1877
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae8f2447d33e2c638c1375f97ff3c3b40"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae8f2447d33e2c638c1375f97ff3c3b40">SVF::PathCondAllocator::getCondNum</a></div><div class="ttdeci">u32_t getCondNum()</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00074">PathCondAllocator.h:74</a></div></div>
1878
1878
  </div><!-- fragment -->
1879
1879
  </div>
1880
1880
  </div>
@@ -510,7 +510,7 @@ Additional Inherited Members</h2></td></tr>
510
510
  <div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
511
511
  <div class="ttc" id="classSVF_1_1AssignStmt_html_a98f731be7be9bc8e7fd09f5c2204c840"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">SVF::AssignStmt::getLHSVarID</a></div><div class="ttdeci">NodeID getLHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00256">SVFStatements.h:256</a></div></div>
512
512
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00390">SVFUtil.cpp:390</a></div></div>
513
- <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#l00134">Options.h:134</a></div></div>
513
+ <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>
514
514
  </div><!-- fragment -->
515
515
  </div>
516
516
  </div>
@@ -311,7 +311,7 @@ Private Attributes</h2></td></tr>
311
311
 
312
312
  <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00048">48</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
313
313
  <div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVFUtil::increaseStackSize</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; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a4f916c64ca04c4db30bd19fb8505724d">setModule</a>(svfModule);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Pointer #0 always represents the null pointer.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">SymbolTableInfo::NullPtr</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Pointer #1 always represents the pointer points-to black hole.</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">SymbolTableInfo::BlkPtr</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">// Object #2 is black hole the object that may point to any object</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">SymbolTableInfo::BlackHole</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a6ddf057415f641bd8ad15bded1415776">createBlkObj</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">SymbolTableInfo::BlackHole</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// Object #3 always represents the unique constant of a program (merging all constants if Options::ModelConsts is disabled)</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">SymbolTableInfo::ConstantObj</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5c9d593aa68c7150cd382db230eec3e">createConstantObj</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">SymbolTableInfo::ConstantObj</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="comment">// Add symbols for all the globals .</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a4cf1ca2e9f045a0520b0a8a6cd5993f2">SVFModule::global_iterator</a> I = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a4dc32c583d29d74d052eaa5665b0b70e">global_begin</a>(), E =</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">global_end</a>(); I != E; ++I)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(*I);</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;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">// Add symbols for all the global aliases</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#abee99d29b7d4c4915a386895c755009c">SVFModule::alias_iterator</a> I = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a7f2b4647c8d69c8328b63e576cb6d065">alias_begin</a>(), E =</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a3cfd0983849950099d1e8f8e0fda42bc">alias_end</a>(); I != E; I++)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(*I);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>((*I)-&gt;getAliasee());</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">// Add symbols for all of the functions and the instructions in them.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> F = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); F != E; ++F)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *F;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(fun);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f">collectRet</a>(fun);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (fun-&gt;getFunctionType()-&gt;isVarArg())</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#add1f3d59a4a8234fb398ed52d4b2115e">collectVararg</a>(fun);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// Add symbols for all formal parameters.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span> (Function::arg_iterator I = fun-&gt;arg_begin(), E = fun-&gt;arg_end();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; I != E; ++I)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(&amp;*I);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// collect and create symbols inside the function body</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(inst);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="comment">// initialization for some special instructions</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">//{@</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a> *st = SVFUtil::dyn_cast&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(st-&gt;getPointerOperand());</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(st-&gt;getValueOperand());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a> *ld = SVFUtil::dyn_cast&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(ld-&gt;getPointerOperand());</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">PHINode</a> *phi = SVFUtil::dyn_cast&lt;PHINode&gt;(inst))</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; phi-&gt;getNumIncomingValues(); ++i)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(phi-&gt;getIncomingValue(i));</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a> *gep = SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; inst))</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(gep-&gt;getPointerOperand());</div><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="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab7fac9d4a4839be445c89777e21bc307">SelectInst</a> *sel = SVFUtil::dyn_cast&lt;SelectInst&gt;(inst))</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sel-&gt;getTrueValue());</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sel-&gt;getFalseValue());</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sel-&gt;getCondition());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aad5d26ab07a5d1314bdb8f54e0fcdb22">BinaryOperator</a> *binary = SVFUtil::dyn_cast&lt;BinaryOperator&gt;(inst))</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; binary-&gt;getNumOperands(); i++)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(binary-&gt;getOperand(i));</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a292a6e8c5b4f2023b5575879c57eca62">UnaryOperator</a> *unary = SVFUtil::dyn_cast&lt;UnaryOperator&gt;(inst))</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="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; unary-&gt;getNumOperands(); i++)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(unary-&gt;getOperand(i));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">CmpInst</a> *cmp = SVFUtil::dyn_cast&lt;CmpInst&gt;(inst))</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; cmp-&gt;getNumOperands(); i++)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(cmp-&gt;getOperand(i));</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a> = SVFUtil::dyn_cast&lt;CastInst&gt;(inst))</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>-&gt;getOperand(0));</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">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac7dcc6103dee3a0bbc2fd2e02716a154">ReturnInst</a> *ret = SVFUtil::dyn_cast&lt;ReturnInst&gt;(inst))</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span>(ret-&gt;getReturnValue())</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(ret-&gt;getReturnValue());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a> *br = SVFUtil::dyn_cast&lt;BranchInst&gt;(inst))</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = br-&gt;isConditional() ? br-&gt;getCondition() : br-&gt;getOperand(0);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(opnd);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> *sw = SVFUtil::dyn_cast&lt;SwitchInst&gt;(inst))</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sw-&gt;getCondition());</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">callSiteSet</a>.insert(cs);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">CallSite::arg_iterator</a> it = cs.<a class="code" href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">arg_begin</a>();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; it != cs.<a class="code" href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">arg_end</a>(); ++it)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(*it);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// Calls to inline asm need to be added as well because the callee isn&#39;t</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// referenced anywhere else.</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *Callee = cs.<a class="code" href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">getCalledValue</a>();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(Callee);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">//TODO handle inlineAsm</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a92b053f79cfa1259603836cb0aacad7d">endSymbolAllocation</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#abbfd1d7e985483c486394d8db85b6a85">Options::SymTabPrint</a>) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">dump</a>();</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
314
- <div class="ttc" id="classSVF_1_1Options_html_abbfd1d7e985483c486394d8db85b6a85"><div class="ttname"><a href="classSVF_1_1Options.html#abbfd1d7e985483c486394d8db85b6a85">SVF::Options::SymTabPrint</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; SymTabPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00215">Options.h:215</a></div></div>
314
+ <div class="ttc" id="classSVF_1_1Options_html_abbfd1d7e985483c486394d8db85b6a85"><div class="ttname"><a href="classSVF_1_1Options.html#abbfd1d7e985483c486394d8db85b6a85">SVF::Options::SymTabPrint</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; SymTabPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00216">Options.h:216</a></div></div>
315
315
  <div class="ttc" id="namespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00139">BasicTypes.h:139</a></div></div>
316
316
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">SVF::SymbolTableInfo::NullPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00056">SymbolTableInfo.h:56</a></div></div>
317
317
  <div class="ttc" id="namespaceSVF_html_ac9a05dd7ab16e998625037aa242cd30f"><div class="ttname"><a href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">SVF::BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
@@ -552,7 +552,7 @@ Private Attributes</h2></td></tr>
552
552
  <div class="fragment"><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;{</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refTy = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(val);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="comment">// We consider two types of objects:</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="comment">// (1) A heap/static object from a callsite</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (I &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(I))</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">getRefTypeOfHeapAllocOrStatic</a>(I);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="comment">// (2) Other objects (e.g., alloca, global, etc.)</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span> (refTy)</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *objTy = refTy-&gt;getElementType();</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(objTy, <a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create an object with a non-pointer type.&quot;</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(val-&gt;getName().str());</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(val) + <span class="stringliteral">&quot;)&quot;</span>);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val)){</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(val-&gt;getType(), 0);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Memory object must be either (1) held by a pointer-typed ref value or (2) a constant value (e.g., 10).&quot;</span>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
553
553
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
554
554
  <div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
555
- <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#l00037">Options.h:37</a></div></div>
555
+ <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>
556
556
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
557
557
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00069">SVFUtil.cpp:69</a></div></div>
558
558
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
@@ -680,7 +680,7 @@ Private Attributes</h2></td></tr>
680
680
 
681
681
  <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00421">421</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
682
682
  <div class="fragment"><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;{</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">if</span> (C-&gt;getType()-&gt;isSingleValueType())</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *E = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(C))</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(E);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(C);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantArray&gt;(C))</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C-&gt;getNumOperands(); i != e; i++)</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)));</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantStruct&gt;(C))</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; {</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C-&gt;getNumOperands(); i != e; i++)</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; {</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)));</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* data = SVFUtil::dyn_cast&lt;ConstantData&gt;(C))</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">Options::ModelConsts</a>){</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a>* seq = SVFUtil::dyn_cast&lt;ConstantDataSequential&gt;(data)){</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; seq-&gt;getNumElements(); i++){</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ct = seq-&gt;getElementAsConstant(i);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(ct);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(data);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="comment">//TODO:assert(SVFUtil::isa&lt;ConstantVector&gt;(C),&quot;what else do we have&quot;);</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abe39a7a3557899b4991bcc60d436dc50"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">SVF::SymbolTableBuilder::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00311">SymbolTableBuilder.cpp:311</a></div></div>
683
- <div class="ttc" id="classSVF_1_1Options_html_a5c051cf6a93a87a07aa1d31e302a2877"><div class="ttname"><a href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">SVF::Options::ModelConsts</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ModelConsts</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00213">Options.h:213</a></div></div>
683
+ <div class="ttc" id="classSVF_1_1Options_html_a5c051cf6a93a87a07aa1d31e302a2877"><div class="ttname"><a href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">SVF::Options::ModelConsts</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ModelConsts</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00214">Options.h:214</a></div></div>
684
684
  <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="SVFBasicTypes_8h_source.html#l00077">SVFBasicTypes.h:77</a></div></div>
685
685
  <div class="ttc" id="namespaceSVF_html_a7332f8059ea95472dcc231de884a5768"><div class="ttname"><a href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">SVF::ConstantData</a></div><div class="ttdeci">llvm::ConstantData ConstantData</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00117">BasicTypes.h:117</a></div></div>
686
686
  <div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00116">BasicTypes.h:116</a></div></div>