svf-tools 1.0.769 → 1.0.771

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 (458) hide show
  1. package/SVF-doxygen/html/html/AddressValue_8h_source.html +1 -1
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/BasicTypes_8h.html +4 -0
  4. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +120 -114
  5. package/SVF-doxygen/html/html/CFGrammar_8cpp_source.html +3 -3
  6. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +10 -10
  8. package/SVF-doxygen/html/html/CommandLine_8h_source.html +1 -1
  9. package/SVF-doxygen/html/html/ConsExeState_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/ConsExeState_8h_source.html +1 -1
  11. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
  14. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +11 -11
  15. package/SVF-doxygen/html/html/DCHG_8h_source.html +5 -5
  16. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/ExeState_8h_source.html +1 -1
  19. package/SVF-doxygen/html/html/ExtAPI_8cpp.html +1 -1
  20. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +60 -67
  21. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +9 -9
  22. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
  24. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/IntervalExeState_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/IntervalValue_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +19 -19
  28. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1148 -1112
  29. package/SVF-doxygen/html/html/LLVMUtil_8h.html +4 -0
  30. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +61 -51
  31. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  32. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  36. package/SVF-doxygen/html/html/NumericLiteral_8h_source.html +1 -1
  37. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  40. package/SVF-doxygen/html/html/RelExeState_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/SVFFileSystem_8cpp_source.html +2 -2
  42. package/SVF-doxygen/html/html/SVFFileSystem_8h_source.html +2 -2
  43. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
  46. package/SVF-doxygen/html/html/SVFIR2ConsExeState_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +367 -362
  49. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +10 -10
  50. package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp_source.html +10 -11
  51. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +1 -1
  52. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  53. package/SVF-doxygen/html/html/SVFType_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
  55. package/SVF-doxygen/html/html/SVFUtil_8h.html +0 -12
  56. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +300 -333
  57. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +1 -1
  58. package/SVF-doxygen/html/html/SVFValue_8h_source.html +2 -2
  59. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +1 -1
  61. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
  62. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/html/SymState_8cpp_source.html +1 -1
  64. package/SVF-doxygen/html/html/SymState_8h_source.html +1 -1
  65. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +50 -60
  66. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -3
  67. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/html/WTO_8h_source.html +1 -1
  69. package/SVF-doxygen/html/html/cJSON_8cpp.html +3 -2
  70. package/SVF-doxygen/html/html/cJSON_8cpp_source.html +3 -2
  71. package/SVF-doxygen/html/html/classOption.html +1 -1
  72. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  73. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1AddressValue.html +1 -1
  76. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  77. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
  78. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  79. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
  81. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTO.html +1 -1
  82. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTOCycle.html +1 -1
  83. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +1 -1
  84. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +10 -10
  85. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  86. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  87. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  88. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1ConsExeState.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1CxtDPItem.html +1 -1
  94. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  95. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  96. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +11 -11
  98. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  99. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +1 -1
  101. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +51 -56
  102. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  103. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  107. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +3 -3
  108. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
  110. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  111. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +1 -1
  113. package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +1 -1
  114. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  115. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +19 -19
  118. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  120. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
  122. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  126. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +3 -3
  127. package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral.html +1 -1
  128. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
  132. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +1 -1
  135. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1RelExeState.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  139. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +2 -2
  141. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +357 -354
  147. package/SVF-doxygen/html/html/classSVF_1_1SVFIRReader.html +2 -2
  148. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +1 -1
  150. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +24 -24
  151. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +1 -1
  154. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  156. package/SVF-doxygen/html/html/classSVF_1_1SymState.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +49 -59
  158. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  160. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  161. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +1 -1
  166. package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +1 -1
  168. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +1 -1
  169. package/SVF-doxygen/html/html/extapi_8c.html +1487 -302
  170. package/SVF-doxygen/html/html/extapi_8c_source.html +1120 -1164
  171. package/SVF-doxygen/html/html/functions_func_h.html +1 -1
  172. package/SVF-doxygen/html/html/functions_h.html +1 -1
  173. package/SVF-doxygen/html/html/globals.html +20 -2
  174. package/SVF-doxygen/html/html/globals_a.html +3 -0
  175. package/SVF-doxygen/html/html/globals_b.html +10 -4
  176. package/SVF-doxygen/html/html/globals_c.html +8 -4
  177. package/SVF-doxygen/html/html/globals_d.html +9 -0
  178. package/SVF-doxygen/html/html/globals_defs.html +3 -0
  179. package/SVF-doxygen/html/html/globals_func.html +18 -399
  180. package/SVF-doxygen/html/html/globals_func_a.html +91 -0
  181. package/SVF-doxygen/html/html/globals_func_b.html +14 -20
  182. package/SVF-doxygen/html/html/globals_func_c.html +16 -849
  183. package/SVF-doxygen/html/html/globals_func_d.html +14 -275
  184. package/SVF-doxygen/html/html/globals_func_e.html +8 -97
  185. package/SVF-doxygen/html/html/globals_func_f.html +17 -20
  186. package/SVF-doxygen/html/html/globals_func_g.html +72 -25
  187. package/SVF-doxygen/html/html/globals_func_h.html +9 -6
  188. package/SVF-doxygen/html/html/globals_func_i.html +49 -31
  189. package/SVF-doxygen/html/html/globals_func_j.html +79 -0
  190. package/SVF-doxygen/html/html/globals_func_l.html +15 -9
  191. package/SVF-doxygen/html/html/globals_func_m.html +13 -87
  192. package/SVF-doxygen/html/html/globals_func_n.html +79 -0
  193. package/SVF-doxygen/html/html/globals_func_p.html +13 -22
  194. package/SVF-doxygen/html/html/globals_func_r.html +16 -28
  195. package/SVF-doxygen/html/html/globals_func_s.html +32 -128
  196. package/SVF-doxygen/html/html/globals_func_t.html +18 -9
  197. package/SVF-doxygen/html/html/globals_func_u.html +8 -18
  198. package/SVF-doxygen/html/html/globals_func_w.html +8 -5
  199. package/SVF-doxygen/html/html/globals_func_z.html +10 -73
  200. package/SVF-doxygen/html/html/globals_g.html +54 -0
  201. package/SVF-doxygen/html/html/globals_l.html +6 -0
  202. package/SVF-doxygen/html/html/globals_n.html +5 -2
  203. package/SVF-doxygen/html/html/globals_p.html +4 -1
  204. package/SVF-doxygen/html/html/globals_r.html +11 -8
  205. package/SVF-doxygen/html/html/globals_s.html +6 -0
  206. package/SVF-doxygen/html/html/globals_t.html +6 -0
  207. package/SVF-doxygen/html/html/globals_z.html +3 -0
  208. package/SVF-doxygen/html/html/iterator_8h_source.html +1 -1
  209. package/SVF-doxygen/html/html/iterator__range_8h_source.html +1 -1
  210. package/SVF-doxygen/html/html/menudata.js +20 -17
  211. package/SVF-doxygen/html/html/namespaceSVF.html +60 -24
  212. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +1087 -986
  213. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +206 -383
  214. package/SVF-doxygen/html/html/namespacemembers_func_g.html +9 -3
  215. package/SVF-doxygen/html/html/namespacemembers_func_i.html +2 -11
  216. package/SVF-doxygen/html/html/namespacemembers_g.html +11 -5
  217. package/SVF-doxygen/html/html/namespacemembers_i.html +5 -14
  218. package/SVF-doxygen/html/html/namespacemembers_s.html +6 -0
  219. package/SVF-doxygen/html/html/namespacemembers_type_s.html +6 -0
  220. package/SVF-doxygen/html/html/search/all_0.js +158 -152
  221. package/SVF-doxygen/html/html/search/all_1.js +478 -477
  222. package/SVF-doxygen/html/html/search/all_10.js +324 -323
  223. package/SVF-doxygen/html/html/search/all_11.js +213 -212
  224. package/SVF-doxygen/html/html/search/all_12.js +541 -537
  225. package/SVF-doxygen/html/html/search/all_13.js +190 -188
  226. package/SVF-doxygen/html/html/search/all_14.js +66 -66
  227. package/SVF-doxygen/html/html/search/all_15.js +170 -170
  228. package/SVF-doxygen/html/html/search/all_16.js +60 -60
  229. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  230. package/SVF-doxygen/html/html/search/all_18.js +1 -1
  231. package/SVF-doxygen/html/html/search/all_19.js +11 -10
  232. package/SVF-doxygen/html/html/search/all_1a.js +169 -169
  233. package/SVF-doxygen/html/html/search/all_2.js +161 -159
  234. package/SVF-doxygen/html/html/search/all_3.js +628 -627
  235. package/SVF-doxygen/html/html/search/all_4.js +229 -226
  236. package/SVF-doxygen/html/html/search/all_5.js +117 -117
  237. package/SVF-doxygen/html/html/search/all_6.js +224 -224
  238. package/SVF-doxygen/html/html/search/all_7.js +1022 -1002
  239. package/SVF-doxygen/html/html/search/all_8.js +191 -191
  240. package/SVF-doxygen/html/html/search/all_9.js +602 -605
  241. package/SVF-doxygen/html/html/search/all_a.js +46 -46
  242. package/SVF-doxygen/html/html/search/all_b.js +26 -26
  243. package/SVF-doxygen/html/html/search/all_c.js +116 -114
  244. package/SVF-doxygen/html/html/search/all_d.js +196 -196
  245. package/SVF-doxygen/html/html/search/all_e.js +206 -205
  246. package/SVF-doxygen/html/html/search/all_f.js +116 -116
  247. package/SVF-doxygen/html/html/search/classes_0.js +26 -26
  248. package/SVF-doxygen/html/html/search/classes_1.js +9 -9
  249. package/SVF-doxygen/html/html/search/classes_10.js +73 -73
  250. package/SVF-doxygen/html/html/search/classes_11.js +15 -15
  251. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  252. package/SVF-doxygen/html/html/search/classes_13.js +10 -10
  253. package/SVF-doxygen/html/html/search/classes_14.js +14 -14
  254. package/SVF-doxygen/html/html/search/classes_15.js +1 -1
  255. package/SVF-doxygen/html/html/search/classes_2.js +76 -76
  256. package/SVF-doxygen/html/html/search/classes_3.js +35 -35
  257. package/SVF-doxygen/html/html/search/classes_4.js +8 -8
  258. package/SVF-doxygen/html/html/search/classes_5.js +28 -28
  259. package/SVF-doxygen/html/html/search/classes_6.js +98 -98
  260. package/SVF-doxygen/html/html/search/classes_7.js +33 -33
  261. package/SVF-doxygen/html/html/search/classes_8.js +56 -56
  262. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  263. package/SVF-doxygen/html/html/search/classes_a.js +12 -12
  264. package/SVF-doxygen/html/html/search/classes_b.js +29 -29
  265. package/SVF-doxygen/html/html/search/classes_c.js +6 -6
  266. package/SVF-doxygen/html/html/search/classes_d.js +18 -18
  267. package/SVF-doxygen/html/html/search/classes_e.js +36 -36
  268. package/SVF-doxygen/html/html/search/classes_f.js +25 -25
  269. package/SVF-doxygen/html/html/search/defines_0.js +3 -3
  270. package/SVF-doxygen/html/html/search/defines_1.js +2 -2
  271. package/SVF-doxygen/html/html/search/defines_2.js +30 -30
  272. package/SVF-doxygen/html/html/search/defines_3.js +20 -20
  273. package/SVF-doxygen/html/html/search/defines_4.js +3 -3
  274. package/SVF-doxygen/html/html/search/defines_5.js +4 -4
  275. package/SVF-doxygen/html/html/search/defines_6.js +2 -2
  276. package/SVF-doxygen/html/html/search/defines_7.js +5 -5
  277. package/SVF-doxygen/html/html/search/defines_8.js +11 -11
  278. package/SVF-doxygen/html/html/search/defines_9.js +9 -9
  279. package/SVF-doxygen/html/html/search/defines_a.js +2 -2
  280. package/SVF-doxygen/html/html/search/defines_b.js +1 -1
  281. package/SVF-doxygen/html/html/search/defines_c.js +3 -3
  282. package/SVF-doxygen/html/html/search/defines_d.js +2 -2
  283. package/SVF-doxygen/html/html/search/defines_e.js +7 -6
  284. package/SVF-doxygen/html/html/search/defines_f.js +3 -3
  285. package/SVF-doxygen/html/html/search/enums_0.js +3 -3
  286. package/SVF-doxygen/html/html/search/enums_1.js +2 -2
  287. package/SVF-doxygen/html/html/search/enums_10.js +1 -1
  288. package/SVF-doxygen/html/html/search/enums_11.js +1 -1
  289. package/SVF-doxygen/html/html/search/enums_2.js +8 -8
  290. package/SVF-doxygen/html/html/search/enums_3.js +1 -1
  291. package/SVF-doxygen/html/html/search/enums_4.js +3 -3
  292. package/SVF-doxygen/html/html/search/enums_5.js +1 -1
  293. package/SVF-doxygen/html/html/search/enums_6.js +2 -2
  294. package/SVF-doxygen/html/html/search/enums_7.js +2 -2
  295. package/SVF-doxygen/html/html/search/enums_8.js +4 -4
  296. package/SVF-doxygen/html/html/search/enums_9.js +1 -1
  297. package/SVF-doxygen/html/html/search/enums_a.js +1 -1
  298. package/SVF-doxygen/html/html/search/enums_b.js +7 -7
  299. package/SVF-doxygen/html/html/search/enums_c.js +1 -1
  300. package/SVF-doxygen/html/html/search/enums_d.js +4 -4
  301. package/SVF-doxygen/html/html/search/enums_e.js +2 -2
  302. package/SVF-doxygen/html/html/search/enums_f.js +4 -4
  303. package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
  304. package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
  305. package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
  306. package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
  307. package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
  308. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  309. package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
  310. package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
  311. package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -36
  312. package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
  313. package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -2
  314. package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -47
  315. package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
  316. package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
  317. package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
  318. package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
  319. package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -15
  320. package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
  321. package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -5
  322. package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
  323. package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -9
  324. package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
  325. package/SVF-doxygen/html/html/search/files_0.js +13 -13
  326. package/SVF-doxygen/html/html/search/files_1.js +7 -7
  327. package/SVF-doxygen/html/html/search/files_10.js +8 -8
  328. package/SVF-doxygen/html/html/search/files_11.js +8 -8
  329. package/SVF-doxygen/html/html/search/files_12.js +2 -2
  330. package/SVF-doxygen/html/html/search/files_2.js +49 -49
  331. package/SVF-doxygen/html/html/search/files_3.js +14 -14
  332. package/SVF-doxygen/html/html/search/files_4.js +5 -5
  333. package/SVF-doxygen/html/html/search/files_5.js +13 -13
  334. package/SVF-doxygen/html/html/search/files_6.js +9 -9
  335. package/SVF-doxygen/html/html/search/files_7.js +14 -14
  336. package/SVF-doxygen/html/html/search/files_8.js +13 -13
  337. package/SVF-doxygen/html/html/search/files_9.js +18 -18
  338. package/SVF-doxygen/html/html/search/files_a.js +3 -3
  339. package/SVF-doxygen/html/html/search/files_b.js +2 -2
  340. package/SVF-doxygen/html/html/search/files_c.js +20 -20
  341. package/SVF-doxygen/html/html/search/files_d.js +4 -4
  342. package/SVF-doxygen/html/html/search/files_e.js +62 -62
  343. package/SVF-doxygen/html/html/search/files_f.js +8 -8
  344. package/SVF-doxygen/html/html/search/functions_0.js +12 -6
  345. package/SVF-doxygen/html/html/search/functions_1.js +350 -349
  346. package/SVF-doxygen/html/html/search/functions_10.js +140 -139
  347. package/SVF-doxygen/html/html/search/functions_11.js +127 -126
  348. package/SVF-doxygen/html/html/search/functions_12.js +275 -274
  349. package/SVF-doxygen/html/html/search/functions_13.js +58 -56
  350. package/SVF-doxygen/html/html/search/functions_14.js +38 -38
  351. package/SVF-doxygen/html/html/search/functions_15.js +71 -71
  352. package/SVF-doxygen/html/html/search/functions_16.js +29 -29
  353. package/SVF-doxygen/html/html/search/functions_17.js +3 -2
  354. package/SVF-doxygen/html/html/search/functions_18.js +169 -169
  355. package/SVF-doxygen/html/html/search/functions_2.js +84 -82
  356. package/SVF-doxygen/html/html/search/functions_3.js +253 -252
  357. package/SVF-doxygen/html/html/search/functions_4.js +74 -71
  358. package/SVF-doxygen/html/html/search/functions_5.js +51 -51
  359. package/SVF-doxygen/html/html/search/functions_6.js +58 -58
  360. package/SVF-doxygen/html/html/search/functions_7.js +842 -822
  361. package/SVF-doxygen/html/html/search/functions_8.js +143 -143
  362. package/SVF-doxygen/html/html/search/functions_9.js +422 -425
  363. package/SVF-doxygen/html/html/search/functions_a.js +30 -30
  364. package/SVF-doxygen/html/html/search/functions_b.js +2 -2
  365. package/SVF-doxygen/html/html/search/functions_c.js +26 -24
  366. package/SVF-doxygen/html/html/search/functions_d.js +77 -77
  367. package/SVF-doxygen/html/html/search/functions_e.js +35 -34
  368. package/SVF-doxygen/html/html/search/functions_f.js +56 -56
  369. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  370. package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
  371. package/SVF-doxygen/html/html/search/related_0.js +2 -2
  372. package/SVF-doxygen/html/html/search/related_1.js +1 -1
  373. package/SVF-doxygen/html/html/search/related_2.js +2 -2
  374. package/SVF-doxygen/html/html/search/related_3.js +2 -2
  375. package/SVF-doxygen/html/html/search/related_4.js +2 -2
  376. package/SVF-doxygen/html/html/search/related_5.js +1 -1
  377. package/SVF-doxygen/html/html/search/related_6.js +2 -2
  378. package/SVF-doxygen/html/html/search/related_7.js +4 -4
  379. package/SVF-doxygen/html/html/search/related_8.js +2 -2
  380. package/SVF-doxygen/html/html/search/related_9.js +4 -4
  381. package/SVF-doxygen/html/html/search/related_a.js +19 -19
  382. package/SVF-doxygen/html/html/search/related_b.js +4 -4
  383. package/SVF-doxygen/html/html/search/related_c.js +1 -1
  384. package/SVF-doxygen/html/html/search/related_d.js +11 -11
  385. package/SVF-doxygen/html/html/search/related_e.js +2 -2
  386. package/SVF-doxygen/html/html/search/related_f.js +2 -2
  387. package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
  388. package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
  389. package/SVF-doxygen/html/html/search/typedefs_10.js +62 -60
  390. package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
  391. package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
  392. package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
  393. package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
  394. package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
  395. package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
  396. package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
  397. package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
  398. package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
  399. package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
  400. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  401. package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
  402. package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
  403. package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
  404. package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
  405. package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
  406. package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
  407. package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
  408. package/SVF-doxygen/html/html/search/variables_0.js +147 -147
  409. package/SVF-doxygen/html/html/search/variables_1.js +75 -75
  410. package/SVF-doxygen/html/html/search/variables_10.js +97 -97
  411. package/SVF-doxygen/html/html/search/variables_11.js +46 -46
  412. package/SVF-doxygen/html/html/search/variables_12.js +92 -92
  413. package/SVF-doxygen/html/html/search/variables_13.js +75 -75
  414. package/SVF-doxygen/html/html/search/variables_14.js +14 -14
  415. package/SVF-doxygen/html/html/search/variables_15.js +48 -48
  416. package/SVF-doxygen/html/html/search/variables_16.js +9 -9
  417. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  418. package/SVF-doxygen/html/html/search/variables_18.js +2 -2
  419. package/SVF-doxygen/html/html/search/variables_2.js +34 -34
  420. package/SVF-doxygen/html/html/search/variables_3.js +141 -141
  421. package/SVF-doxygen/html/html/search/variables_4.js +55 -55
  422. package/SVF-doxygen/html/html/search/variables_5.js +38 -38
  423. package/SVF-doxygen/html/html/search/variables_6.js +66 -66
  424. package/SVF-doxygen/html/html/search/variables_7.js +33 -33
  425. package/SVF-doxygen/html/html/search/variables_8.js +7 -7
  426. package/SVF-doxygen/html/html/search/variables_9.js +77 -77
  427. package/SVF-doxygen/html/html/search/variables_a.js +4 -4
  428. package/SVF-doxygen/html/html/search/variables_b.js +10 -10
  429. package/SVF-doxygen/html/html/search/variables_c.js +45 -45
  430. package/SVF-doxygen/html/html/search/variables_d.js +56 -56
  431. package/SVF-doxygen/html/html/search/variables_e.js +123 -123
  432. package/SVF-doxygen/html/html/search/variables_f.js +30 -30
  433. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  434. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__iterable.html +1 -1
  435. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__iterable_3_01T_00_01void__t_3_01decltype_07std_1_1begin_07std_1_1dec794949348c8e1e00603fd8633b6dd1f3.html +1 -1
  436. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map.html +1 -1
  437. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map_3_01std_1_1map_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  438. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map_3_01std_1_1unordered__map_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  439. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container.html +1 -1
  440. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1deque_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  441. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1list_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  442. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1vector_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  443. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set.html +1 -1
  444. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set_3_01std_1_1set_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  445. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set_3_01std_1_1unordered__set_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  446. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1make__void.html +2 -2
  447. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  448. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  449. package/package.json +1 -1
  450. package/svf/include/Util/SVFUtil.h +0 -34
  451. package/svf/lib/Util/ExtAPI.cpp +0 -6
  452. package/svf-llvm/include/SVF-LLVM/BasicTypes.h +4 -0
  453. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +51 -2
  454. package/svf-llvm/lib/LLVMUtil.cpp +37 -2
  455. package/svf-llvm/lib/SVFIRBuilder.cpp +10 -9
  456. package/svf-llvm/lib/SVFIRExtAPI.cpp +1 -1
  457. package/svf-llvm/lib/SymbolTableBuilder.cpp +0 -9
  458. package/svf-llvm/lib/extapi.c +210 -295
@@ -927,368 +927,371 @@ $(function() {
927
927
  <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = getValueNode(inst.getCondition());</div>
928
928
  <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; </div>
929
929
  <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <a class="code" href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">BranchStmt::SuccAndCondPairVec</a> successors;</div>
930
- <div class="line"><a name="l00949"></a><span class="lineno"> 949</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>
931
- <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; {</div>
932
- <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succInst = &amp;inst.getSuccessor(i)-&gt;front();</div>
933
- <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* condVal = inst.findCaseDest(inst.getSuccessor(i));</div>
934
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val = -1;</div>
935
- <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">if</span> (condVal &amp;&amp; condVal-&gt;getBitWidth() &lt;= 64)</div>
936
- <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; val = condVal-&gt;getSExtValue();</div>
937
- <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfSuccInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(succInst);</div>
938
- <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = pag-&gt;getICFG()-&gt;getICFGNode(svfSuccInst);</div>
939
- <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; successors.push_back(std::make_pair(icfgNode,val));</div>
940
- <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div>
941
- <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; addBranchStmt(brinst, cond,successors);</div>
942
- <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;}</div>
943
- <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; </div>
944
- <div class="line"><a name="l00969"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#ac26e0714728df0beca278eb405596775"> 969</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::visitVAArgInst(<a class="code" href="namespaceSVF.html#abcafc32093ff5ee038b5fcf6e4076ed4">VAArgInst</a> &amp;inst)</div>
945
- <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160;{</div>
946
- <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = getValueNode(&amp;inst);</div>
947
- <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getPointerOperand();</div>
948
- <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = getValueNode(opnd);</div>
949
- <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; addCopyEdge(src,dst);</div>
950
- <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;}</div>
951
- <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; </div>
952
- <div class="line"><a name="l00981"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a870ea33a335a7036555dd24171cf8f22"> 981</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::visitFreezeInst(<a class="code" href="namespaceSVF.html#a9868a60a9cc7b78965a23b5034100f88">FreezeInst</a> &amp;inst)</div>
953
- <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160;{</div>
954
- <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = getValueNode(&amp;inst);</div>
955
- <div class="line"><a name="l00984"></a><span class="lineno"> 984</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>
956
- <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; {</div>
957
- <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(i);</div>
958
- <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = getValueNode(opnd);</div>
959
- <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; addCopyEdge(src,dst);</div>
960
- <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; }</div>
961
- <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;}</div>
962
- <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; </div>
930
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; </div>
931
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="comment">// get case successor basic block and related case value</span></div>
932
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <a class="code" href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SuccBBAndCondValPairVec</a> succBB2CondValPairVec;</div>
933
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">LLVMUtil::getSuccBBandCondValPairVec</a>(inst, succBB2CondValPairVec);</div>
934
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;succBB2CaseValue : succBB2CondValPairVec)</div>
935
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; {</div>
936
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</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>
937
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succBB = succBB2CaseValue.first;</div>
938
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succInst = &amp;succBB-&gt;front();</div>
939
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfSuccInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(succInst);</div>
940
+ <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = pag-&gt;getICFG()-&gt;getICFGNode(svfSuccInst);</div>
941
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; successors.push_back(std::make_pair(icfgNode, val));</div>
942
+ <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; }</div>
943
+ <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; addBranchStmt(brinst, cond, successors);</div>
944
+ <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;}</div>
945
+ <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; </div>
946
+ <div class="line"><a name="l00970"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#ac26e0714728df0beca278eb405596775"> 970</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::visitVAArgInst(<a class="code" href="namespaceSVF.html#abcafc32093ff5ee038b5fcf6e4076ed4">VAArgInst</a> &amp;inst)</div>
947
+ <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160;{</div>
948
+ <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = getValueNode(&amp;inst);</div>
949
+ <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getPointerOperand();</div>
950
+ <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = getValueNode(opnd);</div>
951
+ <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; addCopyEdge(src,dst);</div>
952
+ <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;}</div>
953
+ <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; </div>
954
+ <div class="line"><a name="l00982"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a870ea33a335a7036555dd24171cf8f22"> 982</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::visitFreezeInst(<a class="code" href="namespaceSVF.html#a9868a60a9cc7b78965a23b5034100f88">FreezeInst</a> &amp;inst)</div>
955
+ <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;{</div>
956
+ <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = getValueNode(&amp;inst);</div>
957
+ <div class="line"><a name="l00985"></a><span class="lineno"> 985</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>
958
+ <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; {</div>
959
+ <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(i);</div>
960
+ <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = getValueNode(opnd);</div>
961
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; addCopyEdge(src,dst);</div>
962
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; }</div>
963
+ <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;}</div>
963
964
  <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; </div>
964
- <div class="line"><a name="l00996"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515"> 996</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::handleDirectCall(<a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
965
- <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160;{</div>
966
- <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; </div>
967
- <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
968
- <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(cs);</div>
969
- <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
970
- <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div>
971
- <div class="line"><a name="l01003"></a><span class="lineno"> 1003</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>
972
- <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; </div>
973
- <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="comment">//Only handle the ret.val. if it&#39;s used as a ptr.</span></div>
974
- <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstrec = getValueNode(cs);</div>
975
- <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="comment">//Does it actually return a ptr?</span></div>
976
- <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <span class="keywordflow">if</span> (!cs-&gt;getType()-&gt;isVoidTy())</div>
977
- <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; {</div>
978
- <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcret = getReturnNode(svffun);</div>
979
- <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callICFGNode = pag-&gt;getICFG()-&gt;getCallICFGNode(svfcall);</div>
980
- <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitICFGNode = pag-&gt;getICFG()-&gt;getFunExitICFGNode(svffun);</div>
981
- <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; addRetEdge(srcret, dstrec,callICFGNode, exitICFGNode);</div>
982
- <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; }</div>
983
- <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="comment">//Iterators for the actual and formal parameters</span></div>
984
- <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> itA = 0, ieA = cs-&gt;arg_size();</div>
985
- <div class="line"><a name="l01017"></a><span class="lineno"> 1017</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>
986
- <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="comment">//Go through the fixed parameters.</span></div>
987
- <div class="line"><a name="l01019"></a><span class="lineno"> 1019</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>
988
- <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordflow">for</span> (; itF != ieF; ++itA, ++itF)</div>
989
- <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; {</div>
990
- <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="comment">//Some programs (e.g. Linux kernel) leave unneeded parameters empty.</span></div>
991
- <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="keywordflow">if</span> (itA == ieA)</div>
992
- <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; {</div>
993
- <div class="line"><a name="l01025"></a><span class="lineno"> 1025</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>
994
- <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">break</span>;</div>
995
- <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; }</div>
996
- <div class="line"><a name="l01028"></a><span class="lineno"> 1028</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>
997
- <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; </div>
998
- <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;process actual parm &quot;</span> &lt;&lt; LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFValue(AA)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
999
- <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; </div>
1000
- <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstFA = getValueNode(FA);</div>
1001
- <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcAA = getValueNode(AA);</div>
1002
- <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = pag-&gt;getICFG()-&gt;getCallICFGNode(svfcall);</div>
1003
- <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = pag-&gt;getICFG()-&gt;getFunEntryICFGNode(svffun);</div>
1004
- <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; addCallEdge(srcAA, dstFA, icfgNode, entry);</div>
1005
- <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; }</div>
1006
- <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="comment">//Any remaining actual args must be varargs.</span></div>
1007
- <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isVarArg())</div>
1008
- <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; {</div>
1009
- <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vaF = getVarargNode(svffun);</div>
1010
- <div class="line"><a name="l01042"></a><span class="lineno"> 1042</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>
1011
- <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">for</span> (; itA != ieA; ++itA)</div>
1012
- <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; {</div>
1013
- <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* AA = cs-&gt;getArgOperand(itA);</div>
1014
- <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnAA = getValueNode(AA);</div>
1015
- <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = pag-&gt;getICFG()-&gt;getCallICFGNode(svfcall);</div>
1016
- <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = pag-&gt;getICFG()-&gt;getFunEntryICFGNode(svffun);</div>
1017
- <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; addCallEdge(vnAA,vaF, icfgNode,entry);</div>
1018
- <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; }</div>
1019
- <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; }</div>
1020
- <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keywordflow">if</span>(itA != ieA)</div>
1021
- <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; {</div>
1022
- <div class="line"><a name="l01056"></a><span class="lineno"> 1056</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>
1023
- <div class="line"><a name="l01057"></a><span class="lineno"> 1057</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>
1024
- <div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; </div>
1025
- <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; }</div>
1026
- <div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;}</div>
1027
- <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; </div>
1028
- <div class="line"><a name="l01062"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a892ab8cad098e9e9d8425e7f05e35c59"> 1062</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* SVFIRBuilder::getBaseValueForExtArg(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V)</div>
1029
- <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;{</div>
1030
- <div class="line"><a name="l01064"></a><span class="lineno"> 1064</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>
1031
- <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; assert(value &amp;&amp; <span class="stringliteral">&quot;null ptr?&quot;</span>);</div>
1032
- <div class="line"><a name="l01066"></a><span class="lineno"> 1066</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>
1033
- <div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; {</div>
1034
- <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalidx = 0;</div>
1035
- <div class="line"><a name="l01069"></a><span class="lineno"> 1069</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>
1036
- <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; {</div>
1037
- <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#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* op = SVFUtil::dyn_cast&lt;ConstantInt&gt;(gi.getOperand()))</div>
1038
- <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; totalidx += op-&gt;getSExtValue();</div>
1039
- <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; }</div>
1040
- <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">if</span>(totalidx == 0 &amp;&amp; !SVFUtil::isa&lt;StructType&gt;(value-&gt;getType()))</div>
1041
- <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; value = gep-&gt;getPointerOperand();</div>
1042
- <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; }</div>
1043
- <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; </div>
1044
- <div class="line"><a name="l01078"></a><span class="lineno"> 1078</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>
1045
- <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="comment">// further steps are necessary to find the correct base value</span></div>
1046
- <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="comment">//</span></div>
1047
- <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="comment">// (1)</span></div>
1048
- <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="comment">// %call = malloc 80</span></div>
1049
- <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="comment">// %0 = bitcast i8* %call to %struct.A*</span></div>
1050
- <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="comment">// %1 = bitcast %struct.B* %param to i8*</span></div>
1051
- <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="comment">// call void memcpy(%call, %1, 80)</span></div>
1052
- <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="comment">//</span></div>
1053
- <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="comment">// (2)</span></div>
1054
- <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="comment">// %0 = bitcast %struct.A* %param to i8*</span></div>
1055
- <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="comment">// %2 = bitcast %struct.B** %arrayidx to i8**</span></div>
1056
- <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="comment">// %3 = load i8*, i8** %2</span></div>
1057
- <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="comment">// call void @memcpy(%0, %3, 80)</span></div>
1058
- <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &amp;cxt = LLVMModuleSet::getLLVMModuleSet()-&gt;getContext();</div>
1059
- <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">if</span> (value-&gt;getType() == PointerType::getInt8PtrTy(cxt))</div>
1060
- <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; {</div>
1061
- <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="comment">// (1)</span></div>
1062
- <div class="line"><a name="l01096"></a><span class="lineno"> 1096</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>
1063
- <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; {</div>
1064
- <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(cb);</div>
1065
- <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfInst))</div>
1066
- <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; {</div>
1067
- <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#a90b263fd2f541eca78135078114cabda">Value</a>* bitCast = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">getUniqueUseViaCastInst</a>(cb))</div>
1068
- <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">return</span> bitCast;</div>
1069
- <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; }</div>
1070
- <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; }</div>
1071
- <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="comment">// (2)</span></div>
1072
- <div class="line"><a name="l01106"></a><span class="lineno"> 1106</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>
1073
- <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; {</div>
1074
- <div class="line"><a name="l01108"></a><span class="lineno"> 1108</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>
1075
- <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="keywordflow">return</span> bitCast-&gt;getOperand(0);</div>
1076
- <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; }</div>
1077
- <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; }</div>
1078
- <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; </div>
1079
- <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">return</span> value;</div>
1080
- <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;}</div>
1081
- <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; </div>
1082
- <div class="line"><a name="l01119"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a5ae68d4465feb54fcb8fd0cf20b7a71a"> 1119</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::handleIndCall(<a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
1083
- <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;{</div>
1084
- <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(cs);</div>
1085
- <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfcalledval = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFValue(cs-&gt;getCalledOperand());</div>
1086
- <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; </div>
1087
- <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = pag-&gt;getICFG()-&gt;getCallICFGNode(svfcall);</div>
1088
- <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; pag-&gt;addIndirectCallsites(cbn,pag-&gt;getValueNode(svfcalledval));</div>
1089
- <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;}</div>
1090
- <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; </div>
1091
- <div class="line"><a name="l01128"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a22bd51c6fe770d179867342164ec2767"> 1128</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::updateCallGraph(<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* callgraph)</div>
1092
- <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;{</div>
1093
- <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; PTACallGraph::CallEdgeMap::const_iterator iter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().begin();</div>
1094
- <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; PTACallGraph::CallEdgeMap::const_iterator eiter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().end();</div>
1095
- <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">for</span> (; iter != eiter; iter++)</div>
1096
- <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; {</div>
1097
- <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlock = iter-&gt;first;</div>
1098
- <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::cast&lt;CallBase&gt;(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()));</div>
1099
- <div class="line"><a name="l01136"></a><span class="lineno"> 1136</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>
1100
- <div class="line"><a name="l01137"></a><span class="lineno"> 1137</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>
1101
- <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div>
1102
- <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; {</div>
1103
- <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = SVFUtil::cast&lt;Function&gt;(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(*func_iter));</div>
1104
- <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; </div>
1105
- <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(*func_iter))</div>
1106
- <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; {</div>
1107
- <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; setCurrentLocation(callee, callee-&gt;empty() ? <span class="keyword">nullptr</span> : &amp;callee-&gt;getEntryBlock());</div>
1108
- <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(callee);</div>
1109
- <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; handleExtCall(callbase, svfcallee);</div>
1110
- <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; }</div>
1111
- <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">else</span></div>
1112
- <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; {</div>
1113
- <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; setCurrentLocation(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>
1114
- <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; handleDirectCall(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>*<span class="keyword">&gt;</span>(callbase), callee);</div>
1115
- <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; }</div>
1116
- <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; }</div>
1117
- <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; }</div>
1118
- <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; </div>
1119
- <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <span class="comment">// dump SVFIR</span></div>
1120
- <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">if</span> (Options::PAGDotGraph())</div>
1121
- <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; pag-&gt;dump(<span class="stringliteral">&quot;svfir_final&quot;</span>);</div>
1122
- <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;}</div>
1123
- <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; </div>
1124
- <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="comment">/*</span></div>
1125
- <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;<span class="comment"> * TODO: more sanity checks might be needed here</span></div>
1126
- <div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;<span class="comment"> */</span></div>
1127
- <div class="line"><a name="l01164"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60"> 1164</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::sanityCheck()</div>
1128
- <div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;{</div>
1129
- <div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> nIter = pag-&gt;begin(); nIter != pag-&gt;end(); ++nIter)</div>
1130
- <div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; {</div>
1131
- <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; (void) pag-&gt;getGNode(nIter-&gt;first);</div>
1132
- <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="comment">//TODO::</span></div>
1133
- <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="comment">// (1) every source(root) node of a pag tree should be object node</span></div>
1134
- <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="comment">// if a node has no incoming edge, but has outgoing edges</span></div>
1135
- <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="comment">// then it has to be an object node.</span></div>
1136
- <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="comment">// (2) make sure every variable should be initialized</span></div>
1137
- <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="comment">// otherwise it causes the a null pointer, the aliasing relation may not be captured</span></div>
1138
- <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="comment">// when loading a pointer value should make sure</span></div>
1139
- <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="comment">// some value has been store into this pointer before</span></div>
1140
- <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="comment">// q = load p, some value should stored into p first like store w p;</span></div>
1141
- <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="comment">// (3) make sure PAGNode should not have a const expr value (pointer should have unique def)</span></div>
1142
- <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="comment">// (4) look closely into addComplexConsForExt, make sure program locations(e.g.,inst bb)</span></div>
1143
- <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="comment">// are set correctly for dummy gepval node</span></div>
1144
- <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="comment">// (5) reduce unnecessary copy edge (const casts) and ensure correctness.</span></div>
1145
- <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; }</div>
1146
- <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;}</div>
1147
- <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; </div>
965
+ <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; </div>
966
+ <div class="line"><a name="l00997"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515"> 997</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::handleDirectCall(<a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
967
+ <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;{</div>
968
+ <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; </div>
969
+ <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
970
+ <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(cs);</div>
971
+ <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
972
+ <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div>
973
+ <div class="line"><a name="l01004"></a><span class="lineno"> 1004</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>
974
+ <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; </div>
975
+ <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="comment">//Only handle the ret.val. if it&#39;s used as a ptr.</span></div>
976
+ <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstrec = getValueNode(cs);</div>
977
+ <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <span class="comment">//Does it actually return a ptr?</span></div>
978
+ <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">if</span> (!cs-&gt;getType()-&gt;isVoidTy())</div>
979
+ <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; {</div>
980
+ <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcret = getReturnNode(svffun);</div>
981
+ <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callICFGNode = pag-&gt;getICFG()-&gt;getCallICFGNode(svfcall);</div>
982
+ <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitICFGNode = pag-&gt;getICFG()-&gt;getFunExitICFGNode(svffun);</div>
983
+ <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; addRetEdge(srcret, dstrec,callICFGNode, exitICFGNode);</div>
984
+ <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; }</div>
985
+ <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="comment">//Iterators for the actual and formal parameters</span></div>
986
+ <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> itA = 0, ieA = cs-&gt;arg_size();</div>
987
+ <div class="line"><a name="l01018"></a><span class="lineno"> 1018</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>
988
+ <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="comment">//Go through the fixed parameters.</span></div>
989
+ <div class="line"><a name="l01020"></a><span class="lineno"> 1020</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>
990
+ <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keywordflow">for</span> (; itF != ieF; ++itA, ++itF)</div>
991
+ <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; {</div>
992
+ <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="comment">//Some programs (e.g. Linux kernel) leave unneeded parameters empty.</span></div>
993
+ <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <span class="keywordflow">if</span> (itA == ieA)</div>
994
+ <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; {</div>
995
+ <div class="line"><a name="l01026"></a><span class="lineno"> 1026</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>
996
+ <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="keywordflow">break</span>;</div>
997
+ <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; }</div>
998
+ <div class="line"><a name="l01029"></a><span class="lineno"> 1029</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>
999
+ <div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; </div>
1000
+ <div class="line"><a name="l01031"></a><span class="lineno"> 1031</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; LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFValue(AA)-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
1001
+ <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; </div>
1002
+ <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstFA = getValueNode(FA);</div>
1003
+ <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcAA = getValueNode(AA);</div>
1004
+ <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = pag-&gt;getICFG()-&gt;getCallICFGNode(svfcall);</div>
1005
+ <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = pag-&gt;getICFG()-&gt;getFunEntryICFGNode(svffun);</div>
1006
+ <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; addCallEdge(srcAA, dstFA, icfgNode, entry);</div>
1007
+ <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; }</div>
1008
+ <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="comment">//Any remaining actual args must be varargs.</span></div>
1009
+ <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isVarArg())</div>
1010
+ <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; {</div>
1011
+ <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vaF = getVarargNode(svffun);</div>
1012
+ <div class="line"><a name="l01043"></a><span class="lineno"> 1043</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>
1013
+ <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordflow">for</span> (; itA != ieA; ++itA)</div>
1014
+ <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; {</div>
1015
+ <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* AA = cs-&gt;getArgOperand(itA);</div>
1016
+ <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnAA = getValueNode(AA);</div>
1017
+ <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = pag-&gt;getICFG()-&gt;getCallICFGNode(svfcall);</div>
1018
+ <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = pag-&gt;getICFG()-&gt;getFunEntryICFGNode(svffun);</div>
1019
+ <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; addCallEdge(vnAA,vaF, icfgNode,entry);</div>
1020
+ <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; }</div>
1021
+ <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; }</div>
1022
+ <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">if</span>(itA != ieA)</div>
1023
+ <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; {</div>
1024
+ <div class="line"><a name="l01057"></a><span class="lineno"> 1057</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>
1025
+ <div class="line"><a name="l01058"></a><span class="lineno"> 1058</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>
1026
+ <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; </div>
1027
+ <div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; }</div>
1028
+ <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;}</div>
1029
+ <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; </div>
1030
+ <div class="line"><a name="l01063"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a892ab8cad098e9e9d8425e7f05e35c59"> 1063</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* SVFIRBuilder::getBaseValueForExtArg(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V)</div>
1031
+ <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;{</div>
1032
+ <div class="line"><a name="l01065"></a><span class="lineno"> 1065</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>
1033
+ <div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; assert(value &amp;&amp; <span class="stringliteral">&quot;null ptr?&quot;</span>);</div>
1034
+ <div class="line"><a name="l01067"></a><span class="lineno"> 1067</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>
1035
+ <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; {</div>
1036
+ <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalidx = 0;</div>
1037
+ <div class="line"><a name="l01070"></a><span class="lineno"> 1070</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>
1038
+ <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; {</div>
1039
+ <div class="line"><a name="l01072"></a><span class="lineno"> 1072</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>
1040
+ <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; totalidx += op-&gt;getSExtValue();</div>
1041
+ <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; }</div>
1042
+ <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">if</span>(totalidx == 0 &amp;&amp; !SVFUtil::isa&lt;StructType&gt;(value-&gt;getType()))</div>
1043
+ <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; value = gep-&gt;getPointerOperand();</div>
1044
+ <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; }</div>
1045
+ <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; </div>
1046
+ <div class="line"><a name="l01079"></a><span class="lineno"> 1079</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>
1047
+ <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="comment">// further steps are necessary to find the correct base value</span></div>
1048
+ <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="comment">//</span></div>
1049
+ <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="comment">// (1)</span></div>
1050
+ <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="comment">// %call = malloc 80</span></div>
1051
+ <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="comment">// %0 = bitcast i8* %call to %struct.A*</span></div>
1052
+ <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="comment">// %1 = bitcast %struct.B* %param to i8*</span></div>
1053
+ <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="comment">// call void memcpy(%call, %1, 80)</span></div>
1054
+ <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="comment">//</span></div>
1055
+ <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="comment">// (2)</span></div>
1056
+ <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="comment">// %0 = bitcast %struct.A* %param to i8*</span></div>
1057
+ <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="comment">// %2 = bitcast %struct.B** %arrayidx to i8**</span></div>
1058
+ <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="comment">// %3 = load i8*, i8** %2</span></div>
1059
+ <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="comment">// call void @memcpy(%0, %3, 80)</span></div>
1060
+ <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &amp;cxt = LLVMModuleSet::getLLVMModuleSet()-&gt;getContext();</div>
1061
+ <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">if</span> (value-&gt;getType() == PointerType::getInt8PtrTy(cxt))</div>
1062
+ <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; {</div>
1063
+ <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="comment">// (1)</span></div>
1064
+ <div class="line"><a name="l01097"></a><span class="lineno"> 1097</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>
1065
+ <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; {</div>
1066
+ <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(cb);</div>
1067
+ <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfInst))</div>
1068
+ <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; {</div>
1069
+ <div class="line"><a name="l01102"></a><span class="lineno"> 1102</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#a837d19c740902c419206287bdb21273b">getUniqueUseViaCastInst</a>(cb))</div>
1070
+ <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keywordflow">return</span> bitCast;</div>
1071
+ <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; }</div>
1072
+ <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; }</div>
1073
+ <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="comment">// (2)</span></div>
1074
+ <div class="line"><a name="l01107"></a><span class="lineno"> 1107</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>
1075
+ <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; {</div>
1076
+ <div class="line"><a name="l01109"></a><span class="lineno"> 1109</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>
1077
+ <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordflow">return</span> bitCast-&gt;getOperand(0);</div>
1078
+ <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; }</div>
1079
+ <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; }</div>
1080
+ <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; </div>
1081
+ <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">return</span> value;</div>
1082
+ <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;}</div>
1083
+ <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; </div>
1084
+ <div class="line"><a name="l01120"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a5ae68d4465feb54fcb8fd0cf20b7a71a"> 1120</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::handleIndCall(<a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
1085
+ <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;{</div>
1086
+ <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(cs);</div>
1087
+ <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfcalledval = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFValue(cs-&gt;getCalledOperand());</div>
1088
+ <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; </div>
1089
+ <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = pag-&gt;getICFG()-&gt;getCallICFGNode(svfcall);</div>
1090
+ <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; pag-&gt;addIndirectCallsites(cbn,pag-&gt;getValueNode(svfcalledval));</div>
1091
+ <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;}</div>
1092
+ <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; </div>
1093
+ <div class="line"><a name="l01129"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a22bd51c6fe770d179867342164ec2767"> 1129</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::updateCallGraph(<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* callgraph)</div>
1094
+ <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;{</div>
1095
+ <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; PTACallGraph::CallEdgeMap::const_iterator iter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().begin();</div>
1096
+ <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; PTACallGraph::CallEdgeMap::const_iterator eiter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().end();</div>
1097
+ <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keywordflow">for</span> (; iter != eiter; iter++)</div>
1098
+ <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; {</div>
1099
+ <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlock = iter-&gt;first;</div>
1100
+ <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::cast&lt;CallBase&gt;(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()));</div>
1101
+ <div class="line"><a name="l01137"></a><span class="lineno"> 1137</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>
1102
+ <div class="line"><a name="l01138"></a><span class="lineno"> 1138</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>
1103
+ <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div>
1104
+ <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; {</div>
1105
+ <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = SVFUtil::cast&lt;Function&gt;(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(*func_iter));</div>
1106
+ <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; </div>
1107
+ <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(*func_iter))</div>
1108
+ <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; {</div>
1109
+ <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; setCurrentLocation(callee, callee-&gt;empty() ? <span class="keyword">nullptr</span> : &amp;callee-&gt;getEntryBlock());</div>
1110
+ <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(callee);</div>
1111
+ <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; handleExtCall(callbase, svfcallee);</div>
1112
+ <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; }</div>
1113
+ <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keywordflow">else</span></div>
1114
+ <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; {</div>
1115
+ <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; setCurrentLocation(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>
1116
+ <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; handleDirectCall(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>*<span class="keyword">&gt;</span>(callbase), callee);</div>
1117
+ <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; }</div>
1118
+ <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; }</div>
1119
+ <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; }</div>
1120
+ <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; </div>
1121
+ <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="comment">// dump SVFIR</span></div>
1122
+ <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordflow">if</span> (Options::PAGDotGraph())</div>
1123
+ <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; pag-&gt;dump(<span class="stringliteral">&quot;svfir_final&quot;</span>);</div>
1124
+ <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;}</div>
1125
+ <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; </div>
1126
+ <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;<span class="comment">/*</span></div>
1127
+ <div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;<span class="comment"> * TODO: more sanity checks might be needed here</span></div>
1128
+ <div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;<span class="comment"> */</span></div>
1129
+ <div class="line"><a name="l01165"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60"> 1165</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::sanityCheck()</div>
1130
+ <div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;{</div>
1131
+ <div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> nIter = pag-&gt;begin(); nIter != pag-&gt;end(); ++nIter)</div>
1132
+ <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; {</div>
1133
+ <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; (void) pag-&gt;getGNode(nIter-&gt;first);</div>
1134
+ <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="comment">//TODO::</span></div>
1135
+ <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="comment">// (1) every source(root) node of a pag tree should be object node</span></div>
1136
+ <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="comment">// if a node has no incoming edge, but has outgoing edges</span></div>
1137
+ <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="comment">// then it has to be an object node.</span></div>
1138
+ <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="comment">// (2) make sure every variable should be initialized</span></div>
1139
+ <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="comment">// otherwise it causes the a null pointer, the aliasing relation may not be captured</span></div>
1140
+ <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="comment">// when loading a pointer value should make sure</span></div>
1141
+ <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="comment">// some value has been store into this pointer before</span></div>
1142
+ <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="comment">// q = load p, some value should stored into p first like store w p;</span></div>
1143
+ <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="comment">// (3) make sure PAGNode should not have a const expr value (pointer should have unique def)</span></div>
1144
+ <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="comment">// (4) look closely into addComplexConsForExt, make sure program locations(e.g.,inst bb)</span></div>
1145
+ <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="comment">// are set correctly for dummy gepval node</span></div>
1146
+ <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="comment">// (5) reduce unnecessary copy edge (const casts) and ensure correctness.</span></div>
1147
+ <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; }</div>
1148
+ <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;}</div>
1148
1149
  <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; </div>
1149
- <div class="line"><a name="l01190"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#ae4516ec05eabece1bc8e0cad1ec8cf1c"> 1190</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> SVFIRBuilder::getGepValVar(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val, <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; ap, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elementType)</div>
1150
- <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;{</div>
1151
- <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = pag-&gt;getBaseValVar(getValueNode(val));</div>
1152
- <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepval = pag-&gt;getGepValVar(curVal, base, ap);</div>
1153
- <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keywordflow">if</span> (gepval==UINT_MAX)</div>
1154
- <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; {</div>
1155
- <div class="line"><a name="l01196"></a><span class="lineno"> 1196</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>
1156
- <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="comment">/*</span></div>
1157
- <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;<span class="comment"> * getGepValVar can only be called from two places:</span></div>
1158
- <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;<span class="comment"> * 1. SVFIRBuilder::addComplexConsForExt to handle external calls</span></div>
1159
- <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;<span class="comment"> * 2. SVFIRBuilder::getGlobalVarField to initialize global variable</span></div>
1160
- <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;<span class="comment"> * so curVal can only be</span></div>
1161
- <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;<span class="comment"> * 1. Instruction</span></div>
1162
- <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;<span class="comment"> * 2. GlobalVariable</span></div>
1163
- <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;<span class="comment"> */</span></div>
1164
- <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; assert((SVFUtil::isa&lt;SVFInstruction, SVFGlobalValue&gt;(curVal)) &amp;&amp; <span class="stringliteral">&quot;curVal not an instruction or a globalvariable?&quot;</span>);</div>
1165
- <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; </div>
1166
- <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="comment">// We assume every GepValNode and its GepEdge to the baseNode are unique across the whole program</span></div>
1167
- <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <span class="comment">// We preserve the current BB information to restore it after creating the gepNode</span></div>
1168
- <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = getCurrentValue();</div>
1169
- <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = getCurrentBB();</div>
1170
- <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; setCurrentLocation(curVal, <span class="keyword">nullptr</span>);</div>
1171
- <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* llvmmodule = LLVMModuleSet::getLLVMModuleSet();</div>
1172
- <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepNode= pag-&gt;addGepValNode(curVal, llvmmodule-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(val),ap, NodeIDAllocator::get()-&gt;allocateValueId(),elementType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a3672b4797c400aac90c6d36ce29e0e57">getPointerTo</a>());</div>
1173
- <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; addGepEdge(base, gepNode, ap, <span class="keyword">true</span>);</div>
1174
- <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; setCurrentLocation(cval, cbb);</div>
1175
- <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keywordflow">return</span> gepNode;</div>
1176
- <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; }</div>
1177
- <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keywordflow">else</span></div>
1178
- <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">return</span> gepval;</div>
1179
- <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;}</div>
1180
- <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; </div>
1150
+ <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; </div>
1151
+ <div class="line"><a name="l01191"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#ae4516ec05eabece1bc8e0cad1ec8cf1c"> 1191</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> SVFIRBuilder::getGepValVar(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val, <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; ap, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elementType)</div>
1152
+ <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;{</div>
1153
+ <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = pag-&gt;getBaseValVar(getValueNode(val));</div>
1154
+ <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepval = pag-&gt;getGepValVar(curVal, base, ap);</div>
1155
+ <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="keywordflow">if</span> (gepval==UINT_MAX)</div>
1156
+ <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; {</div>
1157
+ <div class="line"><a name="l01197"></a><span class="lineno"> 1197</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>
1158
+ <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="comment">/*</span></div>
1159
+ <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;<span class="comment"> * getGepValVar can only be called from two places:</span></div>
1160
+ <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;<span class="comment"> * 1. SVFIRBuilder::addComplexConsForExt to handle external calls</span></div>
1161
+ <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;<span class="comment"> * 2. SVFIRBuilder::getGlobalVarField to initialize global variable</span></div>
1162
+ <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;<span class="comment"> * so curVal can only be</span></div>
1163
+ <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;<span class="comment"> * 1. Instruction</span></div>
1164
+ <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;<span class="comment"> * 2. GlobalVariable</span></div>
1165
+ <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;<span class="comment"> */</span></div>
1166
+ <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; assert((SVFUtil::isa&lt;SVFInstruction, SVFGlobalValue&gt;(curVal)) &amp;&amp; <span class="stringliteral">&quot;curVal not an instruction or a globalvariable?&quot;</span>);</div>
1167
+ <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; </div>
1168
+ <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <span class="comment">// We assume every GepValNode and its GepEdge to the baseNode are unique across the whole program</span></div>
1169
+ <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; <span class="comment">// We preserve the current BB information to restore it after creating the gepNode</span></div>
1170
+ <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = getCurrentValue();</div>
1171
+ <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = getCurrentBB();</div>
1172
+ <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; setCurrentLocation(curVal, <span class="keyword">nullptr</span>);</div>
1173
+ <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* llvmmodule = LLVMModuleSet::getLLVMModuleSet();</div>
1174
+ <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepNode= pag-&gt;addGepValNode(curVal, llvmmodule-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(val),ap, NodeIDAllocator::get()-&gt;allocateValueId(),elementType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a3672b4797c400aac90c6d36ce29e0e57">getPointerTo</a>());</div>
1175
+ <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; addGepEdge(base, gepNode, ap, <span class="keyword">true</span>);</div>
1176
+ <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; setCurrentLocation(cval, cbb);</div>
1177
+ <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <span class="keywordflow">return</span> gepNode;</div>
1178
+ <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; }</div>
1179
+ <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">else</span></div>
1180
+ <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keywordflow">return</span> gepval;</div>
1181
+ <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;}</div>
1181
1182
  <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; </div>
1182
- <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;<span class="comment">/*</span></div>
1183
- <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;<span class="comment"> * curVal &lt;--------&gt; PAGEdge</span></div>
1184
- <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;<span class="comment"> * Instruction Any Edge</span></div>
1185
- <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;<span class="comment"> * Argument CopyEdge (SVFIR::addFormalParamBlackHoleAddrEdge)</span></div>
1186
- <div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;<span class="comment"> * ConstantExpr CopyEdge (Int2PtrConstantExpr CastConstantExpr SVFIRBuilder::processCE)</span></div>
1187
- <div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;<span class="comment"> * GepEdge (GepConstantExpr SVFIRBuilder::processCE)</span></div>
1188
- <div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;<span class="comment"> * ConstantPointerNull CopyEdge (3--&gt;2 NullPtr--&gt;BlkPtr SVFIR::addNullPtrNode)</span></div>
1189
- <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;<span class="comment"> * AddrEdge (0--&gt;2 BlkObj--&gt;BlkPtr SVFIR::addNullPtrNode)</span></div>
1190
- <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;<span class="comment"> * GlobalVariable AddrEdge (SVFIRBuilder::visitGlobal)</span></div>
1191
- <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;<span class="comment"> * GepEdge (SVFIRBuilder::getGlobalVarField)</span></div>
1192
- <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;<span class="comment"> * Function AddrEdge (SVFIRBuilder::visitGlobal)</span></div>
1193
- <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;<span class="comment"> * Constant StoreEdge (SVFIRBuilder::InitialGlobal)</span></div>
1194
- <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;<span class="comment"> */</span></div>
1195
- <div class="line"><a name="l01236"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01"> 1236</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::setCurrentBBAndValueForPAGEdge(<a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge)</div>
1196
- <div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;{</div>
1197
- <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keywordflow">if</span> (SVFModule::pagReadFromTXT())</div>
1198
- <div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keywordflow">return</span>;</div>
1199
- <div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; </div>
1200
- <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; assert(curVal &amp;&amp; <span class="stringliteral">&quot;current Val is nullptr?&quot;</span>);</div>
1201
- <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a0e45ab5b38059371c47d5f2011118a4d">setBB</a>(curBB!=<span class="keyword">nullptr</span> ? curBB : <span class="keyword">nullptr</span>);</div>
1202
- <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a6ae58a22d43361904c7033f5c790da38">setValue</a>(curVal);</div>
1203
- <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="comment">// backmap in valuToEdgeMap</span></div>
1204
- <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; pag-&gt;mapValueToEdge(curVal, edge);</div>
1205
- <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = pag-&gt;getICFG()-&gt;getGlobalICFGNode();</div>
1206
- <div class="line"><a name="l01247"></a><span class="lineno"> 1247</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;(curVal))</div>
1207
- <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; {</div>
1208
- <div class="line"><a name="l01249"></a><span class="lineno"> 1249</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>
1209
- <div class="line"><a name="l01250"></a><span class="lineno"> 1250</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>
1210
- <div class="line"><a name="l01251"></a><span class="lineno"> 1251</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>
1211
- <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; {</div>
1212
- <div class="line"><a name="l01253"></a><span class="lineno"> 1253</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>
1213
- <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; }</div>
1214
- <div class="line"><a name="l01255"></a><span class="lineno"> 1255</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>
1215
- <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; {</div>
1216
- <div class="line"><a name="l01257"></a><span class="lineno"> 1257</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>
1217
- <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; }</div>
1218
- <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; </div>
1219
- <div class="line"><a name="l01261"></a><span class="lineno"> 1261</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>
1220
- <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; assert(curBB &amp;&amp; <span class="stringliteral">&quot;instruction does not have a basic block??&quot;</span>);</div>
1221
- <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; </div>
1222
- <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keywordflow">if</span>(curInst-&gt;isRetInst())</div>
1223
- <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; {</div>
1224
- <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; icfgNode = pag-&gt;getICFG()-&gt;getFunExitICFGNode(curInst-&gt;getFunction());</div>
1225
- <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; }</div>
1226
- <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <span class="keywordflow">else</span></div>
1227
- <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; {</div>
1228
- <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;RetPE&gt;(edge))</div>
1229
- <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; icfgNode = pag-&gt;getICFG()-&gt;getRetICFGNode(curInst);</div>
1230
- <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; <span class="keywordflow">else</span></div>
1231
- <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; icfgNode = pag-&gt;getICFG()-&gt;getICFGNode(curInst);</div>
1232
- <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; }</div>
1233
- <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; }</div>
1234
- <div class="line"><a name="l01277"></a><span class="lineno"> 1277</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;(curVal))</div>
1235
- <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; {</div>
1236
- <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; assert(curBB &amp;&amp; (curBB-&gt;getParent()-&gt;getEntryBlock() == curBB));</div>
1237
- <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; icfgNode = pag-&gt;getICFG()-&gt;getFunEntryICFGNode(arg-&gt;getParent());</div>
1238
- <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; }</div>
1239
- <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFConstant&gt;(curVal) ||</div>
1240
- <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; SVFUtil::isa&lt;SVFFunction&gt;(curVal) ||</div>
1241
- <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; SVFUtil::isa&lt;SVFMetadataAsValue&gt;(curVal))</div>
1242
- <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; {</div>
1243
- <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; <span class="keywordflow">if</span> (!curBB)</div>
1244
- <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; pag-&gt;addGlobalPAGEdge(edge);</div>
1245
- <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordflow">else</span></div>
1246
- <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; {</div>
1247
- <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; icfgNode = pag-&gt;getICFG()-&gt;getICFGNode(curBB-&gt;front());</div>
1248
- <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; }</div>
1249
- <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; }</div>
1250
- <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordflow">else</span></div>
1251
- <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; {</div>
1252
- <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else value can we have?&quot;</span>);</div>
1253
- <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; }</div>
1254
- <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; </div>
1255
- <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; pag-&gt;addToSVFStmtList(icfgNode,edge);</div>
1256
- <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; icfgNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be">addSVFStmt</a>(edge);</div>
1257
- <div class="line"><a name="l01300"></a><span class="lineno"> 1300</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>
1258
- <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; {</div>
1259
- <div class="line"><a name="l01302"></a><span class="lineno"> 1302</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>
1260
- <div class="line"><a name="l01303"></a><span class="lineno"> 1303</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>
1261
- <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = pag-&gt;getICFG()-&gt;hasInterICFGEdge(callNode,entryNode, ICFGEdge::CallCF))</div>
1262
- <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; SVFUtil::cast&lt;CallCFGEdge&gt;(edge)-&gt;addCallPE(callPE);</div>
1263
- <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; }</div>
1264
- <div class="line"><a name="l01307"></a><span class="lineno"> 1307</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>
1265
- <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; {</div>
1266
- <div class="line"><a name="l01309"></a><span class="lineno"> 1309</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>
1267
- <div class="line"><a name="l01310"></a><span class="lineno"> 1310</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>
1268
- <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = pag-&gt;getICFG()-&gt;hasInterICFGEdge(exitNode, retNode, ICFGEdge::RetCF))</div>
1269
- <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; SVFUtil::cast&lt;RetCFGEdge&gt;(edge)-&gt;addRetPE(retPE);</div>
1270
- <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; }</div>
1271
- <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;}</div>
1272
- <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; </div>
1183
+ <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; </div>
1184
+ <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;<span class="comment">/*</span></div>
1185
+ <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;<span class="comment"> * curVal &lt;--------&gt; PAGEdge</span></div>
1186
+ <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;<span class="comment"> * Instruction Any Edge</span></div>
1187
+ <div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;<span class="comment"> * Argument CopyEdge (SVFIR::addFormalParamBlackHoleAddrEdge)</span></div>
1188
+ <div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;<span class="comment"> * ConstantExpr CopyEdge (Int2PtrConstantExpr CastConstantExpr SVFIRBuilder::processCE)</span></div>
1189
+ <div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;<span class="comment"> * GepEdge (GepConstantExpr SVFIRBuilder::processCE)</span></div>
1190
+ <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;<span class="comment"> * ConstantPointerNull CopyEdge (3--&gt;2 NullPtr--&gt;BlkPtr SVFIR::addNullPtrNode)</span></div>
1191
+ <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;<span class="comment"> * AddrEdge (0--&gt;2 BlkObj--&gt;BlkPtr SVFIR::addNullPtrNode)</span></div>
1192
+ <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;<span class="comment"> * GlobalVariable AddrEdge (SVFIRBuilder::visitGlobal)</span></div>
1193
+ <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;<span class="comment"> * GepEdge (SVFIRBuilder::getGlobalVarField)</span></div>
1194
+ <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;<span class="comment"> * Function AddrEdge (SVFIRBuilder::visitGlobal)</span></div>
1195
+ <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;<span class="comment"> * Constant StoreEdge (SVFIRBuilder::InitialGlobal)</span></div>
1196
+ <div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;<span class="comment"> */</span></div>
1197
+ <div class="line"><a name="l01237"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01"> 1237</a></span>&#160;<span class="keywordtype">void</span> SVFIRBuilder::setCurrentBBAndValueForPAGEdge(<a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge)</div>
1198
+ <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;{</div>
1199
+ <div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keywordflow">if</span> (SVFModule::pagReadFromTXT())</div>
1200
+ <div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <span class="keywordflow">return</span>;</div>
1201
+ <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; </div>
1202
+ <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; assert(curVal &amp;&amp; <span class="stringliteral">&quot;current Val is nullptr?&quot;</span>);</div>
1203
+ <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a0e45ab5b38059371c47d5f2011118a4d">setBB</a>(curBB!=<span class="keyword">nullptr</span> ? curBB : <span class="keyword">nullptr</span>);</div>
1204
+ <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a6ae58a22d43361904c7033f5c790da38">setValue</a>(curVal);</div>
1205
+ <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="comment">// backmap in valuToEdgeMap</span></div>
1206
+ <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; pag-&gt;mapValueToEdge(curVal, edge);</div>
1207
+ <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = pag-&gt;getICFG()-&gt;getGlobalICFGNode();</div>
1208
+ <div class="line"><a name="l01248"></a><span class="lineno"> 1248</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;(curVal))</div>
1209
+ <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; {</div>
1210
+ <div class="line"><a name="l01250"></a><span class="lineno"> 1250</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>
1211
+ <div class="line"><a name="l01251"></a><span class="lineno"> 1251</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>
1212
+ <div class="line"><a name="l01252"></a><span class="lineno"> 1252</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>
1213
+ <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; {</div>
1214
+ <div class="line"><a name="l01254"></a><span class="lineno"> 1254</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>
1215
+ <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; }</div>
1216
+ <div class="line"><a name="l01256"></a><span class="lineno"> 1256</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>
1217
+ <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; {</div>
1218
+ <div class="line"><a name="l01258"></a><span class="lineno"> 1258</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>
1219
+ <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; }</div>
1220
+ <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; </div>
1221
+ <div class="line"><a name="l01262"></a><span class="lineno"> 1262</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>
1222
+ <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; assert(curBB &amp;&amp; <span class="stringliteral">&quot;instruction does not have a basic block??&quot;</span>);</div>
1223
+ <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; </div>
1224
+ <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordflow">if</span>(curInst-&gt;isRetInst())</div>
1225
+ <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; {</div>
1226
+ <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; icfgNode = pag-&gt;getICFG()-&gt;getFunExitICFGNode(curInst-&gt;getFunction());</div>
1227
+ <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; }</div>
1228
+ <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; <span class="keywordflow">else</span></div>
1229
+ <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; {</div>
1230
+ <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;RetPE&gt;(edge))</div>
1231
+ <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; icfgNode = pag-&gt;getICFG()-&gt;getRetICFGNode(curInst);</div>
1232
+ <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">else</span></div>
1233
+ <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; icfgNode = pag-&gt;getICFG()-&gt;getICFGNode(curInst);</div>
1234
+ <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; }</div>
1235
+ <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; }</div>
1236
+ <div class="line"><a name="l01278"></a><span class="lineno"> 1278</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;(curVal))</div>
1237
+ <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; {</div>
1238
+ <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; assert(curBB &amp;&amp; (curBB-&gt;getParent()-&gt;getEntryBlock() == curBB));</div>
1239
+ <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; icfgNode = pag-&gt;getICFG()-&gt;getFunEntryICFGNode(arg-&gt;getParent());</div>
1240
+ <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; }</div>
1241
+ <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFConstant&gt;(curVal) ||</div>
1242
+ <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; SVFUtil::isa&lt;SVFFunction&gt;(curVal) ||</div>
1243
+ <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; SVFUtil::isa&lt;SVFMetadataAsValue&gt;(curVal))</div>
1244
+ <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; {</div>
1245
+ <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <span class="keywordflow">if</span> (!curBB)</div>
1246
+ <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; pag-&gt;addGlobalPAGEdge(edge);</div>
1247
+ <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keywordflow">else</span></div>
1248
+ <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; {</div>
1249
+ <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; icfgNode = pag-&gt;getICFG()-&gt;getICFGNode(curBB-&gt;front());</div>
1250
+ <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; }</div>
1251
+ <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; }</div>
1252
+ <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; <span class="keywordflow">else</span></div>
1253
+ <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; {</div>
1254
+ <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else value can we have?&quot;</span>);</div>
1255
+ <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; }</div>
1256
+ <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; </div>
1257
+ <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; pag-&gt;addToSVFStmtList(icfgNode,edge);</div>
1258
+ <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; icfgNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be">addSVFStmt</a>(edge);</div>
1259
+ <div class="line"><a name="l01301"></a><span class="lineno"> 1301</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>
1260
+ <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; {</div>
1261
+ <div class="line"><a name="l01303"></a><span class="lineno"> 1303</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>
1262
+ <div class="line"><a name="l01304"></a><span class="lineno"> 1304</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>
1263
+ <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = pag-&gt;getICFG()-&gt;hasInterICFGEdge(callNode,entryNode, ICFGEdge::CallCF))</div>
1264
+ <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; SVFUtil::cast&lt;CallCFGEdge&gt;(edge)-&gt;addCallPE(callPE);</div>
1265
+ <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; }</div>
1266
+ <div class="line"><a name="l01308"></a><span class="lineno"> 1308</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>
1267
+ <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; {</div>
1268
+ <div class="line"><a name="l01310"></a><span class="lineno"> 1310</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>
1269
+ <div class="line"><a name="l01311"></a><span class="lineno"> 1311</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>
1270
+ <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = pag-&gt;getICFG()-&gt;hasInterICFGEdge(exitNode, retNode, ICFGEdge::RetCF))</div>
1271
+ <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; SVFUtil::cast&lt;RetCFGEdge&gt;(edge)-&gt;addRetPE(retPE);</div>
1272
+ <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; }</div>
1273
+ <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;}</div>
1273
1274
  <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; </div>
1274
- <div class="line"><a name="l01323"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a7c401d6929e583be734c0c4e9957d0d7"> 1323</a></span>&#160;<a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> SVFIRBuilder::getAccessPathFromBaseNode(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)</div>
1275
- <div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;{</div>
1276
- <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = pag-&gt;getGNode(nodeId);</div>
1277
- <div class="line"><a name="l01326"></a><span class="lineno"> 1326</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>(SVFStmt::Gep);</div>
1278
- <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <span class="keywordflow">if</span>(geps.empty())</div>
1279
- <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(0);</div>
1280
- <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; </div>
1281
- <div class="line"><a name="l01331"></a><span class="lineno"> 1331</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>
1282
- <div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVFVar::iterator</a> it = geps.begin();</div>
1283
- <div class="line"><a name="l01333"></a><span class="lineno"> 1333</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>
1284
- <div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <span class="keywordflow">if</span>(gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div>
1285
- <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(0);</div>
1286
- <div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; <span class="keywordflow">else</span></div>
1287
- <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keywordflow">return</span> gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>();</div>
1288
- <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;}</div>
1275
+ <div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; </div>
1276
+ <div class="line"><a name="l01324"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIRBuilder.html#a7c401d6929e583be734c0c4e9957d0d7"> 1324</a></span>&#160;<a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> SVFIRBuilder::getAccessPathFromBaseNode(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)</div>
1277
+ <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;{</div>
1278
+ <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = pag-&gt;getGNode(nodeId);</div>
1279
+ <div class="line"><a name="l01327"></a><span class="lineno"> 1327</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>(SVFStmt::Gep);</div>
1280
+ <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <span class="keywordflow">if</span>(geps.empty())</div>
1281
+ <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(0);</div>
1282
+ <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; </div>
1283
+ <div class="line"><a name="l01332"></a><span class="lineno"> 1332</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>
1284
+ <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVFVar::iterator</a> it = geps.begin();</div>
1285
+ <div class="line"><a name="l01334"></a><span class="lineno"> 1334</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>
1286
+ <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keywordflow">if</span>(gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div>
1287
+ <div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(0);</div>
1288
+ <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keywordflow">else</span></div>
1289
+ <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">return</span> gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>();</div>
1290
+ <div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;}</div>
1289
1291
  </div><!-- fragment --></div><!-- contents -->
1290
1292
  <div class="ttc" id="anamespaceSVF_html_a5c4820681ef340339ddded756eb82ae1"><div class="ttname"><a href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">SVF::APOffset</a></div><div class="ttdeci">s64_t APOffset</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00061">SVFType.h:61</a></div></div>
1291
- <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#l00253">LLVMUtil.cpp:253</a></div></div>
1293
+ <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#l00251">LLVMUtil.cpp:251</a></div></div>
1294
+ <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>
1292
1295
  <div class="ttc" id="aPAGBuilderFromFile_8h_html"><div class="ttname"><a href="PAGBuilderFromFile_8h.html">PAGBuilderFromFile.h</a></div></div>
1293
1296
  <div class="ttc" id="aclassSVF_1_1CHGBuilder_html_aa5c672ac426ad4085d64d97f8cb14ace"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#aa5c672ac426ad4085d64d97f8cb14ace">SVF::CHGBuilder::buildCHG</a></div><div class="ttdeci">void buildCHG()</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00059">CHGBuilder.cpp:59</a></div></div>
1294
1297
  <div class="ttc" id="anamespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00146">BasicTypes.h:146</a></div></div>
@@ -1297,7 +1300,7 @@ $(function() {
1297
1300
  <div class="ttc" id="anamespaceSVF_html_a292a6e8c5b4f2023b5575879c57eca62"><div class="ttname"><a href="namespaceSVF.html#a292a6e8c5b4f2023b5575879c57eca62">SVF::UnaryOperator</a></div><div class="ttdeci">llvm::UnaryOperator UnaryOperator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00178">BasicTypes.h:178</a></div></div>
1298
1301
  <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#l00306">LLVMUtil.h:306</a></div></div>
1299
1302
  <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>
1300
- <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#l00815">LLVMUtil.cpp:815</a></div></div>
1303
+ <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#l00813">LLVMUtil.cpp:813</a></div></div>
1301
1304
  <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>
1302
1305
  <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>
1303
1306
  <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>
@@ -1305,6 +1308,7 @@ $(function() {
1305
1308
  <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>
1306
1309
  <div class="ttc" id="anamespaceSVF_html_aad5d26ab07a5d1314bdb8f54e0fcdb22"><div class="ttname"><a href="namespaceSVF.html#aad5d26ab07a5d1314bdb8f54e0fcdb22">SVF::BinaryOperator</a></div><div class="ttdeci">llvm::BinaryOperator BinaryOperator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00177">BasicTypes.h:177</a></div></div>
1307
1310
  <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>
1311
+ <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#l01155">LLVMUtil.cpp:1155</a></div></div>
1308
1312
  <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>
1309
1313
  <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>
1310
1314
  <div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
@@ -1315,11 +1319,11 @@ $(function() {
1315
1319
  <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>
1316
1320
  <div class="ttc" id="anamespaceSVF_html_a412280b134578905248ce0122c5db7c9"><div class="ttname"><a href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SVF::SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00153">BasicTypes.h:153</a></div></div>
1317
1321
  <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>
1318
- <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#l00766">LLVMUtil.cpp:766</a></div></div>
1322
+ <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#l00764">LLVMUtil.cpp:764</a></div></div>
1319
1323
  <div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
1320
1324
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a2358a8194b5e2c4bcbb5218dee7fcbcd"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a2358a8194b5e2c4bcbb5218dee7fcbcd">SVF::AccessPath::addOffsetVarAndGepTypePair</a></div><div class="ttdeci">bool addOffsetVarAndGepTypePair(const SVFVar *var, const SVFType *gepIterType)</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00042">AccessPath.cpp:42</a></div></div>
1321
1325
  <div class="ttc" id="aclassSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00604">SVFStatements.h:604</a></div></div>
1322
- <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00450">SVFUtil.h:450</a></div></div>
1326
+ <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00442">SVFUtil.h:442</a></div></div>
1323
1327
  <div class="ttc" id="aSVFType_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00549">SVFType.h:549</a></div></div>
1324
1328
  <div class="ttc" id="aSVFFileSystem_8h_html"><div class="ttname"><a href="SVFFileSystem_8h.html">SVFFileSystem.h</a></div></div>
1325
1329
  <div class="ttc" id="anamespacellvm_html_acfe99e9d441434240c79f6d76b73fe0a"><div class="ttname"><a href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">llvm::bridge_gep_begin</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_begin(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00149">GEPTypeBridgeIterator.h:149</a></div></div>
@@ -1329,6 +1333,7 @@ $(function() {
1329
1333
  <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>
1330
1334
  <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>
1331
1335
  <div class="ttc" id="anamespaceSVF_html_ac6b6710585fc6667858ccfd4311b6ab5"><div class="ttname"><a href="namespaceSVF.html#ac6b6710585fc6667858ccfd4311b6ab5">SVF::CallBrInst</a></div><div class="ttdeci">llvm::CallBrInst CallBrInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00154">BasicTypes.h:154</a></div></div>
1336
+ <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#l01165">LLVMUtil.cpp:1165</a></div></div>
1332
1337
  <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#l00296">SVFType.h:296</a></div></div>
1333
1338
  <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>
1334
1339
  <div class="ttc" id="aLLVMLoopAnalysis_8h_html"><div class="ttname"><a href="LLVMLoopAnalysis_8h.html">LLVMLoopAnalysis.h</a></div></div>
@@ -1346,7 +1351,7 @@ $(function() {
1346
1351
  <div class="ttc" id="aSVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
1347
1352
  <div class="ttc" id="aOptions_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
1348
1353
  <div class="ttc" id="anamespaceSVF_html_ac9a05dd7ab16e998625037aa242cd30f"><div class="ttname"><a href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">SVF::BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00152">BasicTypes.h:152</a></div></div>
1349
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a837d19c740902c419206287bdb21273b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">SVF::LLVMUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00339">LLVMUtil.cpp:339</a></div></div>
1354
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a837d19c740902c419206287bdb21273b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">SVF::LLVMUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00337">LLVMUtil.cpp:337</a></div></div>
1350
1355
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a68e49bb797a84ea035ea338549f2e054"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a68e49bb797a84ea035ea338549f2e054">SVF::AccessPath::getConstantFieldIdx</a></div><div class="ttdeci">APOffset getConstantFieldIdx() const</div><div class="ttdoc">Get methods.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00098">AccessPath.h:98</a></div></div>
1351
1356
  <div class="ttc" id="aCppUtil_8h_html"><div class="ttname"><a href="CppUtil_8h.html">CppUtil.h</a></div></div>
1352
1357
  <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>
@@ -1405,7 +1410,7 @@ $(function() {
1405
1410
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3d34fcdfc98add848a34fd5259c11eb2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">SVF::LLVMUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const Function * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00057">LLVMUtil.h:57</a></div></div>
1406
1411
  <div class="ttc" id="anamespaceSVF_html_a56cb9d6d1e05f6c31bfe1a4045bc8b5f"><div class="ttname"><a href="namespaceSVF.html#a56cb9d6d1e05f6c31bfe1a4045bc8b5f">SVF::InvokeInst</a></div><div class="ttdeci">llvm::InvokeInst InvokeInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00161">BasicTypes.h:161</a></div></div>
1407
1412
  <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>
1408
- <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#l01159">LLVMUtil.cpp:1159</a></div></div>
1413
+ <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#l01194">LLVMUtil.cpp:1194</a></div></div>
1409
1414
  <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>
1410
1415
  <div class="ttc" id="aclassSVF_1_1FunExitICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html">SVF::FunExitICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00324">ICFGNode.h:324</a></div></div>
1411
1416
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a4550f2fb815882edfb666ac818792064"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4550f2fb815882edfb666ac818792064">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(const std::string &amp;msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00099">SVFUtil.cpp:99</a></div></div>
@@ -1431,7 +1436,7 @@ $(function() {
1431
1436
  <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#l00593">SVFValue.h:593</a></div></div>
1432
1437
  <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>
1433
1438
  <div class="ttc" id="aCHGBuilder_8h_html"><div class="ttname"><a href="CHGBuilder_8h.html">CHGBuilder.h</a></div></div>
1434
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00206">LLVMUtil.cpp:206</a></div></div>
1439
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00204">LLVMUtil.cpp:204</a></div></div>
1435
1440
  <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>
1436
1441
  <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#l00253">SVFValue.h:253</a></div></div>
1437
1442
  <div class="ttc" id="aSymbolTableBuilder_8h_html"><div class="ttname"><a href="SymbolTableBuilder_8h.html">SymbolTableBuilder.h</a></div></div>