svf-tools 1.0.828 → 1.0.830

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 (398) hide show
  1. package/SVF-doxygen/html/AccessPath_8cpp_source.html +225 -224
  2. package/SVF-doxygen/html/AccessPath_8h_source.html +11 -11
  3. package/SVF-doxygen/html/AndersenSFR_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/Andersen_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/BasicTypes_8h.html +2 -0
  6. package/SVF-doxygen/html/BasicTypes_8h_source.html +123 -121
  7. package/SVF-doxygen/html/CFLAlias_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/CFLGraphBuilder_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +11 -11
  10. package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/ConsG_8h_source.html +1 -1
  12. package/SVF-doxygen/html/ContextDDA_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/ContextDDA_8h_source.html +1 -1
  14. package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
  15. package/SVF-doxygen/html/DCHG_8cpp_source.html +12 -12
  16. package/SVF-doxygen/html/DCHG_8h_source.html +5 -5
  17. package/SVF-doxygen/html/DDAClient_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/DDAStat_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/DDAVFSolver_8h_source.html +4 -4
  20. package/SVF-doxygen/html/FlowDDA_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/FlowDDA_8h_source.html +1 -1
  22. package/SVF-doxygen/html/FlowSensitiveStat_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/IRGraph_8h_source.html +2 -2
  26. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +145 -144
  27. package/SVF-doxygen/html/LLVMModule_8h_source.html +3 -3
  28. package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +1135 -1037
  29. package/SVF-doxygen/html/LLVMUtil_8h.html +8 -5
  30. package/SVF-doxygen/html/LLVMUtil_8h_source.html +418 -415
  31. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
  32. package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/MemRegion_8cpp_source.html +3 -3
  35. package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/PointerAnalysisImpl_8cpp_source.html +4 -4
  37. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +363 -362
  38. package/SVF-doxygen/html/PointerAnalysis_8h_source.html +13 -13
  39. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +7 -7
  40. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +11 -10
  41. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +927 -924
  42. package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +35 -34
  43. package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +2 -2
  44. package/SVF-doxygen/html/SVFIR_8cpp_source.html +1 -1
  45. package/SVF-doxygen/html/SVFIR_8h_source.html +1 -1
  46. package/SVF-doxygen/html/SVFStat_8cpp_source.html +12 -12
  47. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/SVFStatements_8h_source.html +2 -2
  49. package/SVF-doxygen/html/SVFType_8cpp_source.html +38 -37
  50. package/SVF-doxygen/html/SVFType_8h_source.html +5 -5
  51. package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
  52. package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
  53. package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/SVFVariables_8h_source.html +1 -1
  55. package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  56. package/SVF-doxygen/html/Steensgaard_8cpp_source.html +1 -1
  57. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +651 -640
  58. package/SVF-doxygen/html/SymbolTableBuilder_8h_source.html +18 -18
  59. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +339 -338
  60. package/SVF-doxygen/html/SymbolTableInfo_8h_source.html +33 -33
  61. package/SVF-doxygen/html/ThreadCallGraph_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/classSVF_1_1AccessPath-members.html +3 -3
  64. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +236 -235
  65. package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  66. package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  67. package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
  68. package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
  69. package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
  70. package/SVF-doxygen/html/classSVF_1_1AndersenSFR.html +1 -1
  71. package/SVF-doxygen/html/classSVF_1_1BVDataPTAImpl.html +4 -4
  72. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
  73. package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  74. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
  75. package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +3 -3
  76. package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +11 -11
  77. package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +1 -1
  78. package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
  79. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
  80. package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
  81. package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +2 -2
  82. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
  83. package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
  84. package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
  85. package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
  86. package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +12 -12
  87. package/SVF-doxygen/html/classSVF_1_1DDAStat.html +1 -1
  88. package/SVF-doxygen/html/classSVF_1_1DDAVFSolver.html +1 -1
  89. package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  90. package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
  91. package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +2 -2
  92. package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +1 -1
  93. package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  94. package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
  95. package/SVF-doxygen/html/classSVF_1_1FunptrDDAClient.html +1 -1
  96. package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +2 -2
  97. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +3 -3
  98. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
  99. package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
  100. package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +1 -1
  101. package/SVF-doxygen/html/classSVF_1_1IRGraph.html +2 -2
  102. package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  103. package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  104. package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +1 -1
  105. package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +1 -1
  106. package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  107. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +141 -140
  108. package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
  109. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
  110. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
  111. package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
  112. package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +3 -3
  113. package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +1 -1
  114. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
  115. package/SVF-doxygen/html/classSVF_1_1MemObj.html +121 -121
  116. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
  117. package/SVF-doxygen/html/classSVF_1_1ObjTypeInfo.html +29 -30
  118. package/SVF-doxygen/html/classSVF_1_1ObjVar.html +2 -2
  119. package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
  120. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
  121. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +342 -341
  122. package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +1 -1
  123. package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
  124. package/SVF-doxygen/html/classSVF_1_1SVFArrayType.html +4 -4
  125. package/SVF-doxygen/html/classSVF_1_1SVFFunctionType.html +4 -4
  126. package/SVF-doxygen/html/classSVF_1_1SVFIR.html +1 -1
  127. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +6 -6
  128. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +11 -10
  129. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +868 -864
  130. package/SVF-doxygen/html/classSVF_1_1SVFIntegerType.html +7 -7
  131. package/SVF-doxygen/html/classSVF_1_1SVFOtherType.html +4 -4
  132. package/SVF-doxygen/html/classSVF_1_1SVFPointerType.html +3 -2
  133. package/SVF-doxygen/html/classSVF_1_1SVFStat.html +12 -12
  134. package/SVF-doxygen/html/classSVF_1_1SVFStructType.html +4 -4
  135. package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
  136. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  137. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
  138. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
  139. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
  140. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder-members.html +1 -1
  141. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +642 -629
  142. package/SVF-doxygen/html/classSVF_1_1SymbolTableInfo.html +125 -124
  143. package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
  144. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
  145. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
  146. package/SVF-doxygen/html/classSVF_1_1ThreadCallGraph.html +1 -1
  147. package/SVF-doxygen/html/classSVF_1_1TypeAnalysis.html +2 -2
  148. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
  149. package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  150. package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
  151. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  152. package/SVF-doxygen/html/functions_a.html +1 -1
  153. package/SVF-doxygen/html/functions_func.html +1 -1
  154. package/SVF-doxygen/html/functions_func_g.html +10 -10
  155. package/SVF-doxygen/html/functions_func_p.html +1 -1
  156. package/SVF-doxygen/html/functions_g.html +6 -6
  157. package/SVF-doxygen/html/functions_r.html +2 -2
  158. package/SVF-doxygen/html/functions_s.html +5 -5
  159. package/SVF-doxygen/html/functions_t.html +7 -7
  160. package/SVF-doxygen/html/functions_v.html +3 -1
  161. package/SVF-doxygen/html/functions_w.html +8 -8
  162. package/SVF-doxygen/html/menudata.js +0 -1
  163. package/SVF-doxygen/html/namespaceSVF.html +43 -25
  164. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +1280 -1152
  165. package/SVF-doxygen/html/namespacemembers_d.html +7 -1
  166. package/SVF-doxygen/html/namespacemembers_func_d.html +7 -1
  167. package/SVF-doxygen/html/namespacemembers_func_g.html +7 -4
  168. package/SVF-doxygen/html/namespacemembers_g.html +11 -5
  169. package/SVF-doxygen/html/namespacemembers_l.html +0 -3
  170. package/SVF-doxygen/html/namespacemembers_type_g.html +3 -0
  171. package/SVF-doxygen/html/search/all_1.js +1 -1
  172. package/SVF-doxygen/html/search/all_10.js +324 -324
  173. package/SVF-doxygen/html/search/all_11.js +223 -223
  174. package/SVF-doxygen/html/search/all_12.js +553 -553
  175. package/SVF-doxygen/html/search/all_13.js +192 -192
  176. package/SVF-doxygen/html/search/all_14.js +67 -67
  177. package/SVF-doxygen/html/search/all_15.js +167 -167
  178. package/SVF-doxygen/html/search/all_16.js +63 -63
  179. package/SVF-doxygen/html/search/all_17.js +1 -1
  180. package/SVF-doxygen/html/search/all_18.js +1 -1
  181. package/SVF-doxygen/html/search/all_19.js +11 -11
  182. package/SVF-doxygen/html/search/all_1a.js +172 -172
  183. package/SVF-doxygen/html/search/all_4.js +8 -6
  184. package/SVF-doxygen/html/search/all_5.js +119 -119
  185. package/SVF-doxygen/html/search/all_6.js +226 -226
  186. package/SVF-doxygen/html/search/all_7.js +1048 -1046
  187. package/SVF-doxygen/html/search/all_8.js +198 -198
  188. package/SVF-doxygen/html/search/all_9.js +607 -607
  189. package/SVF-doxygen/html/search/all_a.js +46 -46
  190. package/SVF-doxygen/html/search/all_b.js +26 -26
  191. package/SVF-doxygen/html/search/all_c.js +115 -116
  192. package/SVF-doxygen/html/search/all_d.js +198 -198
  193. package/SVF-doxygen/html/search/all_e.js +207 -207
  194. package/SVF-doxygen/html/search/all_f.js +116 -116
  195. package/SVF-doxygen/html/search/classes_0.js +26 -26
  196. package/SVF-doxygen/html/search/classes_1.js +9 -9
  197. package/SVF-doxygen/html/search/classes_10.js +73 -73
  198. package/SVF-doxygen/html/search/classes_11.js +15 -15
  199. package/SVF-doxygen/html/search/classes_12.js +2 -2
  200. package/SVF-doxygen/html/search/classes_13.js +10 -10
  201. package/SVF-doxygen/html/search/classes_14.js +14 -14
  202. package/SVF-doxygen/html/search/classes_15.js +1 -1
  203. package/SVF-doxygen/html/search/classes_2.js +80 -80
  204. package/SVF-doxygen/html/search/classes_3.js +37 -37
  205. package/SVF-doxygen/html/search/classes_4.js +9 -9
  206. package/SVF-doxygen/html/search/classes_5.js +28 -28
  207. package/SVF-doxygen/html/search/classes_6.js +104 -104
  208. package/SVF-doxygen/html/search/classes_7.js +34 -34
  209. package/SVF-doxygen/html/search/classes_8.js +56 -56
  210. package/SVF-doxygen/html/search/classes_9.js +1 -1
  211. package/SVF-doxygen/html/search/classes_a.js +12 -12
  212. package/SVF-doxygen/html/search/classes_b.js +29 -29
  213. package/SVF-doxygen/html/search/classes_c.js +6 -6
  214. package/SVF-doxygen/html/search/classes_d.js +18 -18
  215. package/SVF-doxygen/html/search/classes_e.js +36 -36
  216. package/SVF-doxygen/html/search/classes_f.js +25 -25
  217. package/SVF-doxygen/html/search/defines_0.js +3 -3
  218. package/SVF-doxygen/html/search/defines_1.js +2 -2
  219. package/SVF-doxygen/html/search/defines_2.js +30 -30
  220. package/SVF-doxygen/html/search/defines_3.js +21 -21
  221. package/SVF-doxygen/html/search/defines_4.js +2 -2
  222. package/SVF-doxygen/html/search/defines_5.js +4 -4
  223. package/SVF-doxygen/html/search/defines_6.js +2 -2
  224. package/SVF-doxygen/html/search/defines_7.js +5 -5
  225. package/SVF-doxygen/html/search/defines_8.js +11 -11
  226. package/SVF-doxygen/html/search/defines_9.js +9 -9
  227. package/SVF-doxygen/html/search/defines_a.js +2 -2
  228. package/SVF-doxygen/html/search/defines_b.js +1 -1
  229. package/SVF-doxygen/html/search/defines_c.js +3 -3
  230. package/SVF-doxygen/html/search/defines_d.js +2 -2
  231. package/SVF-doxygen/html/search/defines_e.js +7 -7
  232. package/SVF-doxygen/html/search/defines_f.js +3 -3
  233. package/SVF-doxygen/html/search/enums_0.js +3 -3
  234. package/SVF-doxygen/html/search/enums_1.js +2 -2
  235. package/SVF-doxygen/html/search/enums_10.js +1 -1
  236. package/SVF-doxygen/html/search/enums_11.js +1 -1
  237. package/SVF-doxygen/html/search/enums_2.js +8 -8
  238. package/SVF-doxygen/html/search/enums_3.js +1 -1
  239. package/SVF-doxygen/html/search/enums_4.js +3 -3
  240. package/SVF-doxygen/html/search/enums_5.js +1 -1
  241. package/SVF-doxygen/html/search/enums_6.js +2 -2
  242. package/SVF-doxygen/html/search/enums_7.js +2 -2
  243. package/SVF-doxygen/html/search/enums_8.js +4 -4
  244. package/SVF-doxygen/html/search/enums_9.js +1 -1
  245. package/SVF-doxygen/html/search/enums_a.js +1 -1
  246. package/SVF-doxygen/html/search/enums_b.js +7 -7
  247. package/SVF-doxygen/html/search/enums_c.js +1 -1
  248. package/SVF-doxygen/html/search/enums_d.js +4 -4
  249. package/SVF-doxygen/html/search/enums_e.js +2 -2
  250. package/SVF-doxygen/html/search/enums_f.js +4 -4
  251. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  252. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  253. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  254. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  255. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  256. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  257. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  258. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  259. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  260. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  261. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  262. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  263. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  264. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  265. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  266. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  267. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  268. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  269. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  270. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  271. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  272. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  273. package/SVF-doxygen/html/search/files_0.js +13 -13
  274. package/SVF-doxygen/html/search/files_1.js +7 -7
  275. package/SVF-doxygen/html/search/files_10.js +8 -8
  276. package/SVF-doxygen/html/search/files_11.js +8 -8
  277. package/SVF-doxygen/html/search/files_12.js +2 -2
  278. package/SVF-doxygen/html/search/files_2.js +55 -55
  279. package/SVF-doxygen/html/search/files_3.js +14 -14
  280. package/SVF-doxygen/html/search/files_4.js +5 -5
  281. package/SVF-doxygen/html/search/files_5.js +13 -13
  282. package/SVF-doxygen/html/search/files_6.js +9 -9
  283. package/SVF-doxygen/html/search/files_7.js +14 -14
  284. package/SVF-doxygen/html/search/files_8.js +13 -13
  285. package/SVF-doxygen/html/search/files_9.js +18 -18
  286. package/SVF-doxygen/html/search/files_a.js +3 -3
  287. package/SVF-doxygen/html/search/files_b.js +2 -2
  288. package/SVF-doxygen/html/search/files_c.js +20 -20
  289. package/SVF-doxygen/html/search/files_d.js +4 -4
  290. package/SVF-doxygen/html/search/files_e.js +62 -62
  291. package/SVF-doxygen/html/search/files_f.js +8 -8
  292. package/SVF-doxygen/html/search/functions_0.js +13 -13
  293. package/SVF-doxygen/html/search/functions_1.js +360 -360
  294. package/SVF-doxygen/html/search/functions_10.js +140 -140
  295. package/SVF-doxygen/html/search/functions_11.js +139 -139
  296. package/SVF-doxygen/html/search/functions_12.js +288 -288
  297. package/SVF-doxygen/html/search/functions_13.js +59 -59
  298. package/SVF-doxygen/html/search/functions_14.js +39 -39
  299. package/SVF-doxygen/html/search/functions_15.js +71 -71
  300. package/SVF-doxygen/html/search/functions_16.js +32 -32
  301. package/SVF-doxygen/html/search/functions_17.js +3 -3
  302. package/SVF-doxygen/html/search/functions_18.js +172 -172
  303. package/SVF-doxygen/html/search/functions_2.js +89 -89
  304. package/SVF-doxygen/html/search/functions_3.js +258 -258
  305. package/SVF-doxygen/html/search/functions_4.js +78 -76
  306. package/SVF-doxygen/html/search/functions_5.js +53 -53
  307. package/SVF-doxygen/html/search/functions_6.js +60 -60
  308. package/SVF-doxygen/html/search/functions_7.js +857 -856
  309. package/SVF-doxygen/html/search/functions_8.js +149 -149
  310. package/SVF-doxygen/html/search/functions_9.js +423 -423
  311. package/SVF-doxygen/html/search/functions_a.js +30 -30
  312. package/SVF-doxygen/html/search/functions_b.js +2 -2
  313. package/SVF-doxygen/html/search/functions_c.js +25 -26
  314. package/SVF-doxygen/html/search/functions_d.js +79 -79
  315. package/SVF-doxygen/html/search/functions_e.js +35 -35
  316. package/SVF-doxygen/html/search/functions_f.js +56 -56
  317. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  318. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  319. package/SVF-doxygen/html/search/related_0.js +2 -2
  320. package/SVF-doxygen/html/search/related_1.js +2 -2
  321. package/SVF-doxygen/html/search/related_2.js +2 -2
  322. package/SVF-doxygen/html/search/related_3.js +2 -2
  323. package/SVF-doxygen/html/search/related_4.js +2 -2
  324. package/SVF-doxygen/html/search/related_5.js +1 -1
  325. package/SVF-doxygen/html/search/related_6.js +2 -2
  326. package/SVF-doxygen/html/search/related_7.js +4 -4
  327. package/SVF-doxygen/html/search/related_8.js +2 -2
  328. package/SVF-doxygen/html/search/related_9.js +4 -4
  329. package/SVF-doxygen/html/search/related_a.js +19 -19
  330. package/SVF-doxygen/html/search/related_b.js +4 -4
  331. package/SVF-doxygen/html/search/related_c.js +2 -2
  332. package/SVF-doxygen/html/search/related_d.js +12 -12
  333. package/SVF-doxygen/html/search/related_e.js +2 -2
  334. package/SVF-doxygen/html/search/related_f.js +2 -2
  335. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  336. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  337. package/SVF-doxygen/html/search/typedefs_10.js +61 -61
  338. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  339. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  340. package/SVF-doxygen/html/search/typedefs_13.js +33 -33
  341. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  342. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  343. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  344. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  345. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  346. package/SVF-doxygen/html/search/typedefs_6.js +56 -55
  347. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  348. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  349. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  350. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  351. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  352. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  353. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  354. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  355. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  356. package/SVF-doxygen/html/search/variables_0.js +151 -151
  357. package/SVF-doxygen/html/search/variables_1.js +75 -75
  358. package/SVF-doxygen/html/search/variables_10.js +97 -97
  359. package/SVF-doxygen/html/search/variables_11.js +44 -44
  360. package/SVF-doxygen/html/search/variables_12.js +92 -92
  361. package/SVF-doxygen/html/search/variables_13.js +76 -76
  362. package/SVF-doxygen/html/search/variables_14.js +14 -14
  363. package/SVF-doxygen/html/search/variables_15.js +48 -48
  364. package/SVF-doxygen/html/search/variables_16.js +9 -9
  365. package/SVF-doxygen/html/search/variables_17.js +1 -1
  366. package/SVF-doxygen/html/search/variables_18.js +2 -2
  367. package/SVF-doxygen/html/search/variables_2.js +38 -38
  368. package/SVF-doxygen/html/search/variables_3.js +142 -142
  369. package/SVF-doxygen/html/search/variables_4.js +55 -55
  370. package/SVF-doxygen/html/search/variables_5.js +37 -37
  371. package/SVF-doxygen/html/search/variables_6.js +66 -66
  372. package/SVF-doxygen/html/search/variables_7.js +34 -34
  373. package/SVF-doxygen/html/search/variables_8.js +7 -7
  374. package/SVF-doxygen/html/search/variables_9.js +78 -78
  375. package/SVF-doxygen/html/search/variables_a.js +4 -4
  376. package/SVF-doxygen/html/search/variables_b.js +10 -10
  377. package/SVF-doxygen/html/search/variables_c.js +45 -45
  378. package/SVF-doxygen/html/search/variables_d.js +56 -56
  379. package/SVF-doxygen/html/search/variables_e.js +123 -123
  380. package/SVF-doxygen/html/search/variables_f.js +30 -30
  381. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  382. package/SVF-doxygen/html/svf-ex_8cpp.html +1 -1
  383. package/SVF-doxygen/html/svf-ex_8cpp_source.html +1 -1
  384. package/package.json +1 -1
  385. package/svf/include/MemoryModel/AccessPath.h +2 -2
  386. package/svf/lib/AbstractExecution/SVFIR2ConsExeState.cpp +2 -2
  387. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +4 -4
  388. package/svf/lib/MemoryModel/AccessPath.cpp +6 -5
  389. package/svf/lib/MemoryModel/PointerAnalysis.cpp +1 -0
  390. package/svf/lib/SVFIR/SVFType.cpp +1 -0
  391. package/svf/lib/SVFIR/SymbolTableInfo.cpp +2 -1
  392. package/svf-llvm/include/SVF-LLVM/BasicTypes.h +1 -0
  393. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +11 -8
  394. package/svf-llvm/include/SVF-LLVM/SymbolTableBuilder.h +1 -1
  395. package/svf-llvm/lib/LLVMModule.cpp +1 -0
  396. package/svf-llvm/lib/LLVMUtil.cpp +112 -18
  397. package/svf-llvm/lib/SVFIRBuilder.cpp +3 -1
  398. package/svf-llvm/lib/SymbolTableBuilder.cpp +21 -9
@@ -1709,7 +1709,7 @@ Private Attributes</h2></td></tr>
1709
1709
  <div class="fragment"><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;{</div>
1710
1710
  <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; assert(V);</div>
1711
1711
  <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; </div>
1712
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">const</span> llvm::GEPOperator *gepOp = SVFUtil::dyn_cast&lt;const llvm::GEPOperator&gt;(V);</div>
1712
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a893c345ff98bb2808ae905cf9f3671c5">llvm::GEPOperator</a> *gepOp = SVFUtil::dyn_cast&lt;const llvm::GEPOperator&gt;(V);</div>
1713
1713
  <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a> * dataLayout = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getMainLLVMModule());</div>
1714
1714
  <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; llvm::APInt byteOffset(dataLayout-&gt;getIndexSizeInBits(gepOp-&gt;getPointerAddressSpace()),0,<span class="keyword">true</span>);</div>
1715
1715
  <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span>(gepOp &amp;&amp; dataLayout &amp;&amp; gepOp-&gt;accumulateConstantOffset(*dataLayout,byteOffset))</div>
@@ -1755,19 +1755,21 @@ Private Attributes</h2></td></tr>
1755
1755
  <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="comment">// If it&#39;s a non-constant offset access</span></div>
1756
1756
  <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="comment">// If its point-to target is struct or array, it&#39;s likely an array accessing (%result = gep %struct.A* %a, i32 %non-const-index)</span></div>
1757
1757
  <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="comment">// If its point-to target is single value (pointer arithmetic), then it&#39;s a variant gep (%result = gep i8* %p, i32 %non-const-index)</span></div>
1758
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span>(!op &amp;&amp; gepTy-&gt;isPointerTy() &amp;&amp; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(SVFUtil::dyn_cast&lt;PointerType&gt;(gepTy))-&gt;isSingleValueType())</div>
1759
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; isConst = <span class="keyword">false</span>;</div>
1760
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
1761
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="comment">// The actual index</span></div>
1762
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="comment">//s32_t idx = op-&gt;getSExtValue();</span></div>
1763
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; </div>
1764
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// For pointer arithmetic we ignore the byte offset</span></div>
1765
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="comment">// consider using inferFieldIdxFromByteOffset(geopOp,dataLayout,ap,idx)?</span></div>
1766
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="comment">// ap.setFldIdx(ap.getConstantFieldIdx() + inferFieldIdxFromByteOffset(geopOp,idx));</span></div>
1767
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div>
1768
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div>
1769
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">return</span> isConst;</div>
1770
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;}</div>
1758
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span>(!op &amp;&amp; gepTy-&gt;isPointerTy() &amp;&amp; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4b5d4c7ca2c580ace7305bfed58ffce8">LLVMUtil::getPointeeType</a>(V)-&gt;isSingleValueType())</div>
1759
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div>
1760
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; isConst = <span class="keyword">false</span>;</div>
1761
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; }</div>
1762
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; </div>
1763
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="comment">// The actual index</span></div>
1764
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">//s32_t idx = op-&gt;getSExtValue();</span></div>
1765
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; </div>
1766
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="comment">// For pointer arithmetic we ignore the byte offset</span></div>
1767
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="comment">// consider using inferFieldIdxFromByteOffset(geopOp,dataLayout,ap,idx)?</span></div>
1768
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">// ap.setFldIdx(ap.getConstantFieldIdx() + inferFieldIdxFromByteOffset(geopOp,idx));</span></div>
1769
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
1770
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; }</div>
1771
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> isConst;</div>
1772
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;}</div>
1771
1773
  </div><!-- fragment -->
1772
1774
  </div>
1773
1775
  </div>
@@ -1797,21 +1799,21 @@ Private Attributes</h2></td></tr>
1797
1799
  <p>Get a base <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> given a pointer Return the source node of its connected normal gep edge Otherwise return the node id itself s32_t offset : gep offset </p>
1798
1800
  <p>if this node is already a base node</p>
1799
1801
 
1800
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01326">1326</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
1801
- <div class="fragment"><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;{</div>
1802
- <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div>
1803
- <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; geps = node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div>
1804
- <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <span class="keywordflow">if</span>(geps.empty())</div>
1805
- <div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(0);</div>
1806
- <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; </div>
1807
- <div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; assert(geps.size()==1 &amp;&amp; <span class="stringliteral">&quot;one node can only be connected by at most one gep edge!&quot;</span>);</div>
1808
- <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVFVar::iterator</a> it = geps.begin();</div>
1809
- <div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepEdge = SVFUtil::cast&lt;GepStmt&gt;(*it);</div>
1810
- <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keywordflow">if</span>(gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div>
1811
- <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(0);</div>
1812
- <div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; <span class="keywordflow">else</span></div>
1813
- <div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <span class="keywordflow">return</span> gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>();</div>
1814
- <div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;}</div>
1802
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01328">1328</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
1803
+ <div class="fragment"><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;{</div>
1804
+ <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div>
1805
+ <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; geps = node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div>
1806
+ <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; <span class="keywordflow">if</span>(geps.empty())</div>
1807
+ <div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(0);</div>
1808
+ <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; </div>
1809
+ <div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; assert(geps.size()==1 &amp;&amp; <span class="stringliteral">&quot;one node can only be connected by at most one gep edge!&quot;</span>);</div>
1810
+ <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVFVar::iterator</a> it = geps.begin();</div>
1811
+ <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepEdge = SVFUtil::cast&lt;GepStmt&gt;(*it);</div>
1812
+ <div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; <span class="keywordflow">if</span>(gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div>
1813
+ <div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(0);</div>
1814
+ <div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; <span class="keywordflow">else</span></div>
1815
+ <div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; <span class="keywordflow">return</span> gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>();</div>
1816
+ <div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;}</div>
1815
1817
  </div><!-- fragment -->
1816
1818
  </div>
1817
1819
  </div>
@@ -1920,59 +1922,59 @@ Private Attributes</h2></td></tr>
1920
1922
 
1921
1923
  <p>Get the base value of (i8* src and i8* dst) for external argument (e.g. memcpy(i8* dst, i8* src, int size)) </p>
1922
1924
 
1923
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01065">1065</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
1924
- <div class="fragment"><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;{</div>
1925
- <div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">stripAllCasts</a>(V);</div>
1926
- <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; assert(value &amp;&amp; <span class="stringliteral">&quot;null ptr?&quot;</span>);</div>
1927
- <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <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;(value))</div>
1928
- <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; {</div>
1929
- <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalidx = 0;</div>
1930
- <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1generic__bridge__gep__type__iterator.html">bridge_gep_iterator</a> gi = <a class="code" href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">bridge_gep_begin</a>(gep), ge = <a class="code" href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">bridge_gep_end</a>(gep); gi != ge; ++gi)</div>
1931
- <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; {</div>
1932
- <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* op = SVFUtil::dyn_cast&lt;ConstantInt&gt;(gi.getOperand()))</div>
1933
- <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; totalidx += op-&gt;getSExtValue();</div>
1934
- <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; }</div>
1935
- <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keywordflow">if</span>(totalidx == 0 &amp;&amp; !SVFUtil::isa&lt;StructType&gt;(value-&gt;getType()))</div>
1936
- <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; value = gep-&gt;getPointerOperand();</div>
1937
- <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; }</div>
1938
- <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; </div>
1939
- <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="comment">// if the argument of memcpy is the result of an allocation (1) or a casted load instruction (2),</span></div>
1940
- <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="comment">// further steps are necessary to find the correct base value</span></div>
1941
- <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="comment">//</span></div>
1942
- <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="comment">// (1)</span></div>
1943
- <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="comment">// %call = malloc 80</span></div>
1944
- <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="comment">// %0 = bitcast i8* %call to %struct.A*</span></div>
1945
- <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="comment">// %1 = bitcast %struct.B* %param to i8*</span></div>
1946
- <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="comment">// call void memcpy(%call, %1, 80)</span></div>
1947
- <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="comment">//</span></div>
1948
- <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="comment">// (2)</span></div>
1949
- <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="comment">// %0 = bitcast %struct.A* %param to i8*</span></div>
1950
- <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="comment">// %2 = bitcast %struct.B** %arrayidx to i8**</span></div>
1951
- <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="comment">// %3 = load i8*, i8** %2</span></div>
1952
- <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="comment">// call void @memcpy(%0, %3, 80)</span></div>
1953
- <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &amp;cxt = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>();</div>
1954
- <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keywordflow">if</span> (value-&gt;getType() == PointerType::getInt8PtrTy(cxt))</div>
1955
- <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; {</div>
1956
- <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="comment">// (1)</span></div>
1957
- <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cb = SVFUtil::dyn_cast&lt;CallBase&gt;(value))</div>
1958
- <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; {</div>
1959
- <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cb);</div>
1960
- <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfInst))</div>
1961
- <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; {</div>
1962
- <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* bitCast = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">getFirstUseViaCastInst</a>(cb))</div>
1963
- <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">return</span> bitCast;</div>
1964
- <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; }</div>
1965
- <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; }</div>
1966
- <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="comment">// (2)</span></div>
1967
- <div class="line"><a name="l01109"></a><span class="lineno"> 1109</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>* load = SVFUtil::dyn_cast&lt;LoadInst&gt;(value))</div>
1968
- <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; {</div>
1969
- <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">BitCastInst</a>* bitCast = SVFUtil::dyn_cast&lt;BitCastInst&gt;(load-&gt;getPointerOperand()))</div>
1970
- <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">return</span> bitCast-&gt;getOperand(0);</div>
1971
- <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; }</div>
1972
- <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; }</div>
1973
- <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; </div>
1974
- <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="keywordflow">return</span> value;</div>
1975
- <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;}</div>
1925
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01067">1067</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
1926
+ <div class="fragment"><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;{</div>
1927
+ <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">stripAllCasts</a>(V);</div>
1928
+ <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; assert(value &amp;&amp; <span class="stringliteral">&quot;null ptr?&quot;</span>);</div>
1929
+ <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <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;(value))</div>
1930
+ <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; {</div>
1931
+ <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalidx = 0;</div>
1932
+ <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1generic__bridge__gep__type__iterator.html">bridge_gep_iterator</a> gi = <a class="code" href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">bridge_gep_begin</a>(gep), ge = <a class="code" href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">bridge_gep_end</a>(gep); gi != ge; ++gi)</div>
1933
+ <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; {</div>
1934
+ <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* op = SVFUtil::dyn_cast&lt;ConstantInt&gt;(gi.getOperand()))</div>
1935
+ <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; totalidx += op-&gt;getSExtValue();</div>
1936
+ <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; }</div>
1937
+ <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">if</span>(totalidx == 0 &amp;&amp; !SVFUtil::isa&lt;StructType&gt;(value-&gt;getType()))</div>
1938
+ <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; value = gep-&gt;getPointerOperand();</div>
1939
+ <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; }</div>
1940
+ <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; </div>
1941
+ <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="comment">// if the argument of memcpy is the result of an allocation (1) or a casted load instruction (2),</span></div>
1942
+ <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="comment">// further steps are necessary to find the correct base value</span></div>
1943
+ <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="comment">//</span></div>
1944
+ <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="comment">// (1)</span></div>
1945
+ <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="comment">// %call = malloc 80</span></div>
1946
+ <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="comment">// %0 = bitcast i8* %call to %struct.A*</span></div>
1947
+ <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="comment">// %1 = bitcast %struct.B* %param to i8*</span></div>
1948
+ <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="comment">// call void memcpy(%call, %1, 80)</span></div>
1949
+ <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="comment">//</span></div>
1950
+ <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="comment">// (2)</span></div>
1951
+ <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="comment">// %0 = bitcast %struct.A* %param to i8*</span></div>
1952
+ <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="comment">// %2 = bitcast %struct.B** %arrayidx to i8**</span></div>
1953
+ <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="comment">// %3 = load i8*, i8** %2</span></div>
1954
+ <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="comment">// call void @memcpy(%0, %3, 80)</span></div>
1955
+ <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &amp;cxt = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>();</div>
1956
+ <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="keywordflow">if</span> (value-&gt;getType() == PointerType::getInt8PtrTy(cxt))</div>
1957
+ <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; {</div>
1958
+ <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="comment">// (1)</span></div>
1959
+ <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cb = SVFUtil::dyn_cast&lt;CallBase&gt;(value))</div>
1960
+ <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; {</div>
1961
+ <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cb);</div>
1962
+ <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfInst))</div>
1963
+ <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; {</div>
1964
+ <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* bitCast = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">getFirstUseViaCastInst</a>(cb))</div>
1965
+ <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keywordflow">return</span> bitCast;</div>
1966
+ <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; }</div>
1967
+ <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; }</div>
1968
+ <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="comment">// (2)</span></div>
1969
+ <div class="line"><a name="l01111"></a><span class="lineno"> 1111</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>* load = SVFUtil::dyn_cast&lt;LoadInst&gt;(value))</div>
1970
+ <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; {</div>
1971
+ <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">BitCastInst</a>* bitCast = SVFUtil::dyn_cast&lt;BitCastInst&gt;(load-&gt;getPointerOperand()))</div>
1972
+ <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">return</span> bitCast-&gt;getOperand(0);</div>
1973
+ <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; }</div>
1974
+ <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</div>
1975
+ <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; </div>
1976
+ <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keywordflow">return</span> value;</div>
1977
+ <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;}</div>
1976
1978
  </div><!-- fragment -->
1977
1979
  </div>
1978
1980
  </div>
@@ -2077,37 +2079,37 @@ Private Attributes</h2></td></tr>
2077
2079
  </div><div class="memdoc">
2078
2080
  <p>Add a temp field value node according to base value and offset this node is after the initial node method, it is out of scope of symInfo table </p>
2079
2081
 
2080
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01193">1193</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2081
- <div class="fragment"><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;{</div>
2082
- <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(val));</div>
2083
- <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7">getGepValVar</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, base, ap);</div>
2084
- <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keywordflow">if</span> (gepval==UINT_MAX)</div>
2085
- <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; {</div>
2086
- <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; assert(((<span class="keywordtype">int</span>) UINT_MAX)==-1 &amp;&amp; <span class="stringliteral">&quot;maximum limit of unsigned int is not -1?&quot;</span>);</div>
2087
- <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="comment">/*</span></div>
2088
- <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;<span class="comment"> * getGepValVar can only be called from two places:</span></div>
2089
- <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;<span class="comment"> * 1. SVFIRBuilder::addComplexConsForExt to handle external calls</span></div>
2090
- <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;<span class="comment"> * 2. SVFIRBuilder::getGlobalVarField to initialize global variable</span></div>
2091
- <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;<span class="comment"> * so curVal can only be</span></div>
2092
- <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;<span class="comment"> * 1. Instruction</span></div>
2093
- <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;<span class="comment"> * 2. GlobalVariable</span></div>
2094
- <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;<span class="comment"> */</span></div>
2095
- <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; assert((SVFUtil::isa&lt;SVFInstruction, SVFGlobalValue&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>)) &amp;&amp; <span class="stringliteral">&quot;curVal not an instruction or a globalvariable?&quot;</span>);</div>
2096
- <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; </div>
2097
- <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="comment">// We assume every GepValNode and its GepEdge to the baseNode are unique across the whole program</span></div>
2098
- <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <span class="comment">// We preserve the current BB information to restore it after creating the gepNode</span></div>
2099
- <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
2100
- <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
2101
- <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, <span class="keyword">nullptr</span>);</div>
2102
- <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* llvmmodule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>();</div>
2103
- <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepNode= <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a555e6d530c37b23e1e43925aa188385f">addGepValNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, llvmmodule-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(val),ap, <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>(),elementType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a3672b4797c400aac90c6d36ce29e0e57">getPointerTo</a>());</div>
2104
- <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4e1b6797df3e7b98da876f50741e6a3a">addGepEdge</a>(base, gepNode, ap, <span class="keyword">true</span>);</div>
2105
- <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
2106
- <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">return</span> gepNode;</div>
2107
- <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; }</div>
2108
- <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keywordflow">else</span></div>
2109
- <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keywordflow">return</span> gepval;</div>
2110
- <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;}</div>
2082
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01195">1195</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2083
+ <div class="fragment"><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;{</div>
2084
+ <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(val));</div>
2085
+ <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7">getGepValVar</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, base, ap);</div>
2086
+ <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keywordflow">if</span> (gepval==UINT_MAX)</div>
2087
+ <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; {</div>
2088
+ <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; assert(((<span class="keywordtype">int</span>) UINT_MAX)==-1 &amp;&amp; <span class="stringliteral">&quot;maximum limit of unsigned int is not -1?&quot;</span>);</div>
2089
+ <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="comment">/*</span></div>
2090
+ <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;<span class="comment"> * getGepValVar can only be called from two places:</span></div>
2091
+ <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;<span class="comment"> * 1. SVFIRBuilder::addComplexConsForExt to handle external calls</span></div>
2092
+ <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;<span class="comment"> * 2. SVFIRBuilder::getGlobalVarField to initialize global variable</span></div>
2093
+ <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;<span class="comment"> * so curVal can only be</span></div>
2094
+ <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;<span class="comment"> * 1. Instruction</span></div>
2095
+ <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;<span class="comment"> * 2. GlobalVariable</span></div>
2096
+ <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="comment"> */</span></div>
2097
+ <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; assert((SVFUtil::isa&lt;SVFInstruction, SVFGlobalValue&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>)) &amp;&amp; <span class="stringliteral">&quot;curVal not an instruction or a globalvariable?&quot;</span>);</div>
2098
+ <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; </div>
2099
+ <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <span class="comment">// We assume every GepValNode and its GepEdge to the baseNode are unique across the whole program</span></div>
2100
+ <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="comment">// We preserve the current BB information to restore it after creating the gepNode</span></div>
2101
+ <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
2102
+ <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
2103
+ <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, <span class="keyword">nullptr</span>);</div>
2104
+ <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* llvmmodule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>();</div>
2105
+ <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepNode= <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a555e6d530c37b23e1e43925aa188385f">addGepValNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, llvmmodule-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(val),ap, <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>(),elementType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a3672b4797c400aac90c6d36ce29e0e57">getPointerTo</a>());</div>
2106
+ <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4e1b6797df3e7b98da876f50741e6a3a">addGepEdge</a>(base, gepNode, ap, <span class="keyword">true</span>);</div>
2107
+ <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
2108
+ <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keywordflow">return</span> gepNode;</div>
2109
+ <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; }</div>
2110
+ <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keywordflow">else</span></div>
2111
+ <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="keywordflow">return</span> gepval;</div>
2112
+ <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;}</div>
2111
2113
  </div><!-- fragment -->
2112
2114
  </div>
2113
2115
  </div>
@@ -2153,19 +2155,19 @@ Private Attributes</h2></td></tr>
2153
2155
  <p>Get the field of the global variable node FIXME:Here we only get the field that actually used in the program We ignore the initialization of global variable field that not used in the program </p>
2154
2156
  <p>if we did not find the constant expression in the program, then we need to create a gep node for this field</p>
2155
2157
 
2156
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00463">463</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2157
- <div class="fragment"><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;{</div>
2158
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; </div>
2159
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="comment">// if the global variable do not have any field needs to be initialized</span></div>
2160
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> == 0 &amp;&amp; gvar-&gt;getInitializer()-&gt;getType()-&gt;isSingleValueType())</div>
2161
- <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; {</div>
2162
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(gvar);</div>
2163
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div>
2164
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">else</span></div>
2165
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div>
2166
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae4516ec05eabece1bc8e0cad1ec8cf1c">getGepValVar</a>(gvar, <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>), tpy);</div>
2167
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div>
2168
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;}</div>
2158
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00465">465</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2159
+ <div class="fragment"><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;{</div>
2160
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; </div>
2161
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="comment">// if the global variable do not have any field needs to be initialized</span></div>
2162
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> == 0 &amp;&amp; gvar-&gt;getInitializer()-&gt;getType()-&gt;isSingleValueType())</div>
2163
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; {</div>
2164
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(gvar);</div>
2165
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; }</div>
2166
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">else</span></div>
2167
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; {</div>
2168
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae4516ec05eabece1bc8e0cad1ec8cf1c">getGepValVar</a>(gvar, <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>), tpy);</div>
2169
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div>
2170
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;}</div>
2169
2171
  </div><!-- fragment -->
2170
2172
  </div>
2171
2173
  </div>
@@ -2377,69 +2379,69 @@ Private Attributes</h2></td></tr>
2377
2379
  <p>Add the constraints for a direct, non-external call. </p>
2378
2380
  <p>FIXME: this assertion should be placed for correct checking except bug program like 188.ammp, 300.twolf</p>
2379
2381
 
2380
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00999">999</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2381
- <div class="fragment"><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;{</div>
2382
- <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; </div>
2383
- <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
2384
- <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cs);</div>
2385
- <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
2386
- <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div>
2387
- <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle direct call &quot;</span> &lt;&lt; svfcall-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>() &lt;&lt; <span class="stringliteral">&quot; callee &quot;</span> &lt;&lt; <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
2388
- <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; </div>
2389
- <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <span class="comment">//Only handle the ret.val. if it&#39;s used as a ptr.</span></div>
2390
- <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstrec = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs);</div>
2391
- <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="comment">//Does it actually return a ptr?</span></div>
2392
- <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <span class="keywordflow">if</span> (!cs-&gt;getType()-&gt;isVoidTy())</div>
2393
- <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; {</div>
2394
- <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcret = <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">getReturnNode</a>(svffun);</div>
2395
- <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callICFGNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
2396
- <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitICFGNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(svffun);</div>
2397
- <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a89e8cc23aad23d2c326b4a5ff12535ca">addRetEdge</a>(srcret, dstrec,callICFGNode, exitICFGNode);</div>
2398
- <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; }</div>
2399
- <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="comment">//Iterators for the actual and formal parameters</span></div>
2400
- <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> itA = 0, ieA = cs-&gt;arg_size();</div>
2401
- <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; Function::const_arg_iterator itF = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;arg_begin(), ieF = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;arg_end();</div>
2402
- <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="comment">//Go through the fixed parameters.</span></div>
2403
- <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; args:&quot;</span>);</div>
2404
- <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="keywordflow">for</span> (; itF != ieF; ++itA, ++itF)</div>
2405
- <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; {</div>
2406
- <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="comment">//Some programs (e.g. Linux kernel) leave unneeded parameters empty.</span></div>
2407
- <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">if</span> (itA == ieA)</div>
2408
- <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; {</div>
2409
- <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; !! not enough args\n&quot;</span>);</div>
2410
- <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <span class="keywordflow">break</span>;</div>
2411
- <div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; }</div>
2412
- <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* AA = cs-&gt;getArgOperand(itA), *FA = &amp;*itF; <span class="comment">//current actual/formal arg</span></div>
2413
- <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; </div>
2414
- <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process actual parm &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(AA)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
2382
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01001">1001</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2383
+ <div class="fragment"><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;{</div>
2384
+ <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; </div>
2385
+ <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
2386
+ <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cs);</div>
2387
+ <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
2388
+ <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div>
2389
+ <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle direct call &quot;</span> &lt;&lt; svfcall-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>() &lt;&lt; <span class="stringliteral">&quot; callee &quot;</span> &lt;&lt; <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
2390
+ <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; </div>
2391
+ <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="comment">//Only handle the ret.val. if it&#39;s used as a ptr.</span></div>
2392
+ <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstrec = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs);</div>
2393
+ <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <span class="comment">//Does it actually return a ptr?</span></div>
2394
+ <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keywordflow">if</span> (!cs-&gt;getType()-&gt;isVoidTy())</div>
2395
+ <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; {</div>
2396
+ <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcret = <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">getReturnNode</a>(svffun);</div>
2397
+ <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callICFGNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
2398
+ <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitICFGNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(svffun);</div>
2399
+ <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a89e8cc23aad23d2c326b4a5ff12535ca">addRetEdge</a>(srcret, dstrec,callICFGNode, exitICFGNode);</div>
2400
+ <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; }</div>
2401
+ <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="comment">//Iterators for the actual and formal parameters</span></div>
2402
+ <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> itA = 0, ieA = cs-&gt;arg_size();</div>
2403
+ <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; Function::const_arg_iterator itF = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;arg_begin(), ieF = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;arg_end();</div>
2404
+ <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="comment">//Go through the fixed parameters.</span></div>
2405
+ <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; args:&quot;</span>);</div>
2406
+ <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keywordflow">for</span> (; itF != ieF; ++itA, ++itF)</div>
2407
+ <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; {</div>
2408
+ <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="comment">//Some programs (e.g. Linux kernel) leave unneeded parameters empty.</span></div>
2409
+ <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <span class="keywordflow">if</span> (itA == ieA)</div>
2410
+ <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; {</div>
2411
+ <div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; !! not enough args\n&quot;</span>);</div>
2412
+ <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <span class="keywordflow">break</span>;</div>
2413
+ <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; }</div>
2414
+ <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* AA = cs-&gt;getArgOperand(itA), *FA = &amp;*itF; <span class="comment">//current actual/formal arg</span></div>
2415
2415
  <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; </div>
2416
- <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstFA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(FA);</div>
2417
- <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcAA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(AA);</div>
2418
- <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
2419
- <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(svffun);</div>
2420
- <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abaf03c3031ef3940c73e3cd8e8ca17b6">addCallEdge</a>(srcAA, dstFA, icfgNode, entry);</div>
2421
- <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; }</div>
2422
- <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="comment">//Any remaining actual args must be varargs.</span></div>
2423
- <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isVarArg())</div>
2424
- <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; {</div>
2425
- <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vaF = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3fe99644b2bf5f0f9b2b21a56a400ad4">getVarargNode</a>(svffun);</div>
2426
- <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n varargs:&quot;</span>);</div>
2427
- <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">for</span> (; itA != ieA; ++itA)</div>
2428
- <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; {</div>
2429
- <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* AA = cs-&gt;getArgOperand(itA);</div>
2430
- <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnAA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(AA);</div>
2431
- <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
2432
- <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(svffun);</div>
2433
- <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abaf03c3031ef3940c73e3cd8e8ca17b6">addCallEdge</a>(vnAA,vaF, icfgNode,entry);</div>
2434
- <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; }</div>
2435
- <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; }</div>
2436
- <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">if</span>(itA != ieA)</div>
2437
- <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; {</div>
2438
- <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">&quot;too many args to non-vararg func.&quot;</span>);</div>
2439
- <div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + svfcall-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>() + <span class="stringliteral">&quot;)&quot;</span>);</div>
2440
- <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; </div>
2441
- <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; }</div>
2442
- <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;}</div>
2416
+ <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process actual parm &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(AA)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
2417
+ <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; </div>
2418
+ <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstFA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(FA);</div>
2419
+ <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcAA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(AA);</div>
2420
+ <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
2421
+ <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(svffun);</div>
2422
+ <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abaf03c3031ef3940c73e3cd8e8ca17b6">addCallEdge</a>(srcAA, dstFA, icfgNode, entry);</div>
2423
+ <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; }</div>
2424
+ <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="comment">//Any remaining actual args must be varargs.</span></div>
2425
+ <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isVarArg())</div>
2426
+ <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; {</div>
2427
+ <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vaF = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3fe99644b2bf5f0f9b2b21a56a400ad4">getVarargNode</a>(svffun);</div>
2428
+ <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n varargs:&quot;</span>);</div>
2429
+ <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keywordflow">for</span> (; itA != ieA; ++itA)</div>
2430
+ <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; {</div>
2431
+ <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* AA = cs-&gt;getArgOperand(itA);</div>
2432
+ <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnAA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(AA);</div>
2433
+ <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
2434
+ <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(svffun);</div>
2435
+ <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abaf03c3031ef3940c73e3cd8e8ca17b6">addCallEdge</a>(vnAA,vaF, icfgNode,entry);</div>
2436
+ <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; }</div>
2437
+ <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; }</div>
2438
+ <div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">if</span>(itA != ieA)</div>
2439
+ <div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; {</div>
2440
+ <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">&quot;too many args to non-vararg func.&quot;</span>);</div>
2441
+ <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + svfcall-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>() + <span class="stringliteral">&quot;)&quot;</span>);</div>
2442
+ <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; </div>
2443
+ <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; }</div>
2444
+ <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;}</div>
2443
2445
  </div><!-- fragment -->
2444
2446
  </div>
2445
2447
  </div>
@@ -2691,14 +2693,14 @@ Private Attributes</h2></td></tr>
2691
2693
  <p>Handle indirect call. </p>
2692
2694
  <p>Indirect call is resolved on-the-fly during pointer analysis </p>
2693
2695
 
2694
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01122">1122</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2695
- <div class="fragment"><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;{</div>
2696
- <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cs);</div>
2697
- <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfcalledval = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(cs-&gt;getCalledOperand());</div>
2698
- <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; </div>
2699
- <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
2700
- <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af4a5fd9ecddb1447207335917adccd68">addIndirectCallsites</a>(cbn,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(svfcalledval));</div>
2701
- <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;}</div>
2696
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01124">1124</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2697
+ <div class="fragment"><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;{</div>
2698
+ <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cs);</div>
2699
+ <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfcalledval = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(cs-&gt;getCalledOperand());</div>
2700
+ <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; </div>
2701
+ <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
2702
+ <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af4a5fd9ecddb1447207335917adccd68">addIndirectCallsites</a>(cbn,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(svfcalledval));</div>
2703
+ <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;}</div>
2702
2704
  </div><!-- fragment -->
2703
2705
  </div>
2704
2706
  </div>
@@ -2798,78 +2800,78 @@ Private Attributes</h2></td></tr>
2798
2800
  </div><div class="memdoc">
2799
2801
  <p>src should not point to anything yet</p>
2800
2802
 
2801
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00490">490</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2802
- <div class="fragment"><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;{</div>
2803
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_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="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(gvar)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; constant initializer: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(C)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
2804
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (C-&gt;getType()-&gt;isSingleValueType())</div>
2805
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div>
2806
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</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>
2807
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="comment">// get the field value if it is available, otherwise we create a dummy field node.</span></div>
2808
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(gvar, <span class="keyword">nullptr</span>);</div>
2809
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> field = <a class="code" href="classSVF_1_1SVFIRBuilder.html#af4e2ec8dee9fca167e20b01cc10b56fd">getGlobalVarField</a>(gvar, <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>, <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(C-&gt;getType()));</div>
2810
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; </div>
2811
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalVariable, Function&gt;(C))</div>
2812
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; {</div>
2813
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div>
2814
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div>
2815
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; }</div>
2816
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantExpr&gt;(C))</div>
2817
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div>
2818
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="comment">// add gep edge of C1 itself is a constant expression</span></div>
2819
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(C);</div>
2820
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div>
2821
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div>
2822
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div>
2823
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;BlockAddress&gt;(C))</div>
2824
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div>
2825
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">// blockaddress instruction (e.g. i8* blockaddress(@run_vm, %182))</span></div>
2826
- <div class="line"><a name="l00516"></a><span class="lineno"> 516</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>
2827
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(C);</div>
2828
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div>
2829
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</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>
2830
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div>
2831
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">else</span></div>
2832
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div>
2833
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div>
2834
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div>
2835
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</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>
2836
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</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>
2837
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div>
2838
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
2839
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantArray, ConstantStruct&gt;(C))</div>
2840
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {</div>
2841
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">LLVMUtil::isValVtbl</a>(gvar) &amp;&amp; !<a class="code" href="classSVF_1_1Options.html#a88bb706e03a3dd04546b4ce62af7b140">Options::VtableInSVFIR</a>())</div>
2842
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span>;</div>
2843
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</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>
2844
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; {</div>
2845
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a9f7c24325d897b598d6b989fdc4aae1e">getSymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(C-&gt;getType()), i);</div>
2846
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)), <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> + off);</div>
2847
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div>
2848
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div>
2849
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</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>
2850
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div>
2851
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a18dd95e01a50aa82165c46a3801053c5">Options::ModelConsts</a>())</div>
2852
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div>
2853
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</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>
2854
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; {</div>
2855
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</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>
2856
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {</div>
2857
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a9f7c24325d897b598d6b989fdc4aae1e">getSymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(C-&gt;getType()), i);</div>
2858
- <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ct = seq-&gt;getElementAsConstant(i);</div>
2859
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, ct, <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> + off);</div>
2860
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; }</div>
2861
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</div>
2862
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">else</span></div>
2863
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; {</div>
2864
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; assert((SVFUtil::isa&lt;ConstantAggregateZero, UndefValue&gt;(data)) &amp;&amp; <span class="stringliteral">&quot;Single value type data should have been handled!&quot;</span>);</div>
2865
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div>
2866
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div>
2867
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div>
2868
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">else</span></div>
2869
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; {</div>
2870
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="comment">//TODO:assert(SVFUtil::isa&lt;ConstantVector&gt;(C),&quot;what else do we have&quot;);</span></div>
2871
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div>
2872
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;}</div>
2803
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00492">492</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2804
+ <div class="fragment"><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;{</div>
2805
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_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="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(gvar)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; constant initializer: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(C)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
2806
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">if</span> (C-&gt;getType()-&gt;isSingleValueType())</div>
2807
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; {</div>
2808
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</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>
2809
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// get the field value if it is available, otherwise we create a dummy field node.</span></div>
2810
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(gvar, <span class="keyword">nullptr</span>);</div>
2811
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> field = <a class="code" href="classSVF_1_1SVFIRBuilder.html#af4e2ec8dee9fca167e20b01cc10b56fd">getGlobalVarField</a>(gvar, <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>, <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(C-&gt;getType()));</div>
2812
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; </div>
2813
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalVariable, Function&gt;(C))</div>
2814
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div>
2815
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div>
2816
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div>
2817
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div>
2818
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantExpr&gt;(C))</div>
2819
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div>
2820
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="comment">// add gep edge of C1 itself is a constant expression</span></div>
2821
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(C);</div>
2822
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div>
2823
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div>
2824
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div>
2825
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;BlockAddress&gt;(C))</div>
2826
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; {</div>
2827
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="comment">// blockaddress instruction (e.g. i8* blockaddress(@run_vm, %182))</span></div>
2828
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</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>
2829
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(C);</div>
2830
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div>
2831
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</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>
2832
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div>
2833
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">else</span></div>
2834
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {</div>
2835
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div>
2836
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div>
2837
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</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>
2838
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</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>
2839
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
2840
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; }</div>
2841
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantArray, ConstantStruct&gt;(C))</div>
2842
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div>
2843
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">LLVMUtil::isValVtbl</a>(gvar) &amp;&amp; !<a class="code" href="classSVF_1_1Options.html#a88bb706e03a3dd04546b4ce62af7b140">Options::VtableInSVFIR</a>())</div>
2844
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">return</span>;</div>
2845
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</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>
2846
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div>
2847
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a9f7c24325d897b598d6b989fdc4aae1e">getSymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(C-&gt;getType()), i);</div>
2848
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)), <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> + off);</div>
2849
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; }</div>
2850
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div>
2851
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</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>
2852
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div>
2853
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a18dd95e01a50aa82165c46a3801053c5">Options::ModelConsts</a>())</div>
2854
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; {</div>
2855
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</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>
2856
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {</div>
2857
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</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>
2858
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; {</div>
2859
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a9f7c24325d897b598d6b989fdc4aae1e">getSymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(C-&gt;getType()), i);</div>
2860
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ct = seq-&gt;getElementAsConstant(i);</div>
2861
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, ct, <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> + off);</div>
2862
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div>
2863
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div>
2864
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">else</span></div>
2865
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; {</div>
2866
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; assert((SVFUtil::isa&lt;ConstantAggregateZero, UndefValue&gt;(data)) &amp;&amp; <span class="stringliteral">&quot;Single value type data should have been handled!&quot;</span>);</div>
2867
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div>
2868
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div>
2869
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div>
2870
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">else</span></div>
2871
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; {</div>
2872
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="comment">//TODO:assert(SVFUtil::isa&lt;ConstantVector&gt;(C),&quot;what else do we have&quot;);</span></div>
2873
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; }</div>
2874
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;}</div>
2873
2875
  </div><!-- fragment -->
2874
2876
  </div>
2875
2877
  </div>
@@ -2988,126 +2990,126 @@ Private Attributes</h2></td></tr>
2988
2990
  <p>Process constant expression. </p>
2989
2991
  <p>Handle constant expression, and connect the gep edge </p>
2990
2992
 
2991
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00338">338</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2992
- <div class="fragment"><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;{</div>
2993
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ref = SVFUtil::dyn_cast&lt;Constant&gt;(val))</div>
2994
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div>
2995
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* gepce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5fc50624b5fe83b676b14bec4b99685">isGepConstantExpr</a>(ref))</div>
2996
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div>
2997
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle gep constant expression &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
2998
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = gepce-&gt;getOperand(0);</div>
2999
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// handle recursive constant express case (gep (bitcast (gep X 1)) 1)</span></div>
3000
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(opnd);</div>
3001
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keyword">auto</span> &amp;GEPOp = llvm::cast&lt;llvm::GEPOperator&gt;(*gepce);</div>
3002
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *pType = GEPOp.getSourceElementType();</div>
3003
- <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(pType));</div>
3004
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordtype">bool</span> constGep = <a class="code" href="classSVF_1_1SVFIRBuilder.html#ac8c440fe6513495edb8949df5a32d979">computeGepOffset</a>(gepce, ap);</div>
3005
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">// must invoke pag methods here, otherwise it will be a dead recursion cycle</span></div>
3006
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3007
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3008
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(gepce, <span class="keyword">nullptr</span>);</div>
3009
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="comment">/*</span></div>
3010
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="comment"> * The gep edge created are like constexpr (same edge may appear at multiple callsites)</span></div>
3011
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment"> * so bb/inst of this edge may be rewritten several times, we treat it as global here.</span></div>
3012
- <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment"> */</span></div>
3013
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4e1b6797df3e7b98da876f50741e6a3a">addGepEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(opnd)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(gepce)), ap, constGep);</div>
3014
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3015
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div>
3016
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* castce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">isCastConstantExpr</a>(ref))</div>
3017
- <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div>
3018
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle cast constant expression &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
3019
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = castce-&gt;getOperand(0);</div>
3020
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(opnd);</div>
3021
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3022
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3023
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(castce, <span class="keyword">nullptr</span>);</div>
3024
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</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#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(opnd)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(castce)));</div>
3025
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3026
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div>
3027
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* selectce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae59b0dc7f29dbd2018e819f77465f66e">isSelectConstantExpr</a>(ref))</div>
3028
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div>
3029
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle select constant expression &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
3030
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* src1 = selectce-&gt;getOperand(1);</div>
3031
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* src2 = selectce-&gt;getOperand(2);</div>
3032
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(src1);</div>
3033
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(src2);</div>
3034
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3035
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3036
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(selectce, <span class="keyword">nullptr</span>);</div>
3037
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(selectce-&gt;getOperand(0)));</div>
3038
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nsrc1 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(src1));</div>
3039
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nsrc2 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(src2));</div>
3040
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nres = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(selectce));</div>
3041
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5bf90e30bb591caba9ff85535e6a33f8">addSelectStmt</a>(nres,nsrc1, nsrc2, cond);</div>
3042
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3043
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div>
3044
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="comment">// if we meet a int2ptr, then it points-to black hole</span></div>
3045
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* int2Ptrce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a>(ref))</div>
3046
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div>
3047
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a55d8504dbc766c4ede031299a37417ef">addGlobalBlackHoleAddrEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(int2Ptrce)), int2Ptrce);</div>
3048
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div>
3049
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ptr2Intce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2834d135a2385efff783e6e22d2eff1f">isPtr2IntConstantExpr</a>(ref))</div>
3050
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div>
3051
- <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = ptr2Intce-&gt;getOperand(0);</div>
3052
- <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(opnd);</div>
3053
- <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3054
- <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3055
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ptr2Intce, <span class="keyword">nullptr</span>);</div>
3056
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</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#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(opnd)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(ptr2Intce)));</div>
3057
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3058
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div>
3059
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a946a2b51b848c45c6c52f03581ee05b8">isTruncConstantExpr</a>(ref) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa0b3e34188f721ff7145e47cb607c79a">isCmpConstantExpr</a>(ref))</div>
3060
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div>
3061
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="comment">// we don&#39;t handle trunc and cmp instruction for now</span></div>
3062
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3063
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3064
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div>
3065
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref));</div>
3066
- <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3067
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3068
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div>
3069
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a35b36394af726c679fe2c1b6051db7c4">isBinaryConstantExpr</a>(ref))</div>
3070
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div>
3071
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="comment">// we don&#39;t handle binary constant expression like add(x,y) now</span></div>
3072
- <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3073
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3074
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div>
3075
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref));</div>
3076
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3077
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3078
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div>
3079
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a215cc9fd716798bbb7f96f5b64e01349">isUnaryConstantExpr</a>(ref))</div>
3080
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; {</div>
3081
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="comment">// we don&#39;t handle unary constant expression like fneg(x) now</span></div>
3082
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3083
- <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3084
- <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div>
3085
- <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref));</div>
3086
- <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3087
- <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3088
- <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div>
3089
- <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantAggregate&gt;(ref))</div>
3090
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div>
3091
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="comment">// we don&#39;t handle constant aggregate like constant vectors</span></div>
3092
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div>
3093
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;BlockAddress&gt;(ref))</div>
3094
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div>
3095
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="comment">// blockaddress instruction (e.g. i8* blockaddress(@run_vm, %182))</span></div>
3096
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</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>
3097
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3098
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3099
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div>
3100
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref));</div>
3101
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</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>(), dst);</div>
3102
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3103
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
3104
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">else</span></div>
3105
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div>
3106
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantExpr&gt;(val))</div>
3107
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we don&#39;t handle all other constant expression for now!&quot;</span>);</div>
3108
- <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div>
3109
- <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
3110
- <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;}</div>
2993
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00340">340</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2994
+ <div class="fragment"><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;{</div>
2995
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ref = SVFUtil::dyn_cast&lt;Constant&gt;(val))</div>
2996
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div>
2997
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* gepce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5fc50624b5fe83b676b14bec4b99685">isGepConstantExpr</a>(ref))</div>
2998
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; {</div>
2999
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle gep constant expression &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
3000
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = gepce-&gt;getOperand(0);</div>
3001
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="comment">// handle recursive constant express case (gep (bitcast (gep X 1)) 1)</span></div>
3002
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(opnd);</div>
3003
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keyword">auto</span> &amp;GEPOp = llvm::cast&lt;llvm::GEPOperator&gt;(*gepce);</div>
3004
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *pType = GEPOp.getSourceElementType();</div>
3005
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(pType));</div>
3006
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordtype">bool</span> constGep = <a class="code" href="classSVF_1_1SVFIRBuilder.html#ac8c440fe6513495edb8949df5a32d979">computeGepOffset</a>(gepce, ap);</div>
3007
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="comment">// must invoke pag methods here, otherwise it will be a dead recursion cycle</span></div>
3008
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3009
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3010
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(gepce, <span class="keyword">nullptr</span>);</div>
3011
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="comment">/*</span></div>
3012
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment"> * The gep edge created are like constexpr (same edge may appear at multiple callsites)</span></div>
3013
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment"> * so bb/inst of this edge may be rewritten several times, we treat it as global here.</span></div>
3014
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"> */</span></div>
3015
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4e1b6797df3e7b98da876f50741e6a3a">addGepEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(opnd)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(gepce)), ap, constGep);</div>
3016
+ <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3017
+ <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div>
3018
+ <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* castce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">isCastConstantExpr</a>(ref))</div>
3019
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div>
3020
+ <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle cast constant expression &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
3021
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = castce-&gt;getOperand(0);</div>
3022
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(opnd);</div>
3023
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3024
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3025
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(castce, <span class="keyword">nullptr</span>);</div>
3026
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</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#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(opnd)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(castce)));</div>
3027
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3028
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
3029
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* selectce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae59b0dc7f29dbd2018e819f77465f66e">isSelectConstantExpr</a>(ref))</div>
3030
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div>
3031
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle select constant expression &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
3032
+ <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* src1 = selectce-&gt;getOperand(1);</div>
3033
+ <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* src2 = selectce-&gt;getOperand(2);</div>
3034
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(src1);</div>
3035
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(src2);</div>
3036
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3037
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3038
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(selectce, <span class="keyword">nullptr</span>);</div>
3039
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(selectce-&gt;getOperand(0)));</div>
3040
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nsrc1 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(src1));</div>
3041
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nsrc2 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(src2));</div>
3042
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nres = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(selectce));</div>
3043
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5bf90e30bb591caba9ff85535e6a33f8">addSelectStmt</a>(nres,nsrc1, nsrc2, cond);</div>
3044
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3045
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
3046
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">// if we meet a int2ptr, then it points-to black hole</span></div>
3047
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* int2Ptrce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a>(ref))</div>
3048
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div>
3049
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a55d8504dbc766c4ede031299a37417ef">addGlobalBlackHoleAddrEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(int2Ptrce)), int2Ptrce);</div>
3050
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div>
3051
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ptr2Intce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2834d135a2385efff783e6e22d2eff1f">isPtr2IntConstantExpr</a>(ref))</div>
3052
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div>
3053
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = ptr2Intce-&gt;getOperand(0);</div>
3054
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(opnd);</div>
3055
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3056
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3057
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ptr2Intce, <span class="keyword">nullptr</span>);</div>
3058
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</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#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(opnd)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(ptr2Intce)));</div>
3059
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3060
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
3061
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a946a2b51b848c45c6c52f03581ee05b8">isTruncConstantExpr</a>(ref) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa0b3e34188f721ff7145e47cb607c79a">isCmpConstantExpr</a>(ref))</div>
3062
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div>
3063
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="comment">// we don&#39;t handle trunc and cmp instruction for now</span></div>
3064
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3065
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3066
+ <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div>
3067
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref));</div>
3068
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3069
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3070
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; }</div>
3071
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a35b36394af726c679fe2c1b6051db7c4">isBinaryConstantExpr</a>(ref))</div>
3072
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; {</div>
3073
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">// we don&#39;t handle binary constant expression like add(x,y) now</span></div>
3074
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3075
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3076
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div>
3077
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref));</div>
3078
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3079
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3080
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div>
3081
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a215cc9fd716798bbb7f96f5b64e01349">isUnaryConstantExpr</a>(ref))</div>
3082
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div>
3083
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="comment">// we don&#39;t handle unary constant expression like fneg(x) now</span></div>
3084
+ <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3085
+ <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3086
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div>
3087
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref));</div>
3088
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3089
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3090
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div>
3091
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantAggregate&gt;(ref))</div>
3092
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div>
3093
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">// we don&#39;t handle constant aggregate like constant vectors</span></div>
3094
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
3095
+ <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;BlockAddress&gt;(ref))</div>
3096
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; {</div>
3097
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="comment">// blockaddress instruction (e.g. i8* blockaddress(@run_vm, %182))</span></div>
3098
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</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>
3099
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
3100
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
3101
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div>
3102
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(ref));</div>
3103
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</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>(), dst);</div>
3104
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
3105
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
3106
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">else</span></div>
3107
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div>
3108
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantExpr&gt;(val))</div>
3109
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we don&#39;t handle all other constant expression for now!&quot;</span>);</div>
3110
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div>
3111
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
3112
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;}</div>
3111
3113
  </div><!-- fragment -->
3112
3114
  </div>
3113
3115
  </div>
@@ -3128,26 +3130,26 @@ Private Attributes</h2></td></tr>
3128
3130
 
3129
3131
  <p>Sanity check for <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a>. </p>
3130
3132
 
3131
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01167">1167</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3132
- <div class="fragment"><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;{</div>
3133
- <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> nIter = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nIter != <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nIter)</div>
3134
- <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; {</div>
3135
- <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; (void) <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nIter-&gt;first);</div>
3136
- <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="comment">//TODO::</span></div>
3137
- <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="comment">// (1) every source(root) node of a pag tree should be object node</span></div>
3138
- <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="comment">// if a node has no incoming edge, but has outgoing edges</span></div>
3139
- <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="comment">// then it has to be an object node.</span></div>
3140
- <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="comment">// (2) make sure every variable should be initialized</span></div>
3141
- <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="comment">// otherwise it causes the a null pointer, the aliasing relation may not be captured</span></div>
3142
- <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="comment">// when loading a pointer value should make sure</span></div>
3143
- <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="comment">// some value has been store into this pointer before</span></div>
3144
- <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="comment">// q = load p, some value should stored into p first like store w p;</span></div>
3145
- <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="comment">// (3) make sure PAGNode should not have a const expr value (pointer should have unique def)</span></div>
3146
- <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="comment">// (4) look closely into addComplexConsForExt, make sure program locations(e.g.,inst bb)</span></div>
3147
- <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="comment">// are set correctly for dummy gepval node</span></div>
3148
- <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="comment">// (5) reduce unnecessary copy edge (const casts) and ensure correctness.</span></div>
3149
- <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; }</div>
3150
- <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;}</div>
3133
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01169">1169</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3134
+ <div class="fragment"><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;{</div>
3135
+ <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> nIter = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nIter != <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nIter)</div>
3136
+ <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; {</div>
3137
+ <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; (void) <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nIter-&gt;first);</div>
3138
+ <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="comment">//TODO::</span></div>
3139
+ <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="comment">// (1) every source(root) node of a pag tree should be object node</span></div>
3140
+ <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="comment">// if a node has no incoming edge, but has outgoing edges</span></div>
3141
+ <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="comment">// then it has to be an object node.</span></div>
3142
+ <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="comment">// (2) make sure every variable should be initialized</span></div>
3143
+ <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="comment">// otherwise it causes the a null pointer, the aliasing relation may not be captured</span></div>
3144
+ <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="comment">// when loading a pointer value should make sure</span></div>
3145
+ <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="comment">// some value has been store into this pointer before</span></div>
3146
+ <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="comment">// q = load p, some value should stored into p first like store w p;</span></div>
3147
+ <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="comment">// (3) make sure PAGNode should not have a const expr value (pointer should have unique def)</span></div>
3148
+ <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="comment">// (4) look closely into addComplexConsForExt, make sure program locations(e.g.,inst bb)</span></div>
3149
+ <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="comment">// are set correctly for dummy gepval node</span></div>
3150
+ <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="comment">// (5) reduce unnecessary copy edge (const casts) and ensure correctness.</span></div>
3151
+ <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; }</div>
3152
+ <div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;}</div>
3151
3153
  </div><!-- fragment -->
3152
3154
  </div>
3153
3155
  </div>
@@ -3177,83 +3179,83 @@ Private Attributes</h2></td></tr>
3177
3179
  <p>We assume every <a class="el" href="classSVF_1_1GepValVar.html">GepValVar</a> and its <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> are unique across whole program</p>
3178
3180
  <p>We will have one unique function exit <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> for all returns</p>
3179
3181
 
3180
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01239">1239</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3181
- <div class="fragment"><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;{</div>
3182
- <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div>
3183
- <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <span class="keywordflow">return</span>;</div>
3184
- <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; </div>
3185
- <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; assert(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a> &amp;&amp; <span class="stringliteral">&quot;current Val is nullptr?&quot;</span>);</div>
3186
- <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a0e45ab5b38059371c47d5f2011118a4d">setBB</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>!=<span class="keyword">nullptr</span> ? <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a> : <span class="keyword">nullptr</span>);</div>
3187
- <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a6ae58a22d43361904c7033f5c790da38">setValue</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>);</div>
3188
- <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="comment">// backmap in valuToEdgeMap</span></div>
3189
- <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a51201a8fce21b56e3f59a31af04c7b76">mapValueToEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, edge);</div>
3190
- <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">getGlobalICFGNode</a>();</div>
3191
- <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* curInst = SVFUtil::dyn_cast&lt;SVFInstruction&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>))</div>
3192
- <div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; {</div>
3193
- <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* srcFun = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getFunction();</div>
3194
- <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* dstFun = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getFunction();</div>
3195
- <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keywordflow">if</span>(srcFun!=<span class="keyword">nullptr</span> &amp;&amp; !SVFUtil::isa&lt;RetPE&gt;(edge) &amp;&amp; !SVFUtil::isa&lt;SVFFunction&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getValue()))</div>
3196
- <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; {</div>
3197
- <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; assert(srcFun==curInst-&gt;getFunction() &amp;&amp; <span class="stringliteral">&quot;SrcNode of the PAGEdge not in the same function?&quot;</span>);</div>
3198
- <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; }</div>
3199
- <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <span class="keywordflow">if</span>(dstFun!=<span class="keyword">nullptr</span> &amp;&amp; !SVFUtil::isa&lt;CallPE&gt;(edge) &amp;&amp; !SVFUtil::isa&lt;SVFFunction&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getValue()))</div>
3200
- <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; {</div>
3201
- <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; assert(dstFun==curInst-&gt;getFunction() &amp;&amp; <span class="stringliteral">&quot;DstNode of the PAGEdge not in the same function?&quot;</span>);</div>
3202
- <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; }</div>
3203
- <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; </div>
3204
- <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keywordflow">if</span> (!(SVFUtil::isa&lt;GepStmt&gt;(edge) &amp;&amp; SVFUtil::isa&lt;GepValVar&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>())))</div>
3205
- <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; assert(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a> &amp;&amp; <span class="stringliteral">&quot;instruction does not have a basic block??&quot;</span>);</div>
3206
- <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; </div>
3207
- <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <span class="keywordflow">if</span>(curInst-&gt;isRetInst())</div>
3208
- <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; {</div>
3209
- <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(curInst-&gt;getFunction());</div>
3210
- <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; }</div>
3211
- <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="keywordflow">else</span></div>
3212
- <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; {</div>
3213
- <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;RetPE&gt;(edge))</div>
3214
- <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(curInst);</div>
3215
- <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="keywordflow">else</span></div>
3216
- <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(curInst);</div>
3217
- <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; }</div>
3218
- <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; }</div>
3219
- <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* arg = SVFUtil::dyn_cast&lt;SVFArgument&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>))</div>
3220
- <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; {</div>
3221
- <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; assert(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a> &amp;&amp; (<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">getParent</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>() == <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>));</div>
3222
- <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(arg-&gt;getParent());</div>
3223
- <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; }</div>
3224
- <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFConstant&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>) ||</div>
3225
- <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; SVFUtil::isa&lt;SVFFunction&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>) ||</div>
3226
- <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; SVFUtil::isa&lt;SVFMetadataAsValue&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>))</div>
3227
- <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; {</div>
3228
- <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>)</div>
3229
- <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">addGlobalPAGEdge</a>(edge);</div>
3230
- <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">else</span></div>
3231
- <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; {</div>
3232
- <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>());</div>
3233
- <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; }</div>
3234
- <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; }</div>
3235
- <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordflow">else</span></div>
3236
- <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; {</div>
3237
- <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else value can we have?&quot;</span>);</div>
3238
- <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; }</div>
3239
- <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; </div>
3240
- <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6">addToSVFStmtList</a>(icfgNode,edge);</div>
3241
- <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; icfgNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be">addSVFStmt</a>(edge);</div>
3242
- <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = SVFUtil::dyn_cast&lt;CallPE&gt;(edge))</div>
3243
- <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; {</div>
3244
- <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callNode = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>*<span class="keyword">&gt;</span>(callPE-&gt;getCallSite());</div>
3245
- <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entryNode = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>*<span class="keyword">&gt;</span>(callPE-&gt;getFunEntryICFGNode());</div>
3246
- <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(callNode,entryNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">ICFGEdge::CallCF</a>))</div>
3247
- <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; SVFUtil::cast&lt;CallCFGEdge&gt;(edge)-&gt;addCallPE(callPE);</div>
3248
- <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; }</div>
3249
- <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retPE = SVFUtil::dyn_cast&lt;RetPE&gt;(edge))</div>
3250
- <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; {</div>
3251
- <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retNode = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>*<span class="keyword">&gt;</span>(retPE-&gt;getCallSite()-&gt;getRetICFGNode());</div>
3252
- <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitNode = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>*<span class="keyword">&gt;</span>(retPE-&gt;getFunExitICFGNode());</div>
3253
- <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(exitNode, retNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">ICFGEdge::RetCF</a>))</div>
3254
- <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; SVFUtil::cast&lt;RetCFGEdge&gt;(edge)-&gt;addRetPE(retPE);</div>
3255
- <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; }</div>
3256
- <div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;}</div>
3182
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01241">1241</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3183
+ <div class="fragment"><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;{</div>
3184
+ <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div>
3185
+ <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="keywordflow">return</span>;</div>
3186
+ <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; </div>
3187
+ <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; assert(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a> &amp;&amp; <span class="stringliteral">&quot;current Val is nullptr?&quot;</span>);</div>
3188
+ <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a0e45ab5b38059371c47d5f2011118a4d">setBB</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>!=<span class="keyword">nullptr</span> ? <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a> : <span class="keyword">nullptr</span>);</div>
3189
+ <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a6ae58a22d43361904c7033f5c790da38">setValue</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>);</div>
3190
+ <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <span class="comment">// backmap in valuToEdgeMap</span></div>
3191
+ <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a51201a8fce21b56e3f59a31af04c7b76">mapValueToEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, edge);</div>
3192
+ <div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">getGlobalICFGNode</a>();</div>
3193
+ <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* curInst = SVFUtil::dyn_cast&lt;SVFInstruction&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>))</div>
3194
+ <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; {</div>
3195
+ <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* srcFun = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getFunction();</div>
3196
+ <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* dstFun = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getFunction();</div>
3197
+ <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="keywordflow">if</span>(srcFun!=<span class="keyword">nullptr</span> &amp;&amp; !SVFUtil::isa&lt;RetPE&gt;(edge) &amp;&amp; !SVFUtil::isa&lt;SVFFunction&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getValue()))</div>
3198
+ <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; {</div>
3199
+ <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; assert(srcFun==curInst-&gt;getFunction() &amp;&amp; <span class="stringliteral">&quot;SrcNode of the PAGEdge not in the same function?&quot;</span>);</div>
3200
+ <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; }</div>
3201
+ <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <span class="keywordflow">if</span>(dstFun!=<span class="keyword">nullptr</span> &amp;&amp; !SVFUtil::isa&lt;CallPE&gt;(edge) &amp;&amp; !SVFUtil::isa&lt;SVFFunction&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getValue()))</div>
3202
+ <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; {</div>
3203
+ <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; assert(dstFun==curInst-&gt;getFunction() &amp;&amp; <span class="stringliteral">&quot;DstNode of the PAGEdge not in the same function?&quot;</span>);</div>
3204
+ <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; }</div>
3205
+ <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; </div>
3206
+ <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordflow">if</span> (!(SVFUtil::isa&lt;GepStmt&gt;(edge) &amp;&amp; SVFUtil::isa&lt;GepValVar&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>())))</div>
3207
+ <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; assert(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a> &amp;&amp; <span class="stringliteral">&quot;instruction does not have a basic block??&quot;</span>);</div>
3208
+ <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; </div>
3209
+ <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; <span class="keywordflow">if</span>(curInst-&gt;isRetInst())</div>
3210
+ <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; {</div>
3211
+ <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(curInst-&gt;getFunction());</div>
3212
+ <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; }</div>
3213
+ <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">else</span></div>
3214
+ <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; {</div>
3215
+ <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;RetPE&gt;(edge))</div>
3216
+ <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(curInst);</div>
3217
+ <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <span class="keywordflow">else</span></div>
3218
+ <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(curInst);</div>
3219
+ <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; }</div>
3220
+ <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; }</div>
3221
+ <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* arg = SVFUtil::dyn_cast&lt;SVFArgument&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>))</div>
3222
+ <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; {</div>
3223
+ <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; assert(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a> &amp;&amp; (<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">getParent</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>() == <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>));</div>
3224
+ <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(arg-&gt;getParent());</div>
3225
+ <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; }</div>
3226
+ <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFConstant&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>) ||</div>
3227
+ <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; SVFUtil::isa&lt;SVFFunction&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>) ||</div>
3228
+ <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; SVFUtil::isa&lt;SVFMetadataAsValue&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>))</div>
3229
+ <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; {</div>
3230
+ <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>)</div>
3231
+ <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">addGlobalPAGEdge</a>(edge);</div>
3232
+ <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordflow">else</span></div>
3233
+ <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; {</div>
3234
+ <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>());</div>
3235
+ <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; }</div>
3236
+ <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; }</div>
3237
+ <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; <span class="keywordflow">else</span></div>
3238
+ <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; {</div>
3239
+ <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else value can we have?&quot;</span>);</div>
3240
+ <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; }</div>
3241
+ <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; </div>
3242
+ <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6">addToSVFStmtList</a>(icfgNode,edge);</div>
3243
+ <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; icfgNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be">addSVFStmt</a>(edge);</div>
3244
+ <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = SVFUtil::dyn_cast&lt;CallPE&gt;(edge))</div>
3245
+ <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; {</div>
3246
+ <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callNode = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>*<span class="keyword">&gt;</span>(callPE-&gt;getCallSite());</div>
3247
+ <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entryNode = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>*<span class="keyword">&gt;</span>(callPE-&gt;getFunEntryICFGNode());</div>
3248
+ <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(callNode,entryNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">ICFGEdge::CallCF</a>))</div>
3249
+ <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; SVFUtil::cast&lt;CallCFGEdge&gt;(edge)-&gt;addCallPE(callPE);</div>
3250
+ <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; }</div>
3251
+ <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retPE = SVFUtil::dyn_cast&lt;RetPE&gt;(edge))</div>
3252
+ <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; {</div>
3253
+ <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retNode = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>*<span class="keyword">&gt;</span>(retPE-&gt;getCallSite()-&gt;getRetICFGNode());</div>
3254
+ <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitNode = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>*<span class="keyword">&gt;</span>(retPE-&gt;getFunExitICFGNode());</div>
3255
+ <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(exitNode, retNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">ICFGEdge::RetCF</a>))</div>
3256
+ <div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; SVFUtil::cast&lt;RetCFGEdge&gt;(edge)-&gt;addRetPE(retPE);</div>
3257
+ <div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; }</div>
3258
+ <div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;}</div>
3257
3259
  </div><!-- fragment -->
3258
3260
  </div>
3259
3261
  </div>
@@ -3361,38 +3363,38 @@ Private Attributes</h2></td></tr>
3361
3363
 
3362
3364
  <p>connect PAG edges based on callgraph </p>
3363
3365
 
3364
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01131">1131</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3365
- <div class="fragment"><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;{</div>
3366
- <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; PTACallGraph::CallEdgeMap::const_iterator iter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().begin();</div>
3367
- <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; PTACallGraph::CallEdgeMap::const_iterator eiter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().end();</div>
3368
- <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keywordflow">for</span> (; iter != eiter; iter++)</div>
3369
- <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; {</div>
3370
- <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlock = iter-&gt;first;</div>
3371
- <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::cast&lt;CallBase&gt;(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getLLVMValue(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()));</div>
3372
- <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; assert(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#aa11226a2e4fa6a7b1d78006cc8ca0518">isIndirectCall</a>() &amp;&amp; <span class="stringliteral">&quot;this is not an indirect call?&quot;</span>);</div>
3373
- <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a>&amp; functions = iter-&gt;second;</div>
3374
- <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div>
3375
- <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; {</div>
3376
- <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = SVFUtil::cast&lt;Function&gt;(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getLLVMValue(*func_iter));</div>
3377
- <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; </div>
3378
- <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(*func_iter))</div>
3379
- <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; {</div>
3380
- <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(callee, callee-&gt;empty() ? <span class="keyword">nullptr</span> : &amp;callee-&gt;getEntryBlock());</div>
3381
- <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(callee);</div>
3382
- <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8b664a9d689562bd857f056e6e08c59b">handleExtCall</a>(callbase, svfcallee);</div>
3383
- <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; }</div>
3384
- <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keywordflow">else</span></div>
3385
- <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; {</div>
3386
- <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>(), callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>());</div>
3387
- <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">handleDirectCall</a>(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>*<span class="keyword">&gt;</span>(callbase), callee);</div>
3388
- <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; }</div>
3389
- <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; }</div>
3390
- <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; }</div>
3391
- <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; </div>
3392
- <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <span class="comment">// dump SVFIR</span></div>
3393
- <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1dd9ad3f11454be49b4c5099503db8e8">Options::PAGDotGraph</a>())</div>
3394
- <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">&quot;svfir_final&quot;</span>);</div>
3395
- <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;}</div>
3366
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01133">1133</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3367
+ <div class="fragment"><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;{</div>
3368
+ <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; PTACallGraph::CallEdgeMap::const_iterator iter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().begin();</div>
3369
+ <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; PTACallGraph::CallEdgeMap::const_iterator eiter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().end();</div>
3370
+ <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keywordflow">for</span> (; iter != eiter; iter++)</div>
3371
+ <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; {</div>
3372
+ <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlock = iter-&gt;first;</div>
3373
+ <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::cast&lt;CallBase&gt;(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getLLVMValue(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()));</div>
3374
+ <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; assert(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#aa11226a2e4fa6a7b1d78006cc8ca0518">isIndirectCall</a>() &amp;&amp; <span class="stringliteral">&quot;this is not an indirect call?&quot;</span>);</div>
3375
+ <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a>&amp; functions = iter-&gt;second;</div>
3376
+ <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div>
3377
+ <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; {</div>
3378
+ <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = SVFUtil::cast&lt;Function&gt;(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getLLVMValue(*func_iter));</div>
3379
+ <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; </div>
3380
+ <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(*func_iter))</div>
3381
+ <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; {</div>
3382
+ <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(callee, callee-&gt;empty() ? <span class="keyword">nullptr</span> : &amp;callee-&gt;getEntryBlock());</div>
3383
+ <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(callee);</div>
3384
+ <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8b664a9d689562bd857f056e6e08c59b">handleExtCall</a>(callbase, svfcallee);</div>
3385
+ <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; }</div>
3386
+ <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="keywordflow">else</span></div>
3387
+ <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; {</div>
3388
+ <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>(), callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>());</div>
3389
+ <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">handleDirectCall</a>(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>*<span class="keyword">&gt;</span>(callbase), callee);</div>
3390
+ <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; }</div>
3391
+ <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; }</div>
3392
+ <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; }</div>
3393
+ <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; </div>
3394
+ <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="comment">// dump SVFIR</span></div>
3395
+ <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1dd9ad3f11454be49b4c5099503db8e8">Options::PAGDotGraph</a>())</div>
3396
+ <div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">&quot;svfir_final&quot;</span>);</div>
3397
+ <div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;}</div>
3396
3398
  </div><!-- fragment -->
3397
3399
  </div>
3398
3400
  </div>
@@ -3423,20 +3425,20 @@ Private Attributes</h2></td></tr>
3423
3425
  <p>Our visit overrides. </p>
3424
3426
  <p>Visit alloca instructions Add edge V (dst) &lt;&ndash; O (src), V here is a value node on <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a>, O is object node on <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> </p>
3425
3427
 
3426
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00621">621</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3427
- <div class="fragment"><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;{</div>
3428
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; </div>
3429
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="comment">// AllocaInst should always be a pointer type</span></div>
3430
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; assert(SVFUtil::isa&lt;PointerType&gt;(inst.getType()));</div>
3431
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; </div>
3432
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process alloca &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
3433
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3434
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; </div>
3435
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(&amp;inst);</div>
3428
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00623">623</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3429
+ <div class="fragment"><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;{</div>
3430
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; </div>
3431
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="comment">// AllocaInst should always be a pointer type</span></div>
3432
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; assert(SVFUtil::isa&lt;PointerType&gt;(inst.getType()));</div>
3433
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; </div>
3434
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process alloca &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
3435
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3436
3436
  <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; </div>
3437
- <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(src, dst);</div>
3437
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(&amp;inst);</div>
3438
3438
  <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; </div>
3439
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;}</div>
3439
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(src, dst);</div>
3440
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; </div>
3441
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;}</div>
3440
3442
  </div><!-- fragment -->
3441
3443
  </div>
3442
3444
  </div>
@@ -3519,17 +3521,17 @@ Private Attributes</h2></td></tr>
3519
3521
  </div><div class="memdoc">
3520
3522
  <p>Visit Binary Operator </p>
3521
3523
 
3522
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00747">747</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3523
- <div class="fragment"><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;{</div>
3524
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3525
- <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; assert(inst.getNumOperands() == 2 &amp;&amp; <span class="stringliteral">&quot;not two operands for BinaryOperator?&quot;</span>);</div>
3526
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* op1 = inst.getOperand(0);</div>
3527
- <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1Node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(op1);</div>
3528
- <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* op2 = inst.getOperand(1);</div>
3529
- <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op2Node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(op2);</div>
3530
- <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> opcode = inst.getOpcode();</div>
3531
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3f954c61381fe31088e791772c334105">addBinaryOPEdge</a>(op1Node, op2Node, dst, opcode);</div>
3532
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;}</div>
3524
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00749">749</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3525
+ <div class="fragment"><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;{</div>
3526
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3527
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; assert(inst.getNumOperands() == 2 &amp;&amp; <span class="stringliteral">&quot;not two operands for BinaryOperator?&quot;</span>);</div>
3528
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* op1 = inst.getOperand(0);</div>
3529
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1Node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(op1);</div>
3530
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* op2 = inst.getOperand(1);</div>
3531
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op2Node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(op2);</div>
3532
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> opcode = inst.getOpcode();</div>
3533
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3f954c61381fe31088e791772c334105">addBinaryOPEdge</a>(op1Node, op2Node, dst, opcode);</div>
3534
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;}</div>
3533
3535
  </div><!-- fragment -->
3534
3536
  </div>
3535
3537
  </div>
@@ -3550,27 +3552,27 @@ Private Attributes</h2></td></tr>
3550
3552
  </div><div class="memdoc">
3551
3553
  <p>Branch and switch instructions are treated as UnaryOP br cmp label if.then, label if.else </p>
3552
3554
 
3553
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00923">923</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3554
- <div class="fragment"><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;{</div>
3555
- <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> brinst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3556
- <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond;</div>
3557
- <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordflow">if</span> (inst.isConditional())</div>
3558
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div>
3559
- <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">else</span></div>
3560
- <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>();</div>
3561
- <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; </div>
3562
- <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; assert(inst.getNumSuccessors() &lt;= 2 &amp;&amp; <span class="stringliteral">&quot;if/else has more than two branches?&quot;</span>);</div>
3555
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00925">925</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3556
+ <div class="fragment"><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;{</div>
3557
+ <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> brinst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3558
+ <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond;</div>
3559
+ <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">if</span> (inst.isConditional())</div>
3560
+ <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div>
3561
+ <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keywordflow">else</span></div>
3562
+ <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>();</div>
3563
3563
  <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; </div>
3564
- <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <a class="code" href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">BranchStmt::SuccAndCondPairVec</a> successors;</div>
3565
- <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; inst.getNumSuccessors(); ++i)</div>
3566
- <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; {</div>
3567
- <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succInst = &amp;inst.getSuccessor(i)-&gt;front();</div>
3568
- <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfSuccInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(succInst);</div>
3569
- <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfSuccInst);</div>
3570
- <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; successors.push_back(std::make_pair(icfgNode, 1-i));</div>
3571
- <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; }</div>
3572
- <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5e56beb1a362b6e596183b04d37fd9e0">addBranchStmt</a>(brinst, cond,successors);</div>
3573
- <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;}</div>
3564
+ <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; assert(inst.getNumSuccessors() &lt;= 2 &amp;&amp; <span class="stringliteral">&quot;if/else has more than two branches?&quot;</span>);</div>
3565
+ <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; </div>
3566
+ <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <a class="code" href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">BranchStmt::SuccAndCondPairVec</a> successors;</div>
3567
+ <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; inst.getNumSuccessors(); ++i)</div>
3568
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; {</div>
3569
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succInst = &amp;inst.getSuccessor(i)-&gt;front();</div>
3570
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfSuccInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(succInst);</div>
3571
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfSuccInst);</div>
3572
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; successors.push_back(std::make_pair(icfgNode, 1-i));</div>
3573
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; }</div>
3574
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5e56beb1a362b6e596183b04d37fd9e0">addBranchStmt</a>(brinst, cond,successors);</div>
3575
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;}</div>
3574
3576
  </div><!-- fragment -->
3575
3577
  </div>
3576
3578
  </div>
@@ -3590,10 +3592,10 @@ Private Attributes</h2></td></tr>
3590
3592
  </table>
3591
3593
  </div><div class="memdoc">
3592
3594
 
3593
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00814">814</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3594
- <div class="fragment"><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;{</div>
3595
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">visitCallSite</a>(&amp;i);</div>
3596
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;}</div>
3595
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00816">816</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3596
+ <div class="fragment"><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;{</div>
3597
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">visitCallSite</a>(&amp;i);</div>
3598
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;}</div>
3597
3599
  </div><!-- fragment -->
3598
3600
  </div>
3599
3601
  </div>
@@ -3613,10 +3615,10 @@ Private Attributes</h2></td></tr>
3613
3615
  </table>
3614
3616
  </div><div class="memdoc">
3615
3617
 
3616
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00804">804</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3617
- <div class="fragment"><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;{</div>
3618
- <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">visitCallSite</a>(&amp;i);</div>
3619
- <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;}</div>
3618
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00806">806</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3619
+ <div class="fragment"><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;{</div>
3620
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">visitCallSite</a>(&amp;i);</div>
3621
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;}</div>
3620
3622
  </div><!-- fragment -->
3621
3623
  </div>
3622
3624
  </div>
@@ -3637,48 +3639,48 @@ Private Attributes</h2></td></tr>
3637
3639
  </div><div class="memdoc">
3638
3640
  <p>Collect callsite arguments and returns</p>
3639
3641
 
3640
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00822">822</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3641
- <div class="fragment"><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;{</div>
3642
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; </div>
3643
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="comment">// skip llvm intrinsics</span></div>
3644
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">isIntrinsicInst</a>(cs))</div>
3645
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">return</span>;</div>
3646
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; </div>
3647
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cs);</div>
3642
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00824">824</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3643
+ <div class="fragment"><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;{</div>
3644
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; </div>
3645
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="comment">// skip llvm intrinsics</span></div>
3646
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">isIntrinsicInst</a>(cs))</div>
3647
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">return</span>;</div>
3648
3648
  <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; </div>
3649
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div>
3650
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process callsite &quot;</span> &lt;&lt; svfcall-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
3651
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; </div>
3652
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
3653
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(svfcall);</div>
3654
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; </div>
3655
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a98341496bf470d23384f3d86a58591db">addCallSite</a>(callBlockNode);</div>
3649
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cs);</div>
3650
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; </div>
3651
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div>
3652
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process callsite &quot;</span> &lt;&lt; svfcall-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
3653
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; </div>
3654
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
3655
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(svfcall);</div>
3656
3656
  <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; </div>
3657
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; cs-&gt;arg_size(); i++)</div>
3658
- <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a69963e4030433103e84e57fc015871d8">addCallSiteArgs</a>(callBlockNode,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs-&gt;getArgOperand(i))));</div>
3659
- <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; </div>
3660
- <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span>(!cs-&gt;getType()-&gt;isVoidTy())</div>
3661
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a72efebdfe007ec8c515967ede76b6ce0">addCallSiteRets</a>(retBlockNode,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs)));</div>
3662
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; </div>
3663
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *callee = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad56c48be3ba6ebb95416623256524097">LLVMUtil::getCallee</a>(cs))</div>
3664
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {</div>
3665
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; callee = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(callee);</div>
3666
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(callee);</div>
3667
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div>
3668
- <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; {</div>
3669
- <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8b664a9d689562bd857f056e6e08c59b">handleExtCall</a>(cs, svfcallee);</div>
3670
- <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div>
3671
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">else</span></div>
3672
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; {</div>
3673
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">handleDirectCall</a>(cs, callee);</div>
3674
- <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; }</div>
3675
- <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; }</div>
3676
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">else</span></div>
3677
- <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; {</div>
3678
- <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="comment">//If the callee was not identified as a function (null F), this is indirect.</span></div>
3679
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5ae68d4465feb54fcb8fd0cf20b7a71a">handleIndCall</a>(cs);</div>
3680
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; }</div>
3681
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;}</div>
3657
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a98341496bf470d23384f3d86a58591db">addCallSite</a>(callBlockNode);</div>
3658
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; </div>
3659
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; cs-&gt;arg_size(); i++)</div>
3660
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a69963e4030433103e84e57fc015871d8">addCallSiteArgs</a>(callBlockNode,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs-&gt;getArgOperand(i))));</div>
3661
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; </div>
3662
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">if</span>(!cs-&gt;getType()-&gt;isVoidTy())</div>
3663
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a72efebdfe007ec8c515967ede76b6ce0">addCallSiteRets</a>(retBlockNode,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs)));</div>
3664
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; </div>
3665
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *callee = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad56c48be3ba6ebb95416623256524097">LLVMUtil::getCallee</a>(cs))</div>
3666
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; {</div>
3667
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; callee = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(callee);</div>
3668
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(callee);</div>
3669
+ <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div>
3670
+ <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; {</div>
3671
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8b664a9d689562bd857f056e6e08c59b">handleExtCall</a>(cs, svfcallee);</div>
3672
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; }</div>
3673
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">else</span></div>
3674
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; {</div>
3675
+ <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">handleDirectCall</a>(cs, callee);</div>
3676
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; }</div>
3677
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; }</div>
3678
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keywordflow">else</span></div>
3679
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; {</div>
3680
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="comment">//If the callee was not identified as a function (null F), this is indirect.</span></div>
3681
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5ae68d4465feb54fcb8fd0cf20b7a71a">handleIndCall</a>(cs);</div>
3682
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; }</div>
3683
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;}</div>
3682
3684
  </div><!-- fragment -->
3683
3685
  </div>
3684
3686
  </div>
@@ -3698,26 +3700,26 @@ Private Attributes</h2></td></tr>
3698
3700
  </table>
3699
3701
  </div><div class="memdoc">
3700
3702
 
3701
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00723">723</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3702
- <div class="fragment"><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;{</div>
3703
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; </div>
3704
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process cast &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
3705
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3706
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; </div>
3707
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;IntToPtrInst&gt;(&amp;inst))</div>
3708
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; {</div>
3709
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3710
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; }</div>
3711
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">else</span></div>
3712
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {</div>
3713
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(0);</div>
3714
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;PointerType&gt;(opnd-&gt;getType()))</div>
3715
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; opnd = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">stripAllCasts</a>(opnd);</div>
3716
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; </div>
3717
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
3718
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src, dst);</div>
3719
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; }</div>
3720
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;}</div>
3703
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00725">725</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3704
+ <div class="fragment"><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;{</div>
3705
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; </div>
3706
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process cast &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
3707
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3708
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; </div>
3709
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;IntToPtrInst&gt;(&amp;inst))</div>
3710
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; {</div>
3711
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3712
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; }</div>
3713
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">else</span></div>
3714
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; {</div>
3715
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(0);</div>
3716
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;PointerType&gt;(opnd-&gt;getType()))</div>
3717
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; opnd = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">stripAllCasts</a>(opnd);</div>
3718
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; </div>
3719
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
3720
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src, dst);</div>
3721
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; }</div>
3722
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;}</div>
3721
3723
  </div><!-- fragment -->
3722
3724
  </div>
3723
3725
  </div>
@@ -3738,17 +3740,17 @@ Private Attributes</h2></td></tr>
3738
3740
  </div><div class="memdoc">
3739
3741
  <p>Visit compare instruction </p>
3740
3742
 
3741
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00775">775</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3742
- <div class="fragment"><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;{</div>
3743
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3744
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; assert(inst.getNumOperands() == 2 &amp;&amp; <span class="stringliteral">&quot;not two operands for compare instruction?&quot;</span>);</div>
3745
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* op1 = inst.getOperand(0);</div>
3746
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1Node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(op1);</div>
3747
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* op2 = inst.getOperand(1);</div>
3748
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op2Node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(op2);</div>
3749
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> predicate = inst.getPredicate();</div>
3750
- <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4e1d75ac5f54872762460c86a67de3a6">addCmpEdge</a>(op1Node, op2Node, dst, predicate);</div>
3751
- <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;}</div>
3743
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00777">777</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3744
+ <div class="fragment"><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;{</div>
3745
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3746
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; assert(inst.getNumOperands() == 2 &amp;&amp; <span class="stringliteral">&quot;not two operands for compare instruction?&quot;</span>);</div>
3747
+ <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* op1 = inst.getOperand(0);</div>
3748
+ <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1Node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(op1);</div>
3749
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* op2 = inst.getOperand(1);</div>
3750
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op2Node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(op2);</div>
3751
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> predicate = inst.getPredicate();</div>
3752
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4e1d75ac5f54872762460c86a67de3a6">addCmpEdge</a>(op1Node, op2Node, dst, predicate);</div>
3753
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;}</div>
3752
3754
  </div><!-- fragment -->
3753
3755
  </div>
3754
3756
  </div>
@@ -3770,11 +3772,11 @@ Private Attributes</h2></td></tr>
3770
3772
  <p>The �extractelement� instruction extracts a single scalar element from a vector at a specified index. TODO: for now we just assume the pointer after extraction points to blackhole The first operand of an �extractelement� instruction is a value of vector type. The second operand is an index indicating the position from which to extract the element.</p>
3771
3773
  <p>&lt;result&gt; = extractelement &lt;4 x i32&gt; vec, i32 0 ; yields i32 </p>
3772
3774
 
3773
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00913">913</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3774
- <div class="fragment"><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160;{</div>
3775
- <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3776
- <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3777
- <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;}</div>
3775
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00915">915</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3776
+ <div class="fragment"><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;{</div>
3777
+ <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3778
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3779
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;}</div>
3778
3780
  </div><!-- fragment -->
3779
3781
  </div>
3780
3782
  </div>
@@ -3795,11 +3797,11 @@ Private Attributes</h2></td></tr>
3795
3797
  </div><div class="memdoc">
3796
3798
  <p>visit extract value instructions for structures in registers TODO: for now we just assume the pointer after extraction points to blackhole for example %24 = extractvalue { i32, struct.s_hash* } call34, 0 %24 is a pointer points to first field of a register value call34 however we can not create call34 as an memory object, as it is register value. Is that necessary treat extract value as getelementptr instruction later to get more precise results? </p>
3797
3799
 
3798
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00899">899</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3799
- <div class="fragment"><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;{</div>
3800
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3801
- <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3802
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;}</div>
3800
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00901">901</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3801
+ <div class="fragment"><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;{</div>
3802
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3803
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3804
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;}</div>
3803
3805
  </div><!-- fragment -->
3804
3806
  </div>
3805
3807
  </div>
@@ -3852,16 +3854,16 @@ Private Attributes</h2></td></tr>
3852
3854
  <p>&lt;result&gt; = freeze ty &lt;val&gt; If &lt;val&gt; is undef or poison, ‘freeze’ returns an arbitrary, but fixed value of type <code>ty</code> Otherwise, this instruction is a no-op and returns the input &lt;val&gt;</p>
3853
3855
  <p>&lt;result&gt; = freeze ty &lt;val&gt; If &lt;val&gt; is undef or poison, ‘freeze’ returns an arbitrary, but fixed value of type <code>ty</code> Otherwise, this instruction is a no-op and returns the input &lt;val&gt; For now, we assume &lt;val&gt; is never a poison or undef. </p>
3854
3856
 
3855
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00984">984</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3856
- <div class="fragment"><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;{</div>
3857
- <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3858
- <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; inst.getNumOperands(); i++)</div>
3859
- <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; {</div>
3860
- <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(i);</div>
3861
- <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
3862
- <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src,dst);</div>
3863
- <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; }</div>
3864
- <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;}</div>
3857
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00986">986</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3858
+ <div class="fragment"><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;{</div>
3859
+ <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3860
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; inst.getNumOperands(); i++)</div>
3861
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; {</div>
3862
+ <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(i);</div>
3863
+ <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
3864
+ <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src,dst);</div>
3865
+ <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; }</div>
3866
+ <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160;}</div>
3865
3867
  </div><!-- fragment -->
3866
3868
  </div>
3867
3869
  </div>
@@ -3882,28 +3884,28 @@ Private Attributes</h2></td></tr>
3882
3884
  </div><div class="memdoc">
3883
3885
  <p>Visit getelementptr instructions </p>
3884
3886
 
3885
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00697">697</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3886
- <div class="fragment"><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;{</div>
3887
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; </div>
3888
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3889
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="comment">// GetElementPtrInst should always be a pointer or a vector contains pointers</span></div>
3890
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="comment">// for now we don&#39;t handle vector type here</span></div>
3891
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;VectorType&gt;(inst.getType()))</div>
3892
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; {</div>
3893
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3894
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span>;</div>
3895
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div>
3896
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; </div>
3897
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; assert(SVFUtil::isa&lt;PointerType&gt;(inst.getType()));</div>
3887
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00699">699</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3888
+ <div class="fragment"><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;{</div>
3889
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; </div>
3890
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
3891
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="comment">// GetElementPtrInst should always be a pointer or a vector contains pointers</span></div>
3892
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="comment">// for now we don&#39;t handle vector type here</span></div>
3893
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;VectorType&gt;(inst.getType()))</div>
3894
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; {</div>
3895
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
3896
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">return</span>;</div>
3897
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div>
3898
3898
  <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; </div>
3899
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process gep &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
3899
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; assert(SVFUtil::isa&lt;PointerType&gt;(inst.getType()));</div>
3900
3900
  <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; </div>
3901
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</div>
3901
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process gep &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
3902
3902
  <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; </div>
3903
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(inst.getSourceElementType()));</div>
3904
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordtype">bool</span> constGep = <a class="code" href="classSVF_1_1SVFIRBuilder.html#ac8c440fe6513495edb8949df5a32d979">computeGepOffset</a>(&amp;inst, ap);</div>
3905
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4e1b6797df3e7b98da876f50741e6a3a">addGepEdge</a>(src, dst, ap, constGep);</div>
3906
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;}</div>
3903
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</div>
3904
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; </div>
3905
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(inst.getSourceElementType()));</div>
3906
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordtype">bool</span> constGep = <a class="code" href="classSVF_1_1SVFIRBuilder.html#ac8c440fe6513495edb8949df5a32d979">computeGepOffset</a>(&amp;inst, ap);</div>
3907
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4e1b6797df3e7b98da876f50741e6a3a">addGepEdge</a>(src, dst, ap, constGep);</div>
3908
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;}</div>
3907
3909
  </div><!-- fragment -->
3908
3910
  </div>
3909
3911
  </div>
@@ -3936,52 +3938,52 @@ Private Attributes</h2></td></tr>
3936
3938
  <p>initialize global variable</p>
3937
3939
  <p>initialize global functions</p>
3938
3940
 
3939
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00568">568</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3940
- <div class="fragment"><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;{</div>
3941
- <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; </div>
3942
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getLLVMModules())</div>
3943
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; {</div>
3944
- <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">for</span> (Module::global_iterator I = M.global_begin(), E = M.global_end(); I != E; ++I)</div>
3945
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div>
3946
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *gvar = &amp;*I;</div>
3947
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> idx = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(gvar);</div>
3948
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(gvar);</div>
3949
- <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; </div>
3950
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(gvar, <span class="keyword">nullptr</span>);</div>
3951
- <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(obj, idx);</div>
3952
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; </div>
3953
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span> (gvar-&gt;hasInitializer())</div>
3954
- <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; {</div>
3955
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a> *C = gvar-&gt;getInitializer();</div>
3956
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;add global var node &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(gvar)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
3957
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, C, 0);</div>
3958
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; }</div>
3959
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; }</div>
3960
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; </div>
3961
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; </div>
3962
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">for</span> (Module::const_iterator I = M.begin(), E = M.end(); I != E; ++I)</div>
3963
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div>
3964
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = &amp;*I;</div>
3965
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> idx = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(fun);</div>
3966
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(fun);</div>
3967
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; </div>
3968
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;add global function node &quot;</span> &lt;&lt; fun-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
3969
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(fun, <span class="keyword">nullptr</span>);</div>
3970
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(obj, idx);</div>
3971
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; }</div>
3972
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; </div>
3973
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="comment">// Handle global aliases (due to linkage of multiple bc files), e.g., @x = internal alias @y. We need to add a copy from y to x.</span></div>
3974
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">for</span> (Module::alias_iterator I = M.alias_begin(), E = M.alias_end(); I != E; I++)</div>
3975
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div>
3976
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">GlobalAlias</a>* alias = &amp;*I;</div>
3977
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(alias));</div>
3978
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(alias-&gt;getAliasee()));</div>
3979
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(alias-&gt;getAliasee());</div>
3980
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(alias, <span class="keyword">nullptr</span>);</div>
3981
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src,dst);</div>
3982
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div>
3983
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div>
3984
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;}</div>
3941
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00570">570</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3942
+ <div class="fragment"><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;{</div>
3943
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; </div>
3944
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getLLVMModules())</div>
3945
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div>
3946
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">for</span> (Module::global_iterator I = M.global_begin(), E = M.global_end(); I != E; ++I)</div>
3947
+ <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; {</div>
3948
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *gvar = &amp;*I;</div>
3949
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> idx = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(gvar);</div>
3950
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(gvar);</div>
3951
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; </div>
3952
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(gvar, <span class="keyword">nullptr</span>);</div>
3953
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(obj, idx);</div>
3954
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; </div>
3955
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">if</span> (gvar-&gt;hasInitializer())</div>
3956
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; {</div>
3957
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a> *C = gvar-&gt;getInitializer();</div>
3958
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;add global var node &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(gvar)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
3959
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, C, 0);</div>
3960
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</div>
3961
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div>
3962
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; </div>
3963
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; </div>
3964
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">for</span> (Module::const_iterator I = M.begin(), E = M.end(); I != E; ++I)</div>
3965
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; {</div>
3966
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = &amp;*I;</div>
3967
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> idx = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(fun);</div>
3968
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(fun);</div>
3969
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; </div>
3970
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;add global function node &quot;</span> &lt;&lt; fun-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
3971
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(fun, <span class="keyword">nullptr</span>);</div>
3972
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(obj, idx);</div>
3973
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; }</div>
3974
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; </div>
3975
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="comment">// Handle global aliases (due to linkage of multiple bc files), e.g., @x = internal alias @y. We need to add a copy from y to x.</span></div>
3976
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">for</span> (Module::alias_iterator I = M.alias_begin(), E = M.alias_end(); I != E; I++)</div>
3977
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; {</div>
3978
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">GlobalAlias</a>* alias = &amp;*I;</div>
3979
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(alias));</div>
3980
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(alias-&gt;getAliasee()));</div>
3981
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(alias-&gt;getAliasee());</div>
3982
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(alias, <span class="keyword">nullptr</span>);</div>
3983
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src,dst);</div>
3984
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div>
3985
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; }</div>
3986
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;}</div>
3985
3987
  </div><!-- fragment -->
3986
3988
  </div>
3987
3989
  </div>
@@ -4097,10 +4099,10 @@ Private Attributes</h2></td></tr>
4097
4099
  </table>
4098
4100
  </div><div class="memdoc">
4099
4101
 
4100
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00809">809</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4101
- <div class="fragment"><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;{</div>
4102
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">visitCallSite</a>(&amp;i);</div>
4103
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;}</div>
4102
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00811">811</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4103
+ <div class="fragment"><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;{</div>
4104
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">visitCallSite</a>(&amp;i);</div>
4105
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;}</div>
4104
4106
  </div><!-- fragment -->
4105
4107
  </div>
4106
4108
  </div>
@@ -4151,16 +4153,16 @@ Private Attributes</h2></td></tr>
4151
4153
  </table>
4152
4154
  </div><div class="memdoc">
4153
4155
 
4154
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00665">665</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4155
- <div class="fragment"><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;{</div>
4156
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process load &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
4157
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; </div>
4158
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
4156
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00667">667</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4157
+ <div class="fragment"><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;{</div>
4158
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process load &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
4159
4159
  <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; </div>
4160
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</div>
4160
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
4161
4161
  <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; </div>
4162
- <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">addLoadEdge</a>(src, dst);</div>
4163
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;}</div>
4162
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</div>
4163
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; </div>
4164
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">addLoadEdge</a>(src, dst);</div>
4165
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;}</div>
4164
4166
  </div><!-- fragment -->
4165
4167
  </div>
4166
4168
  </div>
@@ -4181,28 +4183,28 @@ Private Attributes</h2></td></tr>
4181
4183
  </div><div class="memdoc">
4182
4184
  <p>Visit phi instructions </p>
4183
4185
 
4184
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00639">639</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4185
- <div class="fragment"><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;{</div>
4186
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; </div>
4187
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process phi &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
4186
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00641">641</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4187
+ <div class="fragment"><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;{</div>
4188
4188
  <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; </div>
4189
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
4189
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process phi &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
4190
4190
  <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; </div>
4191
- <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; inst.getNumIncomingValues(); ++i)</div>
4192
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; {</div>
4193
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = inst.getIncomingValue(i);</div>
4194
- <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* incomingInst = SVFUtil::dyn_cast&lt;Instruction&gt;(val);</div>
4195
- <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordtype">bool</span> matched = (incomingInst == <span class="keyword">nullptr</span> ||</div>
4196
- <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; incomingInst-&gt;getFunction() == inst.getFunction());</div>
4197
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; (void) matched; <span class="comment">// Suppress warning of unused variable under release build</span></div>
4198
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; assert(matched &amp;&amp; <span class="stringliteral">&quot;incomingInst&#39;s Function incorrect&quot;</span>);</div>
4199
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* predInst = &amp;inst.getIncomingBlock(i)-&gt;back();</div>
4200
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(predInst);</div>
4201
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfPrevInst);</div>
4202
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(val);</div>
4203
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2bd394d9fe3b7a10080987b7a707f5c0">addPhiStmt</a>(dst,src,icfgNode);</div>
4204
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div>
4205
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;}</div>
4191
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
4192
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; </div>
4193
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; inst.getNumIncomingValues(); ++i)</div>
4194
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; {</div>
4195
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = inst.getIncomingValue(i);</div>
4196
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* incomingInst = SVFUtil::dyn_cast&lt;Instruction&gt;(val);</div>
4197
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordtype">bool</span> matched = (incomingInst == <span class="keyword">nullptr</span> ||</div>
4198
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; incomingInst-&gt;getFunction() == inst.getFunction());</div>
4199
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; (void) matched; <span class="comment">// Suppress warning of unused variable under release build</span></div>
4200
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; assert(matched &amp;&amp; <span class="stringliteral">&quot;incomingInst&#39;s Function incorrect&quot;</span>);</div>
4201
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* predInst = &amp;inst.getIncomingBlock(i)-&gt;back();</div>
4202
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(predInst);</div>
4203
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfPrevInst);</div>
4204
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(val);</div>
4205
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2bd394d9fe3b7a10080987b7a707f5c0">addPhiStmt</a>(dst,src,icfgNode);</div>
4206
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; }</div>
4207
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;}</div>
4206
4208
  </div><!-- fragment -->
4207
4209
  </div>
4208
4210
  </div>
@@ -4255,26 +4257,26 @@ Private Attributes</h2></td></tr>
4255
4257
  </div><div class="memdoc">
4256
4258
  <p>Visit return instructions of a function </p>
4257
4259
 
4258
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00869">869</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4259
- <div class="fragment"><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;{</div>
4260
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; </div>
4261
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="comment">// ReturnInst itself should always not be a pointer type</span></div>
4262
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; assert(!SVFUtil::isa&lt;PointerType&gt;(inst.getType()));</div>
4263
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; </div>
4264
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process return &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
4260
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00871">871</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4261
+ <div class="fragment"><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;{</div>
4262
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; </div>
4263
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="comment">// ReturnInst itself should always not be a pointer type</span></div>
4264
+ <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; assert(!SVFUtil::isa&lt;PointerType&gt;(inst.getType()));</div>
4265
4265
  <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; </div>
4266
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* src = inst.getReturnValue())</div>
4267
- <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; {</div>
4268
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(inst.getParent()-&gt;getParent());</div>
4269
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; </div>
4270
- <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rnF = <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">getReturnNode</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
4271
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(src);</div>
4272
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&amp;inst);</div>
4273
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInst);</div>
4274
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="comment">//vnS may be null if src is a null ptr</span></div>
4275
- <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2bd394d9fe3b7a10080987b7a707f5c0">addPhiStmt</a>(rnF,vnS,icfgNode);</div>
4276
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; }</div>
4277
- <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;}</div>
4266
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process return &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
4267
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; </div>
4268
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* src = inst.getReturnValue())</div>
4269
+ <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; {</div>
4270
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(inst.getParent()-&gt;getParent());</div>
4271
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; </div>
4272
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rnF = <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">getReturnNode</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
4273
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(src);</div>
4274
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&amp;inst);</div>
4275
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInst);</div>
4276
+ <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="comment">//vnS may be null if src is a null ptr</span></div>
4277
+ <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2bd394d9fe3b7a10080987b7a707f5c0">addPhiStmt</a>(rnF,vnS,icfgNode);</div>
4278
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; }</div>
4279
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;}</div>
4278
4280
  </div><!-- fragment -->
4279
4281
  </div>
4280
4282
  </div>
@@ -4296,17 +4298,17 @@ Private Attributes</h2></td></tr>
4296
4298
  <p>Visit select instructions </p>
4297
4299
  <p>Two operands have same incoming basic block, both are the current BB</p>
4298
4300
 
4299
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00791">791</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4300
- <div class="fragment"><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;{</div>
4301
- <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; </div>
4302
- <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process select &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
4301
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00793">793</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4302
+ <div class="fragment"><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;{</div>
4303
4303
  <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; </div>
4304
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
4305
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src1 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getTrueValue());</div>
4306
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src2 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getFalseValue());</div>
4307
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div>
4308
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5bf90e30bb591caba9ff85535e6a33f8">addSelectStmt</a>(dst,src1,src2, cond);</div>
4309
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;}</div>
4304
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process select &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
4305
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; </div>
4306
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
4307
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src1 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getTrueValue());</div>
4308
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src2 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getFalseValue());</div>
4309
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div>
4310
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5bf90e30bb591caba9ff85535e6a33f8">addSelectStmt</a>(dst,src1,src2, cond);</div>
4311
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;}</div>
4310
4312
  </div><!-- fragment -->
4311
4313
  </div>
4312
4314
  </div>
@@ -4358,20 +4360,20 @@ Private Attributes</h2></td></tr>
4358
4360
  </div><div class="memdoc">
4359
4361
  <p>Visit store instructions </p>
4360
4362
 
4361
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00679">679</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4362
- <div class="fragment"><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;{</div>
4363
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="comment">// StoreInst itself should always not be a pointer type</span></div>
4364
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; assert(!SVFUtil::isa&lt;PointerType&gt;(inst.getType()));</div>
4365
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; </div>
4366
- <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process store &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
4363
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00681">681</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4364
+ <div class="fragment"><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;{</div>
4365
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="comment">// StoreInst itself should always not be a pointer type</span></div>
4366
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; assert(!SVFUtil::isa&lt;PointerType&gt;(inst.getType()));</div>
4367
4367
  <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; </div>
4368
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</div>
4368
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process store &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(&amp;inst)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
4369
4369
  <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; </div>
4370
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getValueOperand());</div>
4370
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</div>
4371
4371
  <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; </div>
4372
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, dst);</div>
4372
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getValueOperand());</div>
4373
4373
  <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; </div>
4374
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;}</div>
4374
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, dst);</div>
4375
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; </div>
4376
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;}</div>
4375
4377
  </div><!-- fragment -->
4376
4378
  </div>
4377
4379
  </div>
@@ -4391,27 +4393,27 @@ Private Attributes</h2></td></tr>
4391
4393
  </table>
4392
4394
  </div><div class="memdoc">
4393
4395
 
4394
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00945">945</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4395
- <div class="fragment"><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;{</div>
4396
- <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> brinst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
4397
- <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div>
4398
- <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; </div>
4399
- <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <a class="code" href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">BranchStmt::SuccAndCondPairVec</a> successors;</div>
4396
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00947">947</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4397
+ <div class="fragment"><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;{</div>
4398
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> brinst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
4399
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div>
4400
4400
  <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; </div>
4401
- <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="comment">// get case successor basic block and related case value</span></div>
4402
- <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SuccBBAndCondValPairVec</a> succBB2CondValPairVec;</div>
4403
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">LLVMUtil::getSuccBBandCondValPairVec</a>(inst, succBB2CondValPairVec);</div>
4404
- <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;succBB2CaseValue : succBB2CondValPairVec)</div>
4405
- <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; {</div>
4406
- <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">LLVMUtil::getCaseValue</a>(inst, succBB2CaseValue);</div>
4407
- <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succBB = succBB2CaseValue.first;</div>
4408
- <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succInst = &amp;succBB-&gt;front();</div>
4409
- <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfSuccInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(succInst);</div>
4410
- <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfSuccInst);</div>
4411
- <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; successors.push_back(std::make_pair(icfgNode, val));</div>
4412
- <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; }</div>
4413
- <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5e56beb1a362b6e596183b04d37fd9e0">addBranchStmt</a>(brinst, cond, successors);</div>
4414
- <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;}</div>
4401
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <a class="code" href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">BranchStmt::SuccAndCondPairVec</a> successors;</div>
4402
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; </div>
4403
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="comment">// get case successor basic block and related case value</span></div>
4404
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <a class="code" href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SuccBBAndCondValPairVec</a> succBB2CondValPairVec;</div>
4405
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">LLVMUtil::getSuccBBandCondValPairVec</a>(inst, succBB2CondValPairVec);</div>
4406
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;succBB2CaseValue : succBB2CondValPairVec)</div>
4407
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; {</div>
4408
+ <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">LLVMUtil::getCaseValue</a>(inst, succBB2CaseValue);</div>
4409
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succBB = succBB2CaseValue.first;</div>
4410
+ <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succInst = &amp;succBB-&gt;front();</div>
4411
+ <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfSuccInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(succInst);</div>
4412
+ <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfSuccInst);</div>
4413
+ <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; successors.push_back(std::make_pair(icfgNode, val));</div>
4414
+ <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; }</div>
4415
+ <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5e56beb1a362b6e596183b04d37fd9e0">addBranchStmt</a>(brinst, cond, successors);</div>
4416
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;}</div>
4415
4417
  </div><!-- fragment -->
4416
4418
  </div>
4417
4419
  </div>
@@ -4432,15 +4434,15 @@ Private Attributes</h2></td></tr>
4432
4434
  </div><div class="memdoc">
4433
4435
  <p>Visit Unary Operator </p>
4434
4436
 
4435
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00762">762</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4436
- <div class="fragment"><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;{</div>
4437
- <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
4438
- <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; assert(inst.getNumOperands() == 1 &amp;&amp; <span class="stringliteral">&quot;not one operand for Unary instruction?&quot;</span>);</div>
4439
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(0);</div>
4440
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
4441
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> opcode = inst.getOpcode();</div>
4442
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a9e81039d17b70e6a3d7310d05fa73c45">addUnaryOPEdge</a>(src, dst, opcode);</div>
4443
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;}</div>
4437
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00764">764</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4438
+ <div class="fragment"><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;{</div>
4439
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
4440
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; assert(inst.getNumOperands() == 1 &amp;&amp; <span class="stringliteral">&quot;not one operand for Unary instruction?&quot;</span>);</div>
4441
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(0);</div>
4442
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
4443
+ <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> opcode = inst.getOpcode();</div>
4444
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a9e81039d17b70e6a3d7310d05fa73c45">addUnaryOPEdge</a>(src, dst, opcode);</div>
4445
+ <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;}</div>
4444
4446
  </div><!-- fragment -->
4445
4447
  </div>
4446
4448
  </div>
@@ -4492,13 +4494,13 @@ Private Attributes</h2></td></tr>
4492
4494
  <p>TODO: var arguments need to be handled. <a href="https://llvm.org/docs/LangRef.html#id1911">https://llvm.org/docs/LangRef.html#id1911</a></p>
4493
4495
  <p>ap = alloca struct.va_list ap2 = bitcast struct.va_list* ap to i8* ; Read a single integer argument from ap2 tmp = va_arg i8* ap2, i32 (VAArgInst) TODO: for now, create a copy edge from ap2 to tmp, we assume here tmp should point to the n-th argument of the var_args </p>
4494
4496
 
4495
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00972">972</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4496
- <div class="fragment"><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;{</div>
4497
- <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
4498
- <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getPointerOperand();</div>
4499
- <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
4500
- <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src,dst);</div>
4501
- <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;}</div>
4497
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00974">974</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
4498
+ <div class="fragment"><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;{</div>
4499
+ <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div>
4500
+ <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getPointerOperand();</div>
4501
+ <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
4502
+ <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src,dst);</div>
4503
+ <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160;}</div>
4502
4504
  </div><!-- fragment -->
4503
4505
  </div>
4504
4506
  </div>
@@ -4702,18 +4704,18 @@ Private Attributes</h2></td></tr>
4702
4704
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_ae61030da4a84b5c9c47903804af9d107"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae61030da4a84b5c9c47903804af9d107">SVF::SVFIR::addBranchStmt</a></div><div class="ttdeci">BranchStmt * addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &amp;succs)</div><div class="ttdoc">Add BranchStmt.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00186">SVFIR.cpp:186</a></div></div>
4703
4705
  <div class="ttc" id="aclassSVF_1_1SVFCallInst_html_a3cbb4b4089c8b27d01da15f2d2f22e14"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#a3cbb4b4089c8b27d01da15f2d2f22e14">SVF::SVFCallInst::getArgOperand</a></div><div class="ttdeci">const SVFValue * getArgOperand(u32_t i) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00741">SVFValue.h:741</a></div></div>
4704
4706
  <div class="ttc" id="aclassSVF_1_1SVFValue_html_a2401b022638769f59f86ab424a189b6e"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string &amp; getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00243">SVFValue.h:243</a></div></div>
4705
- <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_ae4516ec05eabece1bc8e0cad1ec8cf1c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ae4516ec05eabece1bc8e0cad1ec8cf1c">SVF::SVFIRBuilder::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const Value *val, const AccessPath &amp;ap, const SVFType *elementType)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01193">SVFIRBuilder.cpp:1193</a></div></div>
4707
+ <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_ae4516ec05eabece1bc8e0cad1ec8cf1c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ae4516ec05eabece1bc8e0cad1ec8cf1c">SVF::SVFIRBuilder::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const Value *val, const AccessPath &amp;ap, const SVFType *elementType)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01195">SVFIRBuilder.cpp:1195</a></div></div>
4706
4708
  <div class="ttc" id="aclassSVF_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#l00182">SVFIRBuilder.cpp:182</a></div></div>
4707
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a38ce45ae5f017c90115ce444b44d478c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">SVF::LLVMUtil::stripAllCasts</a></div><div class="ttdeci">const Value * stripAllCasts(const Value *val)</div><div class="ttdoc">Strip off the all casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00263">LLVMUtil.cpp:263</a></div></div>
4708
- <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a4c6cd51def26ebd8e839df9fdc4b64b8"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4c6cd51def26ebd8e839df9fdc4b64b8">SVF::SVFIRBuilder::visitGlobal</a></div><div class="ttdeci">void visitGlobal(SVFModule *svfModule)</div><div class="ttdoc">Handle globals including (global variable and functions)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00568">SVFIRBuilder.cpp:568</a></div></div>
4709
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a38ce45ae5f017c90115ce444b44d478c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">SVF::LLVMUtil::stripAllCasts</a></div><div class="ttdeci">const Value * stripAllCasts(const Value *val)</div><div class="ttdoc">Strip off the all casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00328">LLVMUtil.cpp:328</a></div></div>
4710
+ <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a4c6cd51def26ebd8e839df9fdc4b64b8"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4c6cd51def26ebd8e839df9fdc4b64b8">SVF::SVFIRBuilder::visitGlobal</a></div><div class="ttdeci">void visitGlobal(SVFModule *svfModule)</div><div class="ttdoc">Handle globals including (global variable and functions)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00570">SVFIRBuilder.cpp:570</a></div></div>
4709
4711
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5e56beb1a362b6e596183b04d37fd9e0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5e56beb1a362b6e596183b04d37fd9e0">SVF::SVFIRBuilder::addBranchStmt</a></div><div class="ttdeci">void addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &amp;succs)</div><div class="ttdoc">Add Branch statement.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00343">SVFIRBuilder.h:343</a></div></div>
4710
4712
  <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a7bde256bc906af7f7204929019f4a33e"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">SVF::SVFBasicBlock::front</a></div><div class="ttdeci">const SVFInstruction * front() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00593">SVFValue.h:593</a></div></div>
4711
- <div class="ttc" id="anamespaceSVF_html_a8de26e1810ea0c3b1e8ad62f1c8a864d"><div class="ttname"><a href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SVF::SuccBBAndCondValPairVec</a></div><div class="ttdeci">std::vector&lt; SuccBBAndCondValPair &gt; SuccBBAndCondValPairVec</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00183">BasicTypes.h:183</a></div></div>
4713
+ <div class="ttc" id="anamespaceSVF_html_a8de26e1810ea0c3b1e8ad62f1c8a864d"><div class="ttname"><a href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SVF::SuccBBAndCondValPairVec</a></div><div class="ttdeci">std::vector&lt; SuccBBAndCondValPair &gt; SuccBBAndCondValPairVec</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00184">BasicTypes.h:184</a></div></div>
4712
4714
  <div class="ttc" id="aclassSVF_1_1Options_html_a3f5235cbdaab1bf53b9144d335c9c3d4"><div class="ttname"><a href="classSVF_1_1Options.html#a3f5235cbdaab1bf53b9144d335c9c3d4">SVF::Options::DumpJson</a></div><div class="ttdeci">static const Option&lt; std::string &gt; DumpJson</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00137">Options.h:137</a></div></div>
4713
4715
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00101">LLVMModule.h:101</a></div></div>
4714
4716
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a8bf1847f31ff90937ce76cd0c0af7edb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">SVF::SVFIRBuilder::addBlackHoleAddrEdge</a></div><div class="ttdeci">void addBlackHoleAddrEdge(NodeID node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00285">SVFIRBuilder.h:285</a></div></div>
4715
4717
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_a96010999a4e5013beb1c37ef753ff910"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a96010999a4e5013beb1c37ef753ff910">SVF::IRGraph::getReturnNode</a></div><div class="ttdeci">NodeID getReturnNode(const SVFFunction *func) const</div><div class="ttdoc">GetReturnNode - Return the unique node representing the return value of a function.</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00153">IRGraph.h:153</a></div></div>
4716
- <div class="ttc" id="aclassSVF_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#l01167">SVFIRBuilder.cpp:1167</a></div></div>
4718
+ <div class="ttc" id="aclassSVF_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#l01169">SVFIRBuilder.cpp:1169</a></div></div>
4717
4719
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a69963e4030433103e84e57fc015871d8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a69963e4030433103e84e57fc015871d8">SVF::SVFIR::addCallSiteArgs</a></div><div class="ttdeci">void addCallSiteArgs(CallICFGNode *callBlockNode, const SVFVar *arg)</div><div class="ttdoc">Add callsite arguments.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00513">SVFIR.h:513</a></div></div>
4718
4720
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a5298f34143ec3a2e6bb74ebad668cbbc"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">SVF::SVFIR::getBaseValVar</a></div><div class="ttdeci">NodeID getBaseValVar(NodeID nodeId)</div><div class="ttdoc">Base and Offset methods for Value and Object node.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00519">SVFIR.cpp:519</a></div></div>
4719
4721
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a688bd5e1bf36b3e75bfcea9388871dc4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a688bd5e1bf36b3e75bfcea9388871dc4">SVF::SVFUtil::isMemcpyExtFun</a></div><div class="ttdeci">bool isMemcpyExtFun(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00314">SVFUtil.h:314</a></div></div>
@@ -4723,9 +4725,9 @@ Private Attributes</h2></td></tr>
4723
4725
  <div class="ttc" id="aclassSVF_1_1GepStmt_html_a0ddf180a0f7ba64fc8655687910e3788"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">SVF::GepStmt::isVariantFieldGep</a></div><div class="ttdeci">bool isVariantFieldGep() const</div><div class="ttdoc">Gep statement with a variant field index (pointer arithmetic) for struct field access.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00526">SVFStatements.h:526</a></div></div>
4724
4726
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00384">GenericGraph.h:384</a></div></div>
4725
4727
  <div class="ttc" id="aclassSVF_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#l00660">SVFIR.cpp:660</a></div></div>
4726
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a35b36394af726c679fe2c1b6051db7c4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a35b36394af726c679fe2c1b6051db7c4">SVF::LLVMUtil::isBinaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isBinaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00309">LLVMUtil.h:309</a></div></div>
4728
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a35b36394af726c679fe2c1b6051db7c4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a35b36394af726c679fe2c1b6051db7c4">SVF::LLVMUtil::isBinaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isBinaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00314">LLVMUtil.h:314</a></div></div>
4727
4729
  <div class="ttc" id="aclassSVF_1_1FunEntryICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html">SVF::FunEntryICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00261">ICFGNode.h:261</a></div></div>
4728
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a08fbef6fe3e2af96a49f79ce23accb01"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">SVF::LLVMUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00909">LLVMUtil.cpp:909</a></div></div>
4730
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a08fbef6fe3e2af96a49f79ce23accb01"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">SVF::LLVMUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00976">LLVMUtil.cpp:976</a></div></div>
4729
4731
  <div class="ttc" id="aclassSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00097">GenericGraph.h:97</a></div></div>
4730
4732
  <div class="ttc" id="aclassSVF_1_1RetICFGNode_html"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html">SVF::RetICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00487">ICFGNode.h:487</a></div></div>
4731
4733
  <div class="ttc" id="aclassSVF_1_1ICFGBuilder_html"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html">SVF::ICFGBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00039">ICFGBuilder.h:39</a></div></div>
@@ -4733,12 +4735,13 @@ Private Attributes</h2></td></tr>
4733
4735
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_a43514023a4f4d0c32f536f51443b0efc"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const SVFValue *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00138">IRGraph.h:138</a></div></div>
4734
4736
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a28fbb7cc51eb7e25d88f43e3eb1f30fb"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28fbb7cc51eb7e25d88f43e3eb1f30fb">SVF::SVFUtil::isHareParForCall</a></div><div class="ttdeci">bool isHareParForCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00503">SVFUtil.h:503</a></div></div>
4735
4737
  <div class="ttc" id="aclassSVF_1_1CallICFGNode_html_a90fd0b8e44fba1a7eb76d15bce085d66"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const SVFInstruction * getCallSite() const</div><div class="ttdoc">Return callsite.</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00409">ICFGNode.h:409</a></div></div>
4738
+ <div class="ttc" id="anamespaceSVF_html_a893c345ff98bb2808ae905cf9f3671c5"><div class="ttname"><a href="namespaceSVF.html#a893c345ff98bb2808ae905cf9f3671c5">SVF::GEPOperator</a></div><div class="ttdeci">llvm::GEPOperator GEPOperator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00180">BasicTypes.h:180</a></div></div>
4736
4739
  <div class="ttc" id="anamespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00084">BasicTypes.h:84</a></div></div>
4737
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9001722dd27bf487351725c3d7b65f2f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">SVF::LLVMUtil::getSuccBBandCondValPairVec</a></div><div class="ttdeci">void getSuccBBandCondValPairVec(const SwitchInst &amp;switchInst, SuccBBAndCondValPairVec &amp;vec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01251">LLVMUtil.cpp:1251</a></div></div>
4740
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9001722dd27bf487351725c3d7b65f2f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">SVF::LLVMUtil::getSuccBBandCondValPairVec</a></div><div class="ttdeci">void getSuccBBandCondValPairVec(const SwitchInst &amp;switchInst, SuccBBAndCondValPairVec &amp;vec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01322">LLVMUtil.cpp:1322</a></div></div>
4738
4741
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_abaf03c3031ef3940c73e3cd8e8ca17b6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abaf03c3031ef3940c73e3cd8e8ca17b6">SVF::SVFIRBuilder::addCallEdge</a></div><div class="ttdeci">void addCallEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Call edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00366">SVFIRBuilder.h:366</a></div></div>
4739
4742
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_aafd4da7cef6387bb974abe20185b7b96"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aafd4da7cef6387bb974abe20185b7b96">SVF::SymbolTableInfo::retSyms</a></div><div class="ttdeci">FunToIDMapTy &amp; retSyms()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00280">SymbolTableInfo.h:280</a></div></div>
4740
4743
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad56c48be3ba6ebb95416623256524097"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad56c48be3ba6ebb95416623256524097">SVF::LLVMUtil::getCallee</a></div><div class="ttdeci">const Function * getCallee(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00074">LLVMUtil.h:74</a></div></div>
4741
- <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5aa87f9ea35b30b4b4797f8a7f9f293c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">SVF::SVFIRBuilder::visitCallSite</a></div><div class="ttdeci">void visitCallSite(CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00822">SVFIRBuilder.cpp:822</a></div></div>
4744
+ <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5aa87f9ea35b30b4b4797f8a7f9f293c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">SVF::SVFIRBuilder::visitCallSite</a></div><div class="ttdeci">void visitCallSite(CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00824">SVFIRBuilder.cpp:824</a></div></div>
4742
4745
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_a0a18bca50f7cd3a1882754f19303d257"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a0a18bca50f7cd3a1882754f19303d257">SVF::IRGraph::getNodeNumAfterPAGBuild</a></div><div class="ttdeci">u32_t getNodeNumAfterPAGBuild() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00195">IRGraph.h:195</a></div></div>
4743
4746
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_aff99c8de4acf4eeaf01803dadf459b92"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">SVF::SVFIRBuilder::getReturnNode</a></div><div class="ttdeci">NodeID getReturnNode(const SVFFunction *func)</div><div class="ttdoc">getReturnNode - Return the node representing the unique return value of a function.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00105">SVFIRBuilder.h:105</a></div></div>
4744
4747
  <div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
@@ -4749,12 +4752,12 @@ Private Attributes</h2></td></tr>
4749
4752
  <div class="ttc" id="aSVFType_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00604">SVFType.h:604</a></div></div>
4750
4753
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00232">LLVMUtil.cpp:232</a></div></div>
4751
4754
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a916d893cb852bbbd933e3e5349d5154b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a916d893cb852bbbd933e3e5349d5154b">SVF::SVFIR::addThreadForkPE</a></div><div class="ttdeci">TDForkPE * addThreadForkPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Thread fork edge for parameter passing.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00288">SVFIR.cpp:288</a></div></div>
4752
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a200539f965bff5627abac41920498ee8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">SVF::LLVMUtil::getFirstUseViaCastInst</a></div><div class="ttdeci">const Value * getFirstUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00349">LLVMUtil.cpp:349</a></div></div>
4755
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a200539f965bff5627abac41920498ee8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">SVF::LLVMUtil::getFirstUseViaCastInst</a></div><div class="ttdeci">const Value * getFirstUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00414">LLVMUtil.cpp:414</a></div></div>
4753
4756
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a8f3cb8a1db34dd692ee04561f4edeebf"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a8f3cb8a1db34dd692ee04561f4edeebf">SVF::SymbolTableInfo::valSyms</a></div><div class="ttdeci">ValueToIDMapTy &amp; valSyms()</div><div class="ttdoc">Get different kinds of syms maps.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00260">SymbolTableInfo.h:260</a></div></div>
4754
4757
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a6ca1b9d5bb267806f8aaae5a94ed36cc"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a6ca1b9d5bb267806f8aaae5a94ed36cc">SVF::SVFIRBuilder::svfModule</a></div><div class="ttdeci">SVFModule * svfModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00051">SVFIRBuilder.h:51</a></div></div>
4755
4758
  <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html">SVF::LLVMLoopAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8h_source.html#l00039">LLVMLoopAnalysis.h:39</a></div></div>
4756
4759
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01275">LLVMModule.cpp:1275</a></div></div>
4757
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00860">LLVMUtil.cpp:860</a></div></div>
4760
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00927">LLVMUtil.cpp:927</a></div></div>
4758
4761
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_aa54b93ebf36944b548aaa74dbf8a144f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa54b93ebf36944b548aaa74dbf8a144f">SVF::SVFIR::addCopyStmt</a></div><div class="ttdeci">CopyStmt * addCopyStmt(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00064">SVFIR.cpp:64</a></div></div>
4759
4762
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00201">LLVMModule.h:201</a></div></div>
4760
4763
  <div class="ttc" id="aclassSVF_1_1Options_html_abfd13c7d998333290b39354178739f2c"><div class="ttname"><a href="classSVF_1_1Options.html#abfd13c7d998333290b39354178739f2c">SVF::Options::LoopAnalysis</a></div><div class="ttdeci">static const Option&lt; bool &gt; LoopAnalysis</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00273">Options.h:273</a></div></div>
@@ -4781,7 +4784,7 @@ Private Attributes</h2></td></tr>
4781
4784
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00217">SVFStatements.h:217</a></div></div>
4782
4785
  <div class="ttc" id="anamespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
4783
4786
  <div class="ttc" id="aclassSVF_1_1ICFG_html_aa41516cdd2be5066adf22798a4fe2213"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00237">ICFG.cpp:237</a></div></div>
4784
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a33e8378ae1a911169394e545a4ba2220"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">SVF::LLVMUtil::getCaseValue</a></div><div class="ttdeci">s64_t getCaseValue(const SwitchInst &amp;switchInst, SuccBBAndCondValPair &amp;succBB2CondVal)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01261">LLVMUtil.cpp:1261</a></div></div>
4787
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a33e8378ae1a911169394e545a4ba2220"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">SVF::LLVMUtil::getCaseValue</a></div><div class="ttdeci">s64_t getCaseValue(const SwitchInst &amp;switchInst, SuccBBAndCondValPair &amp;succBB2CondVal)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01332">LLVMUtil.cpp:1332</a></div></div>
4785
4788
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a3672b4797c400aac90c6d36ce29e0e57"><div class="ttname"><a href="classSVF_1_1SVFType.html#a3672b4797c400aac90c6d36ce29e0e57">SVF::SVFType::getPointerTo</a></div><div class="ttdeci">const SVFPointerType * getPointerTo() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00297">SVFType.h:297</a></div></div>
4786
4789
  <div class="ttc" id="anamespacellvm_html_a7cfc92a12082d69711c97bb3d1b99c48"><div class="ttname"><a href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">llvm::bridge_gep_end</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_end(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00157">GEPTypeBridgeIterator.h:157</a></div></div>
4787
4790
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a2b1de62f88588b068d4eed125049ed8d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2b1de62f88588b068d4eed125049ed8d">SVF::SVFIR::addBlackholePtrNode</a></div><div class="ttdeci">NodeID addBlackholePtrNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00596">SVFIR.h:596</a></div></div>
@@ -4795,7 +4798,7 @@ Private Attributes</h2></td></tr>
4795
4798
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab0c0f321b6bfbfab2e4ff06d81920ab9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">SVF::LLVMModuleSet::getSVFBasicBlock</a></div><div class="ttdeci">SVFBasicBlock * getSVFBasicBlock(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00208">LLVMModule.h:208</a></div></div>
4796
4799
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_aa7e7b3dba00201972783f93c35cadad9"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa7e7b3dba00201972783f93c35cadad9">SVF::SVFIRBuilder::getBaseTypeAndFlattenedFields</a></div><div class="ttdeci">virtual const Type * getBaseTypeAndFlattenedFields(const Value *V, std::vector&lt; AccessPath &gt; &amp;fields, const Value *szValue)</div><div class="ttdoc">Handle external call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRExtAPI_8cpp_source.html#l00042">SVFIRExtAPI.cpp:42</a></div></div>
4797
4800
  <div class="ttc" id="anamespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00147">BasicTypes.h:147</a></div></div>
4798
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_af983b0e1fbd371d8672e8f03f63084fc"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">SVF::LLVMUtil::isCastConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCastConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00264">LLVMUtil.h:264</a></div></div>
4801
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_af983b0e1fbd371d8672e8f03f63084fc"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">SVF::LLVMUtil::isCastConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCastConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00269">LLVMUtil.h:269</a></div></div>
4799
4802
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a64d14e7ee334c85b02414d68877faab2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64d14e7ee334c85b02414d68877faab2">SVF::SVFIR::addThreadJoinPE</a></div><div class="ttdeci">TDJoinPE * addThreadJoinPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Thread join edge for parameter passing.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00306">SVFIR.cpp:306</a></div></div>
4800
4803
  <div class="ttc" id="anamespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
4801
4804
  <div class="ttc" id="anamespaceSVF_html_a0fd33072b099f61eaa642e94ed0c03fc"><div class="ttname"><a href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">SVF::GlobalAlias</a></div><div class="ttdeci">llvm::GlobalAlias GlobalAlias</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
@@ -4803,7 +4806,7 @@ Private Attributes</h2></td></tr>
4803
4806
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_a1cb32461439c4dc8d044c2bfadb11307"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">SVF::IRGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump SVFIR.</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00102">IRGraph.cpp:102</a></div></div>
4804
4807
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_ac792c1f8b385515a8cc0a0303d40f212"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac792c1f8b385515a8cc0a0303d40f212">SVF::SVFIR::addValNode</a></div><div class="ttdeci">NodeID addValNode(const SVFValue *val, NodeID i)</div><div class="ttdoc">add node into SVFIR</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00536">SVFIR.h:536</a></div></div>
4805
4808
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_ae3d9b4acb63a7dbe316e87bad4e3987a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">SVF::SVFIR::addGlobalPAGEdge</a></div><div class="ttdeci">void addGlobalPAGEdge(const SVFStmt *edge)</div><div class="ttdoc">Add global PAGEdges (not in a procedure)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00630">SVFIR.h:630</a></div></div>
4806
- <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a72be51342f633844f59c5a46b7e01583"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a72be51342f633844f59c5a46b7e01583">SVF::SymbolTableInfo::getValSym</a></div><div class="ttdeci">SymID getValSym(const SVFValue *val)</div><div class="ttdoc">Get different kinds of syms.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00568">SymbolTableInfo.cpp:568</a></div></div>
4809
+ <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a72be51342f633844f59c5a46b7e01583"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a72be51342f633844f59c5a46b7e01583">SVF::SymbolTableInfo::getValSym</a></div><div class="ttdeci">SymID getValSym(const SVFValue *val)</div><div class="ttdoc">Get different kinds of syms.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00569">SymbolTableInfo.cpp:569</a></div></div>
4807
4810
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a38f6d0c7db935fd4e556761f96f1fa09"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09">SVF::SVFIR::addRetNode</a></div><div class="ttdeci">NodeID addRetNode(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Add a unique return node for a procedure.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00549">SVFIR.h:549</a></div></div>
4808
4811
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a24df52313f8093bb651ae9da972cd663"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">SVF::SymbolTableInfo::getFlattenedElemIdx</a></div><div class="ttdeci">u32_t getFlattenedElemIdx(const SVFType *T, u32_t origId)</div><div class="ttdoc">Flattened element idx of an array or struct by considering stride.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00181">SymbolTableInfo.cpp:181</a></div></div>
4809
4812
  <div class="ttc" id="aclassSVF_1_1ICFG_html_aaf521832909781894659725300cf4f49"><div class="ttname"><a href="classSVF_1_1ICFG.html#aaf521832909781894659725300cf4f49">SVF::ICFG::getIntraICFGNode</a></div><div class="ttdeci">IntraICFGNode * getIntraICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00261">ICFG.cpp:261</a></div></div>
@@ -4812,8 +4815,8 @@ Private Attributes</h2></td></tr>
4812
4815
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a4e1b6797df3e7b98da876f50741e6a3a"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4e1b6797df3e7b98da876f50741e6a3a">SVF::SVFIRBuilder::addGepEdge</a></div><div class="ttdeci">void addGepEdge(NodeID src, NodeID dst, const AccessPath &amp;ap, bool constGep)</div><div class="ttdoc">Add Gep edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00378">SVFIRBuilder.h:378</a></div></div>
4813
4816
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a2f74db48793a0db76c000ffecf9e1bd2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2f74db48793a0db76c000ffecf9e1bd2">SVF::SVFUtil::getTaskDataAtHareParForSite</a></div><div class="ttdeci">const SVFValue * getTaskDataAtHareParForSite(const CallSite cs)</div><div class="ttdoc">Return the task data argument of the parallel_for routine.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00599">SVFUtil.h:599</a></div></div>
4814
4817
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_adb6db6407bdc9a39e5bf8cd941f0ad15"><div class="ttname"><a href="classSVF_1_1SVFIR.html#adb6db6407bdc9a39e5bf8cd941f0ad15">SVF::SVFIR::getTypeLocSetsMap</a></div><div class="ttdeci">SVFTypeLocSetsPair &amp; getTypeLocSetsMap(NodeID argId)</div><div class="ttdoc">Given an arg NodeId, get its base SVFType* and all its field location sets.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00231">SVFIR.h:231</a></div></div>
4815
- <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_af4e2ec8dee9fca167e20b01cc10b56fd"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#af4e2ec8dee9fca167e20b01cc10b56fd">SVF::SVFIRBuilder::getGlobalVarField</a></div><div class="ttdeci">NodeID getGlobalVarField(const GlobalVariable *gvar, u32_t offset, SVFType *tpy)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00463">SVFIRBuilder.cpp:463</a></div></div>
4816
- <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01239">SVFIRBuilder.cpp:1239</a></div></div>
4818
+ <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_af4e2ec8dee9fca167e20b01cc10b56fd"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#af4e2ec8dee9fca167e20b01cc10b56fd">SVF::SVFIRBuilder::getGlobalVarField</a></div><div class="ttdeci">NodeID getGlobalVarField(const GlobalVariable *gvar, u32_t offset, SVFType *tpy)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00465">SVFIRBuilder.cpp:465</a></div></div>
4819
+ <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01241">SVFIRBuilder.cpp:1241</a></div></div>
4817
4820
  <div class="ttc" id="aclassSVF_1_1ICFG_html_af1b2d2839f811a00103df87342dfc919"><div class="ttname"><a href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitICFGNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node.</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00279">ICFG.cpp:279</a></div></div>
4818
4821
  <div class="ttc" id="anamespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
4819
4822
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_ab582424fdb6d9674c1bd4466cdfbe497"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">SVF::SymbolTableInfo::constantSymID</a></div><div class="ttdeci">SymID constantSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00193">SymbolTableInfo.h:193</a></div></div>
@@ -4838,9 +4841,9 @@ Private Attributes</h2></td></tr>
4838
4841
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a76b0d0ac69c170838cfc8ee26f4518a0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a76b0d0ac69c170838cfc8ee26f4518a0">SVF::LLVMUtil::getProgFunction</a></div><div class="ttdeci">const Function * getProgFunction(const std::string &amp;funName)</div><div class="ttdoc">Get program entry function from module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00088">LLVMUtil.h:88</a></div></div>
4839
4842
  <div class="ttc" id="anamespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
4840
4843
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_a3b417ee79560fd00f4cf80906044c198"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">SVF::IRGraph::getBlkPtr</a></div><div class="ttdeci">NodeID getBlkPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00170">IRGraph.h:170</a></div></div>
4841
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a946a2b51b848c45c6c52f03581ee05b8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a946a2b51b848c45c6c52f03581ee05b8">SVF::LLVMUtil::isTruncConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isTruncConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00284">LLVMUtil.h:284</a></div></div>
4844
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a946a2b51b848c45c6c52f03581ee05b8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a946a2b51b848c45c6c52f03581ee05b8">SVF::LLVMUtil::isTruncConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isTruncConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00289">LLVMUtil.h:289</a></div></div>
4842
4845
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_aefc70f2a0a2103259ae36d026cbb18be"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">SVF::SVFIRBuilder::curVal</a></div><div class="ttdeci">const SVFValue * curVal</div><div class="ttdoc">Current Value during SVFIR construction when visiting the module.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00053">SVFIRBuilder.h:53</a></div></div>
4843
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00414">LLVMUtil.h:414</a></div></div>
4846
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00420">LLVMUtil.h:420</a></div></div>
4844
4847
  <div class="ttc" id="anamespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00092">BasicTypes.h:92</a></div></div>
4845
4848
  <div class="ttc" id="aclassSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node.</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00088">ICFG.h:88</a></div></div>
4846
4849
  <div class="ttc" id="aclassSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">SVF::ICFGEdge::RetCF</a></div><div class="ttdeci">@ RetCF</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00057">ICFGEdge.h:57</a></div></div>
@@ -4854,7 +4857,7 @@ Private Attributes</h2></td></tr>
4854
4857
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a4e1d75ac5f54872762460c86a67de3a6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4e1d75ac5f54872762460c86a67de3a6">SVF::SVFIRBuilder::addCmpEdge</a></div><div class="ttdeci">void addCmpEdge(NodeID op1, NodeID op2, NodeID dst, u32_t predict)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00325">SVFIRBuilder.h:325</a></div></div>
4855
4858
  <div class="ttc" id="aclassSVF_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#l00440">ICFGNode.h:440</a></div></div>
4856
4859
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a54636413fd3ed7e634ac7428139966a4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a54636413fd3ed7e634ac7428139966a4">SVF::SVFIRBuilder::addThreadForkEdge</a></div><div class="ttdeci">void addThreadForkEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Thread fork edge for parameter passing.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00396">SVFIRBuilder.h:396</a></div></div>
4857
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae59b0dc7f29dbd2018e819f77465f66e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae59b0dc7f29dbd2018e819f77465f66e">SVF::LLVMUtil::isSelectConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isSelectConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00274">LLVMUtil.h:274</a></div></div>
4860
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae59b0dc7f29dbd2018e819f77465f66e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae59b0dc7f29dbd2018e819f77465f66e">SVF::LLVMUtil::isSelectConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isSelectConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00279">LLVMUtil.h:279</a></div></div>
4858
4861
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_ac5da3a0cbe040a45d719b6f6a23aed91"><div class="ttname"><a href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">SVF::IRGraph::getConstantNode</a></div><div class="ttdeci">NodeID getConstantNode() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00166">IRGraph.h:166</a></div></div>
4859
4862
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a98341496bf470d23384f3d86a58591db"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a98341496bf470d23384f3d86a58591db">SVF::SVFIR::addCallSite</a></div><div class="ttdeci">void addCallSite(const CallICFGNode *call)</div><div class="ttdoc">Add callsites.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00635">SVFIR.h:635</a></div></div>
4860
4863
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a236b4fefd16e9c793c5bd6d576290841"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">SVF::SVFIR::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print SVFIR.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00575">SVFIR.cpp:575</a></div></div>
@@ -4866,13 +4869,13 @@ Private Attributes</h2></td></tr>
4866
4869
  <div class="ttc" id="aclassSVF_1_1ICFG_html_ae0b05ce161d62362642803158228e5d0"><div class="ttname"><a href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">SVF::ICFG::getGlobalICFGNode</a></div><div class="ttdeci">GlobalICFGNode * getGlobalICFGNode() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00215">ICFG.h:215</a></div></div>
4867
4870
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_a51201a8fce21b56e3f59a31af04c7b76"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a51201a8fce21b56e3f59a31af04c7b76">SVF::IRGraph::mapValueToEdge</a></div><div class="ttdeci">void mapValueToEdge(const SVFValue *V, SVFStmt *edge)</div><div class="ttdoc">Map a value to a set of edges.</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00090">IRGraph.h:90</a></div></div>
4868
4871
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a4469ae4c52c162d3fbbd559420045243"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">SVF::SVFIRBuilder::addLoadEdge</a></div><div class="ttdeci">void addLoadEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00349">SVFIRBuilder.h:349</a></div></div>
4869
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00332">LLVMUtil.h:332</a></div></div>
4870
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00244">LLVMUtil.h:244</a></div></div>
4872
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00337">LLVMUtil.h:337</a></div></div>
4873
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00249">LLVMUtil.h:249</a></div></div>
4871
4874
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a140defeb309d895394822f8780deda16"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">SVF::SVFIRBuilder::addCopyEdge</a></div><div class="ttdeci">CopyStmt * addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00302">SVFIRBuilder.h:302</a></div></div>
4872
4875
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a30f043eeca79259d84b97e265110f018"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">SVF::SVFIRBuilder::addStoreEdge</a></div><div class="ttdeci">void addStoreEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00355">SVFIRBuilder.h:355</a></div></div>
4873
4876
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_ab1e2f58c350ec14763b4d8a424984d47"><div class="ttname"><a href="classSVF_1_1IRGraph.html#ab1e2f58c350ec14763b4d8a424984d47">SVF::IRGraph::getObjectNode</a></div><div class="ttdeci">NodeID getObjectNode(const SVFValue *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00148">IRGraph.h:148</a></div></div>
4874
4877
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a3f9612f32c651220386beb0514f8fcff"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a3f9612f32c651220386beb0514f8fcff">SVF::SymbolTableInfo::objSyms</a></div><div class="ttdeci">ValueToIDMapTy &amp; objSyms()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00265">SymbolTableInfo.h:265</a></div></div>
4875
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2834d135a2385efff783e6e22d2eff1f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2834d135a2385efff783e6e22d2eff1f">SVF::LLVMUtil::isPtr2IntConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isPtr2IntConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00254">LLVMUtil.h:254</a></div></div>
4878
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2834d135a2385efff783e6e22d2eff1f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2834d135a2385efff783e6e22d2eff1f">SVF::LLVMUtil::isPtr2IntConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isPtr2IntConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00259">LLVMUtil.h:259</a></div></div>
4876
4879
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a3837804b2622baf7e6991aa993286e9e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3837804b2622baf7e6991aa993286e9e">SVF::SVFIR::addLoadStmt</a></div><div class="ttdeci">LoadStmt * addLoadStmt(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00204">SVFIR.cpp:204</a></div></div>
4877
4880
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00406">GenericGraph.h:406</a></div></div>
4878
4881
  <div class="ttc" id="aclassSVF_1_1ICFG_html_a86535e50d1feba706b19491d905baef1"><div class="ttname"><a href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">SVF::ICFG::hasInterICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasInterICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00308">ICFG.cpp:308</a></div></div>
@@ -4893,8 +4896,8 @@ Private Attributes</h2></td></tr>
4893
4896
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a9e81039d17b70e6a3d7310d05fa73c45"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9e81039d17b70e6a3d7310d05fa73c45">SVF::SVFIRBuilder::addUnaryOPEdge</a></div><div class="ttdeci">void addUnaryOPEdge(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00337">SVFIRBuilder.h:337</a></div></div>
4894
4897
  <div class="ttc" id="anamespaceSVF_html_a8ad3aa124fabddc2fdd07c50403d70a9"><div class="ttname"><a href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">SVF::ConstantDataSequential</a></div><div class="ttdeci">llvm::ConstantDataSequential ConstantDataSequential</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00117">BasicTypes.h:117</a></div></div>
4895
4898
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a1f77275b24345164f30d519238121f92"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1f77275b24345164f30d519238121f92">SVF::SVFIR::addGepStmt</a></div><div class="ttdeci">GepStmt * addGepStmt(NodeID src, NodeID dst, const AccessPath &amp;ap, bool constGep)</div><div class="ttdoc">Add Gep edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00327">SVFIR.cpp:327</a></div></div>
4896
- <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a892ab8cad098e9e9d8425e7f05e35c59"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a892ab8cad098e9e9d8425e7f05e35c59">SVF::SVFIRBuilder::getBaseValueForExtArg</a></div><div class="ttdeci">const Value * getBaseValueForExtArg(const Value *V)</div><div class="ttdoc">Get the base value of (i8* src and i8* dst) for external argument (e.g. memcpy(i8* dst,...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01065">SVFIRBuilder.cpp:1065</a></div></div>
4897
- <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5ae68d4465feb54fcb8fd0cf20b7a71a"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5ae68d4465feb54fcb8fd0cf20b7a71a">SVF::SVFIRBuilder::handleIndCall</a></div><div class="ttdeci">void handleIndCall(CallBase *cs)</div><div class="ttdoc">Handle indirect call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01122">SVFIRBuilder.cpp:1122</a></div></div>
4899
+ <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a892ab8cad098e9e9d8425e7f05e35c59"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a892ab8cad098e9e9d8425e7f05e35c59">SVF::SVFIRBuilder::getBaseValueForExtArg</a></div><div class="ttdeci">const Value * getBaseValueForExtArg(const Value *V)</div><div class="ttdoc">Get the base value of (i8* src and i8* dst) for external argument (e.g. memcpy(i8* dst,...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01067">SVFIRBuilder.cpp:1067</a></div></div>
4900
+ <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5ae68d4465feb54fcb8fd0cf20b7a71a"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5ae68d4465feb54fcb8fd0cf20b7a71a">SVF::SVFIRBuilder::handleIndCall</a></div><div class="ttdeci">void handleIndCall(CallBase *cs)</div><div class="ttdoc">Handle indirect call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01124">SVFIRBuilder.cpp:1124</a></div></div>
4898
4901
  <div class="ttc" id="aclassSVF_1_1NodeIDAllocator_html_a26b5e09e10448694435f74a8b622a7e8"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">SVF::NodeIDAllocator::allocateValueId</a></div><div class="ttdeci">NodeID allocateValueId(void)</div><div class="ttdoc">Allocate a value ID as determined by the strategy.</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00128">NodeIDAllocator.cpp:128</a></div></div>
4899
4902
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a26eb45eab3da4695a6e5bad51b01ddc5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a26eb45eab3da4695a6e5bad51b01ddc5">SVF::SymbolTableInfo::getTotalSymNum</a></div><div class="ttdeci">u32_t getTotalSymNum() const</div><div class="ttdoc">Statistics.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00248">SymbolTableInfo.h:248</a></div></div>
4900
4903
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_a8b10c318674a47035d617b3ade4f069b"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">SVF::IRGraph::getVarargNode</a></div><div class="ttdeci">NodeID getVarargNode(const SVFFunction *func) const</div><div class="ttdoc">getVarargNode - Return the unique node representing the variadic argument of a variadic function.</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00158">IRGraph.h:158</a></div></div>
@@ -4903,7 +4906,7 @@ Private Attributes</h2></td></tr>
4903
4906
  <div class="ttc" id="aclassSVF_1_1ICFG_html_a0dca4655c2f6112a5be1f921b8e81076"><div class="ttname"><a href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">SVF::ICFG::getFunEntryICFGNode</a></div><div class="ttdeci">FunEntryICFGNode * getFunEntryICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function entry node.</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00270">ICFG.cpp:270</a></div></div>
4904
4907
  <div class="ttc" id="acJSON_8cpp_html_a95bf816579e97b6f33bdb5e25ed6d5de"><div class="ttname"><a href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a></div><div class="ttdeci">buffer offset</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01113">cJSON.cpp:1113</a></div></div>
4905
4908
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a806ae865d29c4b05b69c499284758c6f"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a806ae865d29c4b05b69c499284758c6f">SVF::SymbolTableInfo::getFlatternedElemType</a></div><div class="ttdeci">const SVFType * getFlatternedElemType(const SVFType *baseType, u32_t flatten_idx)</div><div class="ttdoc">Return the type of a flattened element given a flattened index.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00212">SymbolTableInfo.cpp:212</a></div></div>
4906
- <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5adf8baa546292434ba1fec48db2d0a7"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">SVF::SVFIRBuilder::processCE</a></div><div class="ttdeci">void processCE(const Value *val)</div><div class="ttdoc">Process constant expression.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00338">SVFIRBuilder.cpp:338</a></div></div>
4909
+ <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5adf8baa546292434ba1fec48db2d0a7"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">SVF::SVFIRBuilder::processCE</a></div><div class="ttdeci">void processCE(const Value *val)</div><div class="ttdoc">Process constant expression.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00340">SVFIRBuilder.cpp:340</a></div></div>
4907
4910
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_ad6e18f520f6b559f2304002792f6b701"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">SVF::SVFIR::getModule</a></div><div class="ttdeci">SVFModule * getModule()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00160">SVFIR.h:160</a></div></div>
4908
4911
  <div class="ttc" id="anamespaceSVF_html_afc50da46a6ea7c2cf61683bbec4d7c8d"><div class="ttname"><a href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">SVF::BitCastInst</a></div><div class="ttdeci">llvm::BitCastInst BitCastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
4909
4912
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a52bea4a99022b036104751cafa9152b1"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a52bea4a99022b036104751cafa9152b1">SVF::SVFIR::setModule</a></div><div class="ttdeci">void setModule(SVFModule *mod)</div><div class="ttdoc">Set/Get LLVM Module.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00156">SVFIR.h:156</a></div></div>
@@ -4913,7 +4916,7 @@ Private Attributes</h2></td></tr>
4913
4916
  <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html">SVF::SymbolTableBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00042">SymbolTableBuilder.h:42</a></div></div>
4914
4917
  <div class="ttc" id="aclassSVF_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#l00241">SVFIRBuilder.h:241</a></div></div>
4915
4918
  <div class="ttc" id="anamespaceSVF_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#l00050">SVFUtil.h:50</a></div></div>
4916
- <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a7c401d6929e583be734c0c4e9957d0d7"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a7c401d6929e583be734c0c4e9957d0d7">SVF::SVFIRBuilder::getAccessPathFromBaseNode</a></div><div class="ttdeci">AccessPath getAccessPathFromBaseNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01326">SVFIRBuilder.cpp:1326</a></div></div>
4919
+ <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a7c401d6929e583be734c0c4e9957d0d7"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a7c401d6929e583be734c0c4e9957d0d7">SVF::SVFIRBuilder::getAccessPathFromBaseNode</a></div><div class="ttdeci">AccessPath getAccessPathFromBaseNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01328">SVFIRBuilder.cpp:1328</a></div></div>
4917
4920
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a89e8cc23aad23d2c326b4a5ff12535ca"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a89e8cc23aad23d2c326b4a5ff12535ca">SVF::SVFIRBuilder::addRetEdge</a></div><div class="ttdeci">void addRetEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Return edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00372">SVFIRBuilder.h:372</a></div></div>
4918
4921
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html">SVF::SymbolTableInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00047">SymbolTableInfo.h:47</a></div></div>
4919
4922
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_ad0977d55d947bdccd98d61c66d3f0cc7"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7">SVF::SVFIR::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const SVFValue *curInst, NodeID base, const AccessPath &amp;ap) const</div><div class="ttdoc">Due to constraint expression, curInst is used to distinguish different instructions (e....</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00540">SVFIR.cpp:540</a></div></div>
@@ -4922,7 +4925,7 @@ Private Attributes</h2></td></tr>
4922
4925
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a55d8504dbc766c4ede031299a37417ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a55d8504dbc766c4ede031299a37417ef">SVF::SVFIRBuilder::addGlobalBlackHoleAddrEdge</a></div><div class="ttdeci">void addGlobalBlackHoleAddrEdge(NodeID node, const ConstantExpr *int2Ptrce)</div><div class="ttdoc">Add global black hole Address edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00261">SVFIRBuilder.h:261</a></div></div>
4923
4926
  <div class="ttc" id="aclassllvm_1_1generic__bridge__gep__type__iterator_html"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html">llvm::generic_bridge_gep_type_iterator</a></div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00017">GEPTypeBridgeIterator.h:17</a></div></div>
4924
4927
  <div class="ttc" id="aclassSVF_1_1Options_html_a1dd9ad3f11454be49b4c5099503db8e8"><div class="ttname"><a href="classSVF_1_1Options.html#a1dd9ad3f11454be49b4c5099503db8e8">SVF::Options::PAGDotGraph</a></div><div class="ttdeci">static const Option&lt; bool &gt; PAGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00134">Options.h:134</a></div></div>
4925
- <div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01291">LLVMUtil.cpp:1291</a></div></div>
4928
+ <div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01385">LLVMUtil.cpp:1385</a></div></div>
4926
4929
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html">SVF::LLVMModuleSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00044">LLVMModule.h:44</a></div></div>
4927
4930
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00215">LLVMModule.h:215</a></div></div>
4928
4931
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a20ded5829d5975dfaca33f9c64113fe6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a20ded5829d5975dfaca33f9c64113fe6">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const SVFValue *val, NodeID i)</div><div class="ttdoc">Add a memory obj node.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00542">SVFIR.h:542</a></div></div>
@@ -4935,6 +4938,7 @@ Private Attributes</h2></td></tr>
4935
4938
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a955a2f93cf9eef857e40f19bc24edb2f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a955a2f93cf9eef857e40f19bc24edb2f">SVF::SVFIR::addBinaryOPStmt</a></div><div class="ttdeci">BinaryOPStmt * addBinaryOPStmt(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00148">SVFIR.cpp:148</a></div></div>
4936
4939
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a3f954c61381fe31088e791772c334105"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a3f954c61381fe31088e791772c334105">SVF::SVFIRBuilder::addBinaryOPEdge</a></div><div class="ttdeci">void addBinaryOPEdge(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00331">SVFIRBuilder.h:331</a></div></div>
4937
4940
  <div class="ttc" id="aclassSVF_1_1CHGraph_html"><div class="ttname"><a href="classSVF_1_1CHGraph.html">SVF::CHGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00215">CHG.h:215</a></div></div>
4941
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4b5d4c7ca2c580ace7305bfed58ffce8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4b5d4c7ca2c580ace7305bfed58ffce8">SVF::LLVMUtil::getPointeeType</a></div><div class="ttdeci">Type * getPointeeType(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00246">LLVMUtil.cpp:246</a></div></div>
4938
4942
  <div class="ttc" id="aclassSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00047">ICFG.h:47</a></div></div>
4939
4943
  <div class="ttc" id="anamespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00118">BasicTypes.h:118</a></div></div>
4940
4944
  <div class="ttc" id="aclassSVF_1_1SVFIRWriter_html_a2bbb4e38ce3eb2c43b7f01cb240df9c8"><div class="ttname"><a href="classSVF_1_1SVFIRWriter.html#a2bbb4e38ce3eb2c43b7f01cb240df9c8">SVF::SVFIRWriter::writeJsonToPath</a></div><div class="ttdeci">static void writeJsonToPath(const SVFIR *svfir, const std::string &amp;path)</div><div class="ttdef"><b>Definition:</b> <a href="SVFFileSystem_8cpp_source.html#l01005">SVFFileSystem.cpp:1005</a></div></div>
@@ -4946,10 +4950,10 @@ Private Attributes</h2></td></tr>
4946
4950
  <div class="ttc" id="aclassSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">SVF::ICFGEdge::CallCF</a></div><div class="ttdeci">@ CallCF</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00056">ICFGEdge.h:56</a></div></div>
4947
4951
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01238">LLVMModule.cpp:1238</a></div></div>
4948
4952
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a2790c5289dad1d6e80f7597a2ea458ab"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2790c5289dad1d6e80f7597a2ea458ab">SVF::SVFUtil::getForkedFun</a></div><div class="ttdeci">const SVFValue * getForkedFun(const CallSite cs)</div><div class="ttdoc">Return thread fork function.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00405">SVFUtil.h:405</a></div></div>
4949
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab5fc50624b5fe83b676b14bec4b99685"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab5fc50624b5fe83b676b14bec4b99685">SVF::LLVMUtil::isGepConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isGepConstantExpr(const Value *val)</div><div class="ttdoc">Return corresponding constant expression, otherwise return nullptr.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00234">LLVMUtil.h:234</a></div></div>
4953
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab5fc50624b5fe83b676b14bec4b99685"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab5fc50624b5fe83b676b14bec4b99685">SVF::LLVMUtil::isGepConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isGepConstantExpr(const Value *val)</div><div class="ttdoc">Return corresponding constant expression, otherwise return nullptr.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00239">LLVMUtil.h:239</a></div></div>
4950
4954
  <div class="ttc" id="aclassSVF_1_1Options_html_a18dd95e01a50aa82165c46a3801053c5"><div class="ttname"><a href="classSVF_1_1Options.html#a18dd95e01a50aa82165c46a3801053c5">SVF::Options::ModelConsts</a></div><div class="ttdeci">static const Option&lt; bool &gt; ModelConsts</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00218">Options.h:218</a></div></div>
4951
4955
  <div class="ttc" id="anamespaceSVF_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="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
4952
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a215cc9fd716798bbb7f96f5b64e01349"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a215cc9fd716798bbb7f96f5b64e01349">SVF::LLVMUtil::isUnaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isUnaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00320">LLVMUtil.h:320</a></div></div>
4956
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a215cc9fd716798bbb7f96f5b64e01349"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a215cc9fd716798bbb7f96f5b64e01349">SVF::LLVMUtil::isUnaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isUnaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00325">LLVMUtil.h:325</a></div></div>
4953
4957
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a870b63af2bf9fe43cdf1df3d56b20f6c"><div class="ttname"><a href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">SVF::SVFType::isPointerTy</a></div><div class="ttdeci">bool isPointerTy() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00328">SVFType.h:328</a></div></div>
4954
4958
  <div class="ttc" id="aclassSVF_1_1SVFArgument_html"><div class="ttname"><a href="classSVF_1_1SVFArgument.html">SVF::SVFArgument</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00892">SVFValue.h:892</a></div></div>
4955
4959
  <div class="ttc" id="aclassSVF_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#l00443">ICFG.cpp:443</a></div></div>
@@ -4961,7 +4965,7 @@ Private Attributes</h2></td></tr>
4961
4965
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a756ae2b40ec29f2f92c95919f615e5ec"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a756ae2b40ec29f2f92c95919f615e5ec">SVF::SVFIR::setICFG</a></div><div class="ttdeci">void setICFG(ICFG *i)</div><div class="ttdoc">Set/Get ICFG.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00166">SVFIR.h:166</a></div></div>
4962
4966
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a0814a6a71c4a8f08253bf16ad1ba5dc5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a0814a6a71c4a8f08253bf16ad1ba5dc5">SVF::SVFIR::addVariantGepStmt</a></div><div class="ttdeci">GepStmt * addVariantGepStmt(NodeID src, NodeID dst, const AccessPath &amp;ap)</div><div class="ttdoc">Add Variant(Gep) edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00365">SVFIR.cpp:365</a></div></div>
4963
4967
  <div class="ttc" id="aclassSVF_1_1SVFInstruction_html_ae009f41cbf48d949d4325e08fe8d7198"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">SVF::SVFInstruction::getParent</a></div><div class="ttdeci">const SVFBasicBlock * getParent() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00653">SVFValue.h:653</a></div></div>
4964
- <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_ae7fcd2050a57a43bfed2c7fd1c41d250"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">SVF::SVFIRBuilder::InitialGlobal</a></div><div class="ttdeci">void InitialGlobal(const GlobalVariable *gvar, Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00490">SVFIRBuilder.cpp:490</a></div></div>
4968
+ <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_ae7fcd2050a57a43bfed2c7fd1c41d250"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">SVF::SVFIRBuilder::InitialGlobal</a></div><div class="ttdeci">void InitialGlobal(const GlobalVariable *gvar, Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00492">SVFIRBuilder.cpp:492</a></div></div>
4965
4969
  <div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00626">SVFValue.h:626</a></div></div>
4966
4970
  <div class="ttc" id="aclassSVF_1_1Options_html_a88bb706e03a3dd04546b4ce62af7b140"><div class="ttname"><a href="classSVF_1_1Options.html#a88bb706e03a3dd04546b4ce62af7b140">SVF::Options::VtableInSVFIR</a></div><div class="ttdeci">static const Option&lt; bool &gt; VtableInSVFIR</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00248">Options.h:248</a></div></div>
4967
4971
  <div class="ttc" id="anamespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00054">SVFType.h:54</a></div></div>
@@ -4971,9 +4975,9 @@ Private Attributes</h2></td></tr>
4971
4975
  <div class="ttc" id="aclassSVF_1_1PAGBuilderFromFile_html"><div class="ttname"><a href="classSVF_1_1PAGBuilderFromFile.html">SVF::PAGBuilderFromFile</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGBuilderFromFile_8h_source.html#l00041">PAGBuilderFromFile.h:41</a></div></div>
4972
4976
  <div class="ttc" id="aclassSVF_1_1SVFValue_html_a7effb0f37f486745e0cdc3ae5e9c732b"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">SVF::SVFValue::getSourceLoc</a></div><div class="ttdeci">virtual const std::string getSourceLoc() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00280">SVFValue.h:280</a></div></div>
4973
4977
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a7eb14738f0cf08cc8b5c623c953db4ba"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7eb14738f0cf08cc8b5c623c953db4ba">SVF::SVFIR::addCmpStmt</a></div><div class="ttdeci">CmpStmt * addCmpStmt(NodeID op1, NodeID op2, NodeID dst, u32_t predict)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00127">SVFIR.cpp:127</a></div></div>
4974
- <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a3ccc53ca9a6862674ee2ec3bd67aa515"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">SVF::SVFIRBuilder::handleDirectCall</a></div><div class="ttdeci">void handleDirectCall(CallBase *cs, const Function *F)</div><div class="ttdoc">Handle direct call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00999">SVFIRBuilder.cpp:999</a></div></div>
4978
+ <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a3ccc53ca9a6862674ee2ec3bd67aa515"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">SVF::SVFIRBuilder::handleDirectCall</a></div><div class="ttdeci">void handleDirectCall(CallBase *cs, const Function *F)</div><div class="ttdoc">Handle direct call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01001">SVFIRBuilder.cpp:1001</a></div></div>
4975
4979
  <div class="ttc" id="aclassSVF_1_1SVFCallInst_html_a496d0e963f0f6a4f9c08183fa91792b0"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#a496d0e963f0f6a4f9c08183fa91792b0">SVF::SVFCallInst::arg_size</a></div><div class="ttdeci">u32_t arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00733">SVFValue.h:733</a></div></div>
4976
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa0b3e34188f721ff7145e47cb607c79a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa0b3e34188f721ff7145e47cb607c79a">SVF::LLVMUtil::isCmpConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCmpConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00298">LLVMUtil.h:298</a></div></div>
4980
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa0b3e34188f721ff7145e47cb607c79a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa0b3e34188f721ff7145e47cb607c79a">SVF::LLVMUtil::isCmpConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCmpConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00303">LLVMUtil.h:303</a></div></div>
4977
4981
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00119">LLVMUtil.h:119</a></div></div>
4978
4982
  <div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
4979
4983
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a8abc436992aa3b6b636084ff5f9a8ef2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a8abc436992aa3b6b636084ff5f9a8ef2">SVF::SVFIR::addUnaryOPStmt</a></div><div class="ttdeci">UnaryOPStmt * addUnaryOPStmt(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00168">SVFIR.cpp:168</a></div></div>
@@ -4986,7 +4990,7 @@ Private Attributes</h2></td></tr>
4986
4990
  <div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a3fe99644b2bf5f0f9b2b21a56a400ad4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a3fe99644b2bf5f0f9b2b21a56a400ad4">SVF::SVFIRBuilder::getVarargNode</a></div><div class="ttdeci">NodeID getVarargNode(const SVFFunction *func)</div><div class="ttdoc">getVarargNode - Return the node representing the unique variadic argument of a function.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00111">SVFIRBuilder.h:111</a></div></div>
4987
4991
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2e0196e0ce547ab4a483cc6d2646b24"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(const std::string &amp;msg)</div><div class="ttdoc">Writes a message run through wrnMsg.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00066">SVFUtil.cpp:66</a></div></div>
4988
4992
  <div class="ttc" id="anamespaceSVF_html_a90f6c91ba7a3c31c84b5c25277d83fca"><div class="ttname"><a href="namespaceSVF.html#a90f6c91ba7a3c31c84b5c25277d83fca">SVF::ConstantPointerNull</a></div><div class="ttdeci">llvm::ConstantPointerNull ConstantPointerNull</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
4989
- <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_af5e91f2ace726b1f05b045681d2bd117"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af5e91f2ace726b1f05b045681d2bd117">SVF::SymbolTableInfo::hasValSym</a></div><div class="ttdeci">bool hasValSym(const SVFValue *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00583">SymbolTableInfo.cpp:583</a></div></div>
4993
+ <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_af5e91f2ace726b1f05b045681d2bd117"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af5e91f2ace726b1f05b045681d2bd117">SVF::SymbolTableInfo::hasValSym</a></div><div class="ttdeci">bool hasValSym(const SVFValue *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00584">SymbolTableInfo.cpp:584</a></div></div>
4990
4994
  <div class="ttc" id="aclassSVF_1_1Options_html_a7c6053f2341a500a8caca61607303b6e"><div class="ttname"><a href="classSVF_1_1Options.html#a7c6053f2341a500a8caca61607303b6e">SVF::Options::PAGPrint</a></div><div class="ttdeci">static const Option&lt; bool &gt; PAGPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00140">Options.h:140</a></div></div>
4991
4995
  <!-- start footer part -->
4992
4996
  <hr class="footer"/><address class="footer"><small>