svf-tools 1.0.890 → 1.0.892

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 (343) hide show
  1. package/SVF-doxygen/html/AbstractExecution_8cpp_source.html +451 -450
  2. package/SVF-doxygen/html/AbstractExecution_8h_source.html +11 -11
  3. package/SVF-doxygen/html/AccessPath_8cpp_source.html +150 -147
  4. package/SVF-doxygen/html/AccessPath_8h_source.html +6 -6
  5. package/SVF-doxygen/html/Andersen_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +426 -425
  7. package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +2 -2
  8. package/SVF-doxygen/html/CFLAlias_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/CppUtil_8cpp_source.html +4 -4
  11. package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
  12. package/SVF-doxygen/html/DCHG_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/DDAClient_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/ICFGSimplification_8cpp_source.html +43 -44
  16. package/SVF-doxygen/html/ICFGWTO_8h_source.html +4 -4
  17. package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +556 -556
  19. package/SVF-doxygen/html/LLVMModule_8h_source.html +15 -15
  20. package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +552 -525
  21. package/SVF-doxygen/html/LLVMUtil_8h.html +2 -0
  22. package/SVF-doxygen/html/LLVMUtil_8h_source.html +55 -52
  23. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/MTAResultValidator_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/ObjTypeInference_8cpp.html +1 -1
  29. package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +3 -3
  30. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +828 -827
  32. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +20 -20
  33. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +7 -7
  34. package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +1 -1
  35. package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +2 -2
  36. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/SVFStatements_8h_source.html +1 -1
  38. package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
  40. package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/Steensgaard_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +9 -9
  43. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/WTO_8h.html +1 -0
  45. package/SVF-doxygen/html/WTO_8h_source.html +812 -811
  46. package/SVF-doxygen/html/ae_8cpp.html +46 -47
  47. package/SVF-doxygen/html/ae_8cpp_source.html +46 -47
  48. package/SVF-doxygen/html/classSVF_1_1AEAPI.html +432 -431
  49. package/SVF-doxygen/html/classSVF_1_1AbstractExecution.html +22 -22
  50. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +136 -133
  51. package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  52. package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  53. package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
  54. package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
  55. package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
  56. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
  57. package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  58. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
  59. package/SVF-doxygen/html/classSVF_1_1BufOverflowCheckerAPI.html +82 -81
  60. package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +1 -1
  61. package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +1 -1
  62. package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
  63. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
  64. package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
  65. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
  66. package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
  67. package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
  68. package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
  69. package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +1 -1
  70. package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  71. package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
  72. package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
  73. package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +1 -1
  74. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +2 -2
  75. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
  76. package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
  77. package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +1 -1
  78. package/SVF-doxygen/html/classSVF_1_1ICFGSimplification.html +43 -44
  79. package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  80. package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  81. package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +1 -1
  82. package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +1 -1
  83. package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  84. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +538 -538
  85. package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
  86. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
  87. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
  88. package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
  89. package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +1 -1
  90. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
  91. package/SVF-doxygen/html/classSVF_1_1MemObj.html +1 -1
  92. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
  93. package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +3 -3
  94. package/SVF-doxygen/html/classSVF_1_1ObjVar.html +1 -1
  95. package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
  96. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
  97. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +1 -1
  98. package/SVF-doxygen/html/classSVF_1_1RaceResultValidator.html +1 -1
  99. package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +1 -1
  100. package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
  101. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +792 -791
  102. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +8 -8
  103. package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
  104. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
  105. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
  106. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
  107. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +8 -8
  108. package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
  109. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
  110. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
  111. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
  112. package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  113. package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
  114. package/SVF-doxygen/html/classSVF_1_1WTO.html +253 -253
  115. package/SVF-doxygen/html/classSVF_1_1WTOComponent.html +21 -21
  116. package/SVF-doxygen/html/classSVF_1_1WTOComponentVisitor.html +3 -3
  117. package/SVF-doxygen/html/classSVF_1_1WTOCycle.html +61 -61
  118. package/SVF-doxygen/html/classSVF_1_1WTOCycleDepth.html +115 -115
  119. package/SVF-doxygen/html/classSVF_1_1WTONode.html +31 -31
  120. package/SVF-doxygen/html/classSVF_1_1WTO_1_1WTOCycleDepthBuilder.html +31 -31
  121. package/SVF-doxygen/html/globals_vars.html +3 -3
  122. package/SVF-doxygen/html/globals_z.html +3 -3
  123. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +529 -483
  124. package/SVF-doxygen/html/namespaceSVF_1_1cppUtil.html +2 -2
  125. package/SVF-doxygen/html/namespacemembers_func_r.html +3 -0
  126. package/SVF-doxygen/html/namespacemembers_r.html +3 -0
  127. package/SVF-doxygen/html/search/all_11.js +54 -53
  128. package/SVF-doxygen/html/search/all_12.js +570 -570
  129. package/SVF-doxygen/html/search/all_13.js +207 -207
  130. package/SVF-doxygen/html/search/all_14.js +70 -70
  131. package/SVF-doxygen/html/search/all_15.js +176 -176
  132. package/SVF-doxygen/html/search/all_16.js +77 -77
  133. package/SVF-doxygen/html/search/all_17.js +1 -1
  134. package/SVF-doxygen/html/search/all_18.js +1 -1
  135. package/SVF-doxygen/html/search/all_19.js +26 -26
  136. package/SVF-doxygen/html/search/all_1a.js +180 -180
  137. package/SVF-doxygen/html/search/classes_0.js +29 -29
  138. package/SVF-doxygen/html/search/classes_1.js +12 -12
  139. package/SVF-doxygen/html/search/classes_10.js +74 -74
  140. package/SVF-doxygen/html/search/classes_11.js +14 -14
  141. package/SVF-doxygen/html/search/classes_12.js +2 -2
  142. package/SVF-doxygen/html/search/classes_13.js +10 -10
  143. package/SVF-doxygen/html/search/classes_14.js +19 -19
  144. package/SVF-doxygen/html/search/classes_15.js +1 -1
  145. package/SVF-doxygen/html/search/classes_2.js +73 -73
  146. package/SVF-doxygen/html/search/classes_3.js +35 -35
  147. package/SVF-doxygen/html/search/classes_4.js +8 -8
  148. package/SVF-doxygen/html/search/classes_5.js +28 -28
  149. package/SVF-doxygen/html/search/classes_6.js +98 -98
  150. package/SVF-doxygen/html/search/classes_7.js +38 -38
  151. package/SVF-doxygen/html/search/classes_8.js +59 -59
  152. package/SVF-doxygen/html/search/classes_9.js +1 -1
  153. package/SVF-doxygen/html/search/classes_a.js +12 -12
  154. package/SVF-doxygen/html/search/classes_b.js +29 -29
  155. package/SVF-doxygen/html/search/classes_c.js +6 -6
  156. package/SVF-doxygen/html/search/classes_d.js +19 -19
  157. package/SVF-doxygen/html/search/classes_e.js +36 -36
  158. package/SVF-doxygen/html/search/classes_f.js +25 -25
  159. package/SVF-doxygen/html/search/defines_0.js +3 -3
  160. package/SVF-doxygen/html/search/defines_1.js +3 -3
  161. package/SVF-doxygen/html/search/defines_10.js +2 -2
  162. package/SVF-doxygen/html/search/defines_2.js +30 -30
  163. package/SVF-doxygen/html/search/defines_3.js +20 -20
  164. package/SVF-doxygen/html/search/defines_4.js +3 -3
  165. package/SVF-doxygen/html/search/defines_5.js +4 -4
  166. package/SVF-doxygen/html/search/defines_6.js +2 -2
  167. package/SVF-doxygen/html/search/defines_7.js +5 -5
  168. package/SVF-doxygen/html/search/defines_8.js +11 -11
  169. package/SVF-doxygen/html/search/defines_9.js +9 -9
  170. package/SVF-doxygen/html/search/defines_a.js +2 -2
  171. package/SVF-doxygen/html/search/defines_b.js +1 -1
  172. package/SVF-doxygen/html/search/defines_c.js +4 -4
  173. package/SVF-doxygen/html/search/defines_d.js +2 -2
  174. package/SVF-doxygen/html/search/defines_e.js +8 -8
  175. package/SVF-doxygen/html/search/defines_f.js +4 -4
  176. package/SVF-doxygen/html/search/enums_0.js +4 -4
  177. package/SVF-doxygen/html/search/enums_1.js +2 -2
  178. package/SVF-doxygen/html/search/enums_10.js +1 -1
  179. package/SVF-doxygen/html/search/enums_11.js +1 -1
  180. package/SVF-doxygen/html/search/enums_2.js +8 -8
  181. package/SVF-doxygen/html/search/enums_3.js +1 -1
  182. package/SVF-doxygen/html/search/enums_4.js +4 -4
  183. package/SVF-doxygen/html/search/enums_5.js +1 -1
  184. package/SVF-doxygen/html/search/enums_6.js +2 -2
  185. package/SVF-doxygen/html/search/enums_7.js +2 -2
  186. package/SVF-doxygen/html/search/enums_8.js +4 -4
  187. package/SVF-doxygen/html/search/enums_9.js +1 -1
  188. package/SVF-doxygen/html/search/enums_a.js +1 -1
  189. package/SVF-doxygen/html/search/enums_b.js +7 -7
  190. package/SVF-doxygen/html/search/enums_c.js +1 -1
  191. package/SVF-doxygen/html/search/enums_d.js +4 -4
  192. package/SVF-doxygen/html/search/enums_e.js +2 -2
  193. package/SVF-doxygen/html/search/enums_f.js +4 -4
  194. package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
  195. package/SVF-doxygen/html/search/enumvalues_1.js +15 -15
  196. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  197. package/SVF-doxygen/html/search/enumvalues_11.js +4 -4
  198. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  199. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  200. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  201. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  202. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  203. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  204. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  205. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  206. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  207. package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
  208. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  209. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  210. package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
  211. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  212. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  213. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  214. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  215. package/SVF-doxygen/html/search/enumvalues_f.js +47 -47
  216. package/SVF-doxygen/html/search/files_0.js +16 -16
  217. package/SVF-doxygen/html/search/files_1.js +9 -9
  218. package/SVF-doxygen/html/search/files_10.js +8 -8
  219. package/SVF-doxygen/html/search/files_11.js +8 -8
  220. package/SVF-doxygen/html/search/files_12.js +2 -2
  221. package/SVF-doxygen/html/search/files_2.js +53 -53
  222. package/SVF-doxygen/html/search/files_3.js +14 -14
  223. package/SVF-doxygen/html/search/files_4.js +5 -5
  224. package/SVF-doxygen/html/search/files_5.js +13 -13
  225. package/SVF-doxygen/html/search/files_6.js +10 -10
  226. package/SVF-doxygen/html/search/files_7.js +17 -17
  227. package/SVF-doxygen/html/search/files_8.js +13 -13
  228. package/SVF-doxygen/html/search/files_9.js +18 -18
  229. package/SVF-doxygen/html/search/files_a.js +3 -3
  230. package/SVF-doxygen/html/search/files_b.js +4 -4
  231. package/SVF-doxygen/html/search/files_c.js +20 -20
  232. package/SVF-doxygen/html/search/files_d.js +4 -4
  233. package/SVF-doxygen/html/search/files_e.js +62 -62
  234. package/SVF-doxygen/html/search/files_f.js +8 -8
  235. package/SVF-doxygen/html/search/functions_0.js +13 -13
  236. package/SVF-doxygen/html/search/functions_1.js +369 -369
  237. package/SVF-doxygen/html/search/functions_10.js +140 -140
  238. package/SVF-doxygen/html/search/functions_11.js +140 -139
  239. package/SVF-doxygen/html/search/functions_12.js +299 -299
  240. package/SVF-doxygen/html/search/functions_13.js +73 -73
  241. package/SVF-doxygen/html/search/functions_14.js +41 -41
  242. package/SVF-doxygen/html/search/functions_15.js +72 -72
  243. package/SVF-doxygen/html/search/functions_16.js +38 -38
  244. package/SVF-doxygen/html/search/functions_17.js +3 -3
  245. package/SVF-doxygen/html/search/functions_18.js +180 -180
  246. package/SVF-doxygen/html/search/functions_2.js +95 -95
  247. package/SVF-doxygen/html/search/functions_3.js +261 -261
  248. package/SVF-doxygen/html/search/functions_4.js +84 -84
  249. package/SVF-doxygen/html/search/functions_5.js +57 -57
  250. package/SVF-doxygen/html/search/functions_6.js +65 -65
  251. package/SVF-doxygen/html/search/functions_7.js +863 -863
  252. package/SVF-doxygen/html/search/functions_8.js +162 -162
  253. package/SVF-doxygen/html/search/functions_9.js +439 -439
  254. package/SVF-doxygen/html/search/functions_a.js +30 -30
  255. package/SVF-doxygen/html/search/functions_b.js +2 -2
  256. package/SVF-doxygen/html/search/functions_c.js +25 -25
  257. package/SVF-doxygen/html/search/functions_d.js +82 -82
  258. package/SVF-doxygen/html/search/functions_e.js +36 -36
  259. package/SVF-doxygen/html/search/functions_f.js +58 -58
  260. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  261. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  262. package/SVF-doxygen/html/search/related_0.js +4 -4
  263. package/SVF-doxygen/html/search/related_1.js +2 -2
  264. package/SVF-doxygen/html/search/related_2.js +2 -2
  265. package/SVF-doxygen/html/search/related_3.js +2 -2
  266. package/SVF-doxygen/html/search/related_4.js +2 -2
  267. package/SVF-doxygen/html/search/related_5.js +1 -1
  268. package/SVF-doxygen/html/search/related_6.js +2 -2
  269. package/SVF-doxygen/html/search/related_7.js +5 -5
  270. package/SVF-doxygen/html/search/related_8.js +2 -2
  271. package/SVF-doxygen/html/search/related_9.js +4 -4
  272. package/SVF-doxygen/html/search/related_a.js +19 -19
  273. package/SVF-doxygen/html/search/related_b.js +4 -4
  274. package/SVF-doxygen/html/search/related_c.js +2 -2
  275. package/SVF-doxygen/html/search/related_d.js +12 -12
  276. package/SVF-doxygen/html/search/related_e.js +2 -2
  277. package/SVF-doxygen/html/search/related_f.js +2 -2
  278. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  279. package/SVF-doxygen/html/search/typedefs_1.js +27 -27
  280. package/SVF-doxygen/html/search/typedefs_10.js +63 -63
  281. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  282. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  283. package/SVF-doxygen/html/search/typedefs_13.js +40 -40
  284. package/SVF-doxygen/html/search/typedefs_14.js +11 -11
  285. package/SVF-doxygen/html/search/typedefs_2.js +125 -125
  286. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  287. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  288. package/SVF-doxygen/html/search/typedefs_5.js +42 -42
  289. package/SVF-doxygen/html/search/typedefs_6.js +54 -54
  290. package/SVF-doxygen/html/search/typedefs_7.js +47 -47
  291. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  292. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  293. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  294. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  295. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  296. package/SVF-doxygen/html/search/typedefs_d.js +15 -15
  297. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  298. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  299. package/SVF-doxygen/html/search/variables_0.js +177 -177
  300. package/SVF-doxygen/html/search/variables_1.js +76 -76
  301. package/SVF-doxygen/html/search/variables_10.js +98 -98
  302. package/SVF-doxygen/html/search/variables_11.js +46 -46
  303. package/SVF-doxygen/html/search/variables_12.js +93 -93
  304. package/SVF-doxygen/html/search/variables_13.js +76 -76
  305. package/SVF-doxygen/html/search/variables_14.js +14 -14
  306. package/SVF-doxygen/html/search/variables_15.js +49 -49
  307. package/SVF-doxygen/html/search/variables_16.js +11 -11
  308. package/SVF-doxygen/html/search/variables_17.js +1 -1
  309. package/SVF-doxygen/html/search/variables_18.js +17 -17
  310. package/SVF-doxygen/html/search/variables_2.js +41 -41
  311. package/SVF-doxygen/html/search/variables_3.js +142 -142
  312. package/SVF-doxygen/html/search/variables_4.js +51 -51
  313. package/SVF-doxygen/html/search/variables_5.js +39 -39
  314. package/SVF-doxygen/html/search/variables_6.js +66 -66
  315. package/SVF-doxygen/html/search/variables_7.js +34 -34
  316. package/SVF-doxygen/html/search/variables_8.js +8 -8
  317. package/SVF-doxygen/html/search/variables_9.js +79 -79
  318. package/SVF-doxygen/html/search/variables_a.js +4 -4
  319. package/SVF-doxygen/html/search/variables_b.js +10 -10
  320. package/SVF-doxygen/html/search/variables_c.js +45 -45
  321. package/SVF-doxygen/html/search/variables_d.js +57 -57
  322. package/SVF-doxygen/html/search/variables_e.js +123 -123
  323. package/SVF-doxygen/html/search/variables_f.js +31 -31
  324. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  325. package/SVF-doxygen/html/structSVF_1_1has__edgetype.html +1 -1
  326. package/SVF-doxygen/html/structSVF_1_1has__edgetype_3_01T_00_01std_1_1void__t_3_01typename_01T_1_1EdgeType_01_4_01_4.html +1 -1
  327. package/SVF-doxygen/html/structSVF_1_1has__nodetype.html +1 -1
  328. package/SVF-doxygen/html/structSVF_1_1has__nodetype_3_01T_00_01std_1_1void__t_3_01typename_01T_1_1NodeType_01_4_01_4.html +1 -1
  329. package/SVF-doxygen/html/svf-ex_8cpp.html +12 -12
  330. package/SVF-doxygen/html/svf-ex_8cpp_source.html +12 -12
  331. package/SVF-doxygen/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  332. package/package.json +1 -1
  333. package/svf/include/Graphs/WTO.h +1 -0
  334. package/svf/lib/AE/Svfexe/AbstractExecution.cpp +1 -0
  335. package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +1 -0
  336. package/svf/lib/AE/Svfexe/ICFGSimplification.cpp +1 -2
  337. package/svf/lib/AE/Svfexe/SVFIR2ItvExeState.cpp +1 -0
  338. package/svf/lib/MemoryModel/AccessPath.cpp +4 -1
  339. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +2 -0
  340. package/svf-llvm/lib/LLVMModule.cpp +3 -4
  341. package/svf-llvm/lib/LLVMUtil.cpp +29 -2
  342. package/svf-llvm/lib/SVFIRBuilder.cpp +1 -1
  343. package/svf-llvm/tools/AE/ae.cpp +1 -2
@@ -320,38 +320,38 @@ Protected Attributes</h2></td></tr>
320
320
  </table>
321
321
  </div><div class="memdoc">
322
322
 
323
- <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01793">1793</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
324
- <div class="fragment"><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;{</div>
325
- <div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; std::vector&lt;const CallICFGNode *&gt; callstack = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">_callSiteStack</a>;</div>
326
- <div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">SVF::ValVar</a> *arg_gnode = SVFUtil::cast&lt;ValVar&gt;(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg)));</div>
327
- <div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; <span class="keywordflow">if</span> (arg_gnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(SVFStmt::PEDGEK::Call))</div>
328
- <div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; {</div>
329
- <div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; <span class="keywordflow">while</span> (!callstack.empty())</div>
330
- <div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; {</div>
331
- <div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cur_call = callstack.back();</div>
332
- <div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; callstack.pop_back();</div>
333
- <div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: cur_call-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
334
- <div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; {</div>
335
- <div class="line"><a name="l01807"></a><span class="lineno"> 1807</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;(stmt))</div>
336
- <div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; {</div>
337
- <div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="keywordflow">if</span> (callPE-&gt;getLHSVarID() == <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg))</div>
338
- <div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; {</div>
339
- <div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;DummyObjVar&gt;(callPE-&gt;getRHSVar()) &amp;&amp;</div>
340
- <div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; !SVFUtil::isa&lt;DummyValVar&gt;(callPE-&gt;getRHSVar()))</div>
341
- <div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; {</div>
342
- <div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; <span class="keywordflow">if</span> (!visited.count(callPE-&gt;getRHSVar()-&gt;getValue()))</div>
343
- <div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; {</div>
344
- <div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; visited.insert(callPE-&gt;getRHSVar()-&gt;getValue());</div>
345
- <div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(callPE-&gt;getRHSVar()-&gt;getValue());</div>
346
- <div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; <span class="keywordflow">break</span>;</div>
347
- <div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; }</div>
348
- <div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; }</div>
349
- <div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; }</div>
350
- <div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; }</div>
351
- <div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; }</div>
352
- <div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; }</div>
353
- <div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; }</div>
354
- <div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;}</div>
323
+ <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01794">1794</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
324
+ <div class="fragment"><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;{</div>
325
+ <div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; std::vector&lt;const CallICFGNode *&gt; callstack = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">_callSiteStack</a>;</div>
326
+ <div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">SVF::ValVar</a> *arg_gnode = SVFUtil::cast&lt;ValVar&gt;(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg)));</div>
327
+ <div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; <span class="keywordflow">if</span> (arg_gnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(SVFStmt::PEDGEK::Call))</div>
328
+ <div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; {</div>
329
+ <div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; <span class="keywordflow">while</span> (!callstack.empty())</div>
330
+ <div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; {</div>
331
+ <div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cur_call = callstack.back();</div>
332
+ <div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; callstack.pop_back();</div>
333
+ <div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: cur_call-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
334
+ <div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; {</div>
335
+ <div class="line"><a name="l01808"></a><span class="lineno"> 1808</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;(stmt))</div>
336
+ <div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; {</div>
337
+ <div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="keywordflow">if</span> (callPE-&gt;getLHSVarID() == <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg))</div>
338
+ <div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; {</div>
339
+ <div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;DummyObjVar&gt;(callPE-&gt;getRHSVar()) &amp;&amp;</div>
340
+ <div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; !SVFUtil::isa&lt;DummyValVar&gt;(callPE-&gt;getRHSVar()))</div>
341
+ <div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; {</div>
342
+ <div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; <span class="keywordflow">if</span> (!visited.count(callPE-&gt;getRHSVar()-&gt;getValue()))</div>
343
+ <div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; {</div>
344
+ <div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; visited.insert(callPE-&gt;getRHSVar()-&gt;getValue());</div>
345
+ <div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(callPE-&gt;getRHSVar()-&gt;getValue());</div>
346
+ <div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; <span class="keywordflow">break</span>;</div>
347
+ <div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; }</div>
348
+ <div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; }</div>
349
+ <div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; }</div>
350
+ <div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; }</div>
351
+ <div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; }</div>
352
+ <div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; }</div>
353
+ <div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; }</div>
354
+ <div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;}</div>
355
355
  </div><!-- fragment -->
356
356
  </div>
357
357
  </div>
@@ -395,14 +395,14 @@ Protected Attributes</h2></td></tr>
395
395
  </table>
396
396
  </div><div class="memdoc">
397
397
 
398
- <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01764">1764</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
399
- <div class="fragment"><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;{</div>
400
- <div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; <span class="keywordflow">if</span> (!visited.count(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar()-&gt;getValue()))</div>
401
- <div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; {</div>
402
- <div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; visited.insert(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar()-&gt;getValue());</div>
403
- <div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar()-&gt;getValue());</div>
404
- <div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; }</div>
405
- <div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;}</div>
398
+ <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01765">1765</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
399
+ <div class="fragment"><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;{</div>
400
+ <div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; <span class="keywordflow">if</span> (!visited.count(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar()-&gt;getValue()))</div>
401
+ <div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; {</div>
402
+ <div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; visited.insert(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar()-&gt;getValue());</div>
403
+ <div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar()-&gt;getValue());</div>
404
+ <div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; }</div>
405
+ <div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;}</div>
406
406
  </div><!-- fragment -->
407
407
  </div>
408
408
  </div>
@@ -446,25 +446,25 @@ Protected Attributes</h2></td></tr>
446
446
  </table>
447
447
  </div><div class="memdoc">
448
448
 
449
- <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01773">1773</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
450
- <div class="fragment"><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;{</div>
451
- <div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()))</div>
452
- <div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; {</div>
453
- <div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> &amp;Addrs = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a48fec38aad1c2a9a140ee94e9fdd7e9b">getAddrs</a>(load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div>
454
- <div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> vaddr: Addrs)</div>
455
- <div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; {</div>
456
- <div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a66c426719f583653cb70189f01d6fda5">getInternalID</a>(vaddr);</div>
457
- <div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == 0) <span class="comment">// nullptr has no memobj, skip</span></div>
458
- <div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; <span class="keywordflow">continue</span>;</div>
459
- <div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> *val = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div>
460
- <div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; <span class="keywordflow">if</span> (!visited.count(val-&gt;getValue()))</div>
461
- <div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; {</div>
462
- <div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; visited.insert(val-&gt;getValue());</div>
463
- <div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(val-&gt;getValue());</div>
464
- <div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; }</div>
465
- <div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; }</div>
466
- <div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; }</div>
467
- <div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;}</div>
449
+ <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01774">1774</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
450
+ <div class="fragment"><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;{</div>
451
+ <div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()))</div>
452
+ <div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; {</div>
453
+ <div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> &amp;Addrs = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a48fec38aad1c2a9a140ee94e9fdd7e9b">getAddrs</a>(load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div>
454
+ <div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> vaddr: Addrs)</div>
455
+ <div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; {</div>
456
+ <div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a66c426719f583653cb70189f01d6fda5">getInternalID</a>(vaddr);</div>
457
+ <div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == 0) <span class="comment">// nullptr has no memobj, skip</span></div>
458
+ <div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; <span class="keywordflow">continue</span>;</div>
459
+ <div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> *val = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div>
460
+ <div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; <span class="keywordflow">if</span> (!visited.count(val-&gt;getValue()))</div>
461
+ <div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; {</div>
462
+ <div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; visited.insert(val-&gt;getValue());</div>
463
+ <div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(val-&gt;getValue());</div>
464
+ <div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; }</div>
465
+ <div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; }</div>
466
+ <div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; }</div>
467
+ <div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;}</div>
468
468
  </div><!-- fragment -->
469
469
  </div>
470
470
  </div>
@@ -508,30 +508,30 @@ Protected Attributes</h2></td></tr>
508
508
  </table>
509
509
  </div><div class="memdoc">
510
510
 
511
- <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01739">1739</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
512
- <div class="fragment"><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;{</div>
513
- <div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <span class="keywordflow">if</span> (callnode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>()-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().size() &gt; 0)</div>
514
- <div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; {</div>
515
- <div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *ret = SVFUtil::dyn_cast&lt;RetPE&gt;(*callnode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>()-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().begin());</div>
516
- <div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">SVF::ValVar</a> *ret_gnode = SVFUtil::dyn_cast&lt;ValVar&gt;(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ret-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()));</div>
517
- <div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <span class="keywordflow">if</span> (ret_gnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(SVFStmt::PEDGEK::Phi))</div>
518
- <div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; {</div>
519
- <div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a> &amp;stmt_set = ret_gnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(SVFStmt::PEDGEK::Phi);</div>
520
- <div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = stmt_set.begin(); it != stmt_set.end(); ++it)</div>
521
- <div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; {</div>
522
- <div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt = *it;</div>
523
- <div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *phi = SVFUtil::dyn_cast&lt;PhiStmt&gt;(stmt))</div>
524
- <div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; {</div>
525
- <div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; <span class="keywordflow">if</span> (!visited.count(phi-&gt;getOpVar(0)-&gt;getValue()))</div>
526
- <div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; {</div>
527
- <div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(phi-&gt;getOpVar(0)-&gt;getValue());</div>
528
- <div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; visited.insert(phi-&gt;getOpVar(0)-&gt;getValue());</div>
529
- <div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; }</div>
530
- <div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; }</div>
531
- <div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; }</div>
532
- <div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; }</div>
533
- <div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; }</div>
534
- <div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;}</div>
511
+ <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01740">1740</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
512
+ <div class="fragment"><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;{</div>
513
+ <div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; <span class="keywordflow">if</span> (callnode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>()-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().size() &gt; 0)</div>
514
+ <div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; {</div>
515
+ <div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *ret = SVFUtil::dyn_cast&lt;RetPE&gt;(*callnode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>()-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().begin());</div>
516
+ <div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">SVF::ValVar</a> *ret_gnode = SVFUtil::dyn_cast&lt;ValVar&gt;(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ret-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()));</div>
517
+ <div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; <span class="keywordflow">if</span> (ret_gnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(SVFStmt::PEDGEK::Phi))</div>
518
+ <div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; {</div>
519
+ <div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a> &amp;stmt_set = ret_gnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(SVFStmt::PEDGEK::Phi);</div>
520
+ <div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = stmt_set.begin(); it != stmt_set.end(); ++it)</div>
521
+ <div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; {</div>
522
+ <div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt = *it;</div>
523
+ <div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *phi = SVFUtil::dyn_cast&lt;PhiStmt&gt;(stmt))</div>
524
+ <div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; {</div>
525
+ <div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; <span class="keywordflow">if</span> (!visited.count(phi-&gt;getOpVar(0)-&gt;getValue()))</div>
526
+ <div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; {</div>
527
+ <div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(phi-&gt;getOpVar(0)-&gt;getValue());</div>
528
+ <div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; visited.insert(phi-&gt;getOpVar(0)-&gt;getValue());</div>
529
+ <div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; }</div>
530
+ <div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; }</div>
531
+ <div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; }</div>
532
+ <div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; }</div>
533
+ <div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; }</div>
534
+ <div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;}</div>
535
535
  </div><!-- fragment -->
536
536
  </div>
537
537
  </div>
@@ -691,7 +691,8 @@ Protected Attributes</h2></td></tr>
691
691
  <div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; }</div>
692
692
  <div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; }</div>
693
693
  <div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; assert (<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Addr rhs value is not ObjVar&quot;</span>);</div>
694
- <div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;}</div>
694
+ <div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; abort();</div>
695
+ <div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;}</div>
695
696
  </div><!-- fragment -->
696
697
  </div>
697
698
  </div>
@@ -747,22 +748,22 @@ Protected Attributes</h2></td></tr>
747
748
  </dd>
748
749
  </dl>
749
750
 
750
- <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01667">1667</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
751
- <div class="fragment"><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;{</div>
752
- <div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; assert(<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(<span class="keywordtype">id</span>) &amp;&amp; <span class="stringliteral">&quot;id is not in varToAddrsTable&quot;</span>);</div>
753
- <div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(<span class="keywordtype">id</span>))</div>
754
- <div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; {</div>
755
- <div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a>&amp; addrs = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a48fec38aad1c2a9a140ee94e9fdd7e9b">getAddrs</a>(<span class="keywordtype">id</span>);</div>
756
- <div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> addr: addrs)</div>
757
- <div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; {</div>
758
- <div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> addr_id = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a66c426719f583653cb70189f01d6fda5">getInternalID</a>(addr);</div>
759
- <div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; <span class="keywordflow">if</span> (addr_id == 0) <span class="comment">// nullptr has no memobj, skip</span></div>
760
- <div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; <span class="keywordflow">continue</span>;</div>
761
- <div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; <span class="keywordflow">return</span> SVFUtil::dyn_cast&lt;ObjVar&gt;(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(addr_id))-&gt;getMemObj()-&gt;getType();</div>
762
- <div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; }</div>
763
- <div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; }</div>
764
- <div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
765
- <div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;}</div>
751
+ <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01668">1668</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
752
+ <div class="fragment"><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;{</div>
753
+ <div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; assert(<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(<span class="keywordtype">id</span>) &amp;&amp; <span class="stringliteral">&quot;id is not in varToAddrsTable&quot;</span>);</div>
754
+ <div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(<span class="keywordtype">id</span>))</div>
755
+ <div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; {</div>
756
+ <div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a>&amp; addrs = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a48fec38aad1c2a9a140ee94e9fdd7e9b">getAddrs</a>(<span class="keywordtype">id</span>);</div>
757
+ <div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> addr: addrs)</div>
758
+ <div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; {</div>
759
+ <div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> addr_id = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a66c426719f583653cb70189f01d6fda5">getInternalID</a>(addr);</div>
760
+ <div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; <span class="keywordflow">if</span> (addr_id == 0) <span class="comment">// nullptr has no memobj, skip</span></div>
761
+ <div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; <span class="keywordflow">continue</span>;</div>
762
+ <div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; <span class="keywordflow">return</span> SVFUtil::dyn_cast&lt;ObjVar&gt;(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(addr_id))-&gt;getMemObj()-&gt;getType();</div>
763
+ <div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; }</div>
764
+ <div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; }</div>
765
+ <div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
766
+ <div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;}</div>
766
767
  </div><!-- fragment -->
767
768
  </div>
768
769
  </div>
@@ -790,58 +791,58 @@ Protected Attributes</h2></td></tr>
790
791
  </dl>
791
792
  <dl class="section return"><dt>Returns</dt><dd><a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> of string length </dd></dl>
792
793
 
793
- <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01520">1520</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
794
- <div class="fragment"><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;{</div>
795
- <div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;es = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>();</div>
796
- <div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> dst_size = <a class="code" href="classSVF_1_1AEAPI.html#a4efc7447db13da26ce284218d6c01059">traceMemoryAllocationSize</a>(strValue);</div>
797
- <div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> len = 0;</div>
798
- <div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstid = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(strValue);</div>
799
- <div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
800
- <div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(dstid))</div>
801
- <div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; {</div>
802
- <div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; dst_size.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().getNumeral(); <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
803
- <div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; {</div>
804
- <div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> expr0 = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">getGepObjAddress</a>(dstid, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
805
- <div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> val = <a class="code" href="classSVF_1_1IntervalValue.html#aa027be2f9243ce4cae799b265b019443">IntervalValue::bottom</a>();</div>
806
- <div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: expr0)</div>
807
- <div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; {</div>
808
- <div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; val.<a class="code" href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">join_with</a>(es.<a class="code" href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">load</a>(addr));</div>
809
- <div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; }</div>
810
- <div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <span class="keywordflow">if</span> (val.<a class="code" href="classSVF_1_1IntervalValue.html#a523826aede7ad22736beed0c8223b6b0">is_numeral</a>() &amp;&amp; (<span class="keywordtype">char</span>) val.<a class="code" href="classSVF_1_1IntervalValue.html#ae081b5c462f8ed5b306719822e35cea9">getNumeral</a>() == <span class="charliteral">&#39;\0&#39;</span>)</div>
811
- <div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; {</div>
812
- <div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <span class="keywordflow">break</span>;</div>
813
- <div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; }</div>
814
- <div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; ++len;</div>
815
- <div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; }</div>
816
- <div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <span class="keywordflow">if</span> (strValue-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
817
- <div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; {</div>
818
- <div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(strValue-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>())-&gt;getTypeOfElement()-&gt;getByteSize();</div>
819
- <div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; }</div>
820
- <div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strValue-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
821
- <div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; {</div>
822
- <div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemType = <a class="code" href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">getPointeeElement</a>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(strValue)))</div>
823
- <div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; {</div>
824
- <div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; elemSize = elemType-&gt;getByteSize();</div>
825
- <div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; }</div>
826
- <div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; <span class="keywordflow">else</span></div>
827
- <div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; {</div>
828
- <div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; elemSize = 1;</div>
829
- <div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; }</div>
830
- <div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; }</div>
831
- <div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <span class="keywordflow">else</span></div>
832
- <div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; {</div>
833
- <div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we cannot support this type&quot;</span>);</div>
834
- <div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; }</div>
835
- <div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; }</div>
836
- <div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <span class="keywordflow">if</span> (len == 0)</div>
837
- <div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; {</div>
838
- <div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)0, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
839
- <div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; }</div>
840
- <div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; <span class="keywordflow">else</span></div>
841
- <div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; {</div>
842
- <div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(len * elemSize);</div>
843
- <div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; }</div>
844
- <div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;}</div>
794
+ <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01521">1521</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
795
+ <div class="fragment"><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;{</div>
796
+ <div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;es = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>();</div>
797
+ <div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> dst_size = <a class="code" href="classSVF_1_1AEAPI.html#a4efc7447db13da26ce284218d6c01059">traceMemoryAllocationSize</a>(strValue);</div>
798
+ <div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> len = 0;</div>
799
+ <div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstid = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(strValue);</div>
800
+ <div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
801
+ <div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(dstid))</div>
802
+ <div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; {</div>
803
+ <div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; dst_size.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().getNumeral(); <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
804
+ <div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; {</div>
805
+ <div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> expr0 = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">getGepObjAddress</a>(dstid, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
806
+ <div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> val = <a class="code" href="classSVF_1_1IntervalValue.html#aa027be2f9243ce4cae799b265b019443">IntervalValue::bottom</a>();</div>
807
+ <div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: expr0)</div>
808
+ <div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; {</div>
809
+ <div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; val.<a class="code" href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">join_with</a>(es.<a class="code" href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">load</a>(addr));</div>
810
+ <div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; }</div>
811
+ <div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <span class="keywordflow">if</span> (val.<a class="code" href="classSVF_1_1IntervalValue.html#a523826aede7ad22736beed0c8223b6b0">is_numeral</a>() &amp;&amp; (<span class="keywordtype">char</span>) val.<a class="code" href="classSVF_1_1IntervalValue.html#ae081b5c462f8ed5b306719822e35cea9">getNumeral</a>() == <span class="charliteral">&#39;\0&#39;</span>)</div>
812
+ <div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; {</div>
813
+ <div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; <span class="keywordflow">break</span>;</div>
814
+ <div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; }</div>
815
+ <div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; ++len;</div>
816
+ <div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; }</div>
817
+ <div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keywordflow">if</span> (strValue-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
818
+ <div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; {</div>
819
+ <div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(strValue-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>())-&gt;getTypeOfElement()-&gt;getByteSize();</div>
820
+ <div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; }</div>
821
+ <div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strValue-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
822
+ <div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; {</div>
823
+ <div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemType = <a class="code" href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">getPointeeElement</a>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(strValue)))</div>
824
+ <div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; {</div>
825
+ <div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; elemSize = elemType-&gt;getByteSize();</div>
826
+ <div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; }</div>
827
+ <div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; <span class="keywordflow">else</span></div>
828
+ <div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; {</div>
829
+ <div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; elemSize = 1;</div>
830
+ <div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; }</div>
831
+ <div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; }</div>
832
+ <div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; <span class="keywordflow">else</span></div>
833
+ <div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; {</div>
834
+ <div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we cannot support this type&quot;</span>);</div>
835
+ <div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; }</div>
836
+ <div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; }</div>
837
+ <div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <span class="keywordflow">if</span> (len == 0)</div>
838
+ <div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; {</div>
839
+ <div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)0, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
840
+ <div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; }</div>
841
+ <div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; <span class="keywordflow">else</span></div>
842
+ <div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; {</div>
843
+ <div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(len * elemSize);</div>
844
+ <div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; }</div>
845
+ <div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;}</div>
845
846
  </div><!-- fragment -->
846
847
  </div>
847
848
  </div>
@@ -998,62 +999,62 @@ Protected Attributes</h2></td></tr>
998
999
  </dd>
999
1000
  </dl>
1000
1001
 
1001
- <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01610">1610</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
1002
- <div class="fragment"><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;{</div>
1003
- <div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;es = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>();</div>
1004
- <div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dstId = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst); <span class="comment">// pts(dstId) = {objid} objbar objtypeinfo-&gt;getType().</span></div>
1005
- <div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> srcId = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(src);</div>
1006
- <div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
1007
- <div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
1008
- <div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; {</div>
1009
- <div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>())-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1010
- <div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; }</div>
1011
- <div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; <span class="comment">// memcpy(i32*, i32*, 40)</span></div>
1012
- <div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
1013
- <div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; {</div>
1014
- <div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemType = <a class="code" href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">getPointeeElement</a>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst)))</div>
1015
- <div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; {</div>
1016
- <div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; <span class="keywordflow">if</span> (elemType-&gt;isArrayTy())</div>
1017
- <div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(elemType)-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1018
- <div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <span class="keywordflow">else</span></div>
1019
- <div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; elemSize = elemType-&gt;getByteSize();</div>
1020
- <div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; }</div>
1021
- <div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; <span class="keywordflow">else</span></div>
1022
- <div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; {</div>
1023
- <div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; elemSize = 1;</div>
1024
- <div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; }</div>
1025
- <div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; }</div>
1026
- <div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <span class="keywordflow">else</span></div>
1027
- <div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; {</div>
1028
- <div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we cannot support this type&quot;</span>);</div>
1029
- <div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; }</div>
1030
- <div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size = std::min((<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(), (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>) len.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>());</div>
1031
- <div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> range_val = size / elemSize;</div>
1032
- <div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(srcId) &amp;&amp; <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(dstId))</div>
1033
- <div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; {</div>
1034
- <div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; range_val; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
1035
- <div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; {</div>
1036
- <div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; <span class="comment">// dead loop for string and break if there&#39;s a \0. If no \0, it will throw err.</span></div>
1037
- <div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> expr_src = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">getGepObjAddress</a>(srcId, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
1038
- <div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> expr_dst = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">getGepObjAddress</a>(dstId, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> + start_idx);</div>
1039
- <div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;dst: expr_dst)</div>
1040
- <div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; {</div>
1041
- <div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;src: expr_src)</div>
1042
- <div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; {</div>
1043
- <div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1ExeState.html#ab72f3bc855feeda75e11768ab03ad84e">ExeState::getInternalID</a>(src);</div>
1044
- <div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; <span class="keywordflow">if</span> (es.<a class="code" href="classSVF_1_1IntervalExeState.html#a50aee49f7f34e05f7e2cb28ae55099f8">inLocToValTable</a>(objId))</div>
1045
- <div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; {</div>
1046
- <div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; es.<a class="code" href="classSVF_1_1IntervalESBase.html#adb26b186ee31bce7449a7b36faa24cc2">store</a>(dst, es.<a class="code" href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">load</a>(src));</div>
1047
- <div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; }</div>
1048
- <div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (es.<a class="code" href="classSVF_1_1IntervalExeState.html#af61110c081ca71f9348e8dfff5aa76e4">inLocToAddrsTable</a>(objId))</div>
1049
- <div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; {</div>
1050
- <div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; es.<a class="code" href="classSVF_1_1ExeState.html#a99f4437a7e350fec131d48f52082d672">storeAddrs</a>(dst, es.<a class="code" href="classSVF_1_1IntervalExeState.html#ad17ceaf8058043151ae0f23b3415458a">loadAddrs</a>(src));</div>
1051
- <div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; }</div>
1052
- <div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; }</div>
1053
- <div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; }</div>
1054
- <div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; }</div>
1055
- <div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; }</div>
1056
- <div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;}</div>
1002
+ <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01611">1611</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
1003
+ <div class="fragment"><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;{</div>
1004
+ <div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;es = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>();</div>
1005
+ <div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dstId = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst); <span class="comment">// pts(dstId) = {objid} objbar objtypeinfo-&gt;getType().</span></div>
1006
+ <div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> srcId = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(src);</div>
1007
+ <div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
1008
+ <div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
1009
+ <div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; {</div>
1010
+ <div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>())-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1011
+ <div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; }</div>
1012
+ <div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; <span class="comment">// memcpy(i32*, i32*, 40)</span></div>
1013
+ <div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
1014
+ <div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; {</div>
1015
+ <div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemType = <a class="code" href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">getPointeeElement</a>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst)))</div>
1016
+ <div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; {</div>
1017
+ <div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; <span class="keywordflow">if</span> (elemType-&gt;isArrayTy())</div>
1018
+ <div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(elemType)-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1019
+ <div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <span class="keywordflow">else</span></div>
1020
+ <div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; elemSize = elemType-&gt;getByteSize();</div>
1021
+ <div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; }</div>
1022
+ <div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; <span class="keywordflow">else</span></div>
1023
+ <div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; {</div>
1024
+ <div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; elemSize = 1;</div>
1025
+ <div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; }</div>
1026
+ <div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; }</div>
1027
+ <div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <span class="keywordflow">else</span></div>
1028
+ <div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; {</div>
1029
+ <div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we cannot support this type&quot;</span>);</div>
1030
+ <div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; }</div>
1031
+ <div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size = std::min((<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(), (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>) len.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>());</div>
1032
+ <div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> range_val = size / elemSize;</div>
1033
+ <div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(srcId) &amp;&amp; <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(dstId))</div>
1034
+ <div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; {</div>
1035
+ <div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; range_val; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
1036
+ <div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; {</div>
1037
+ <div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <span class="comment">// dead loop for string and break if there&#39;s a \0. If no \0, it will throw err.</span></div>
1038
+ <div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> expr_src = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">getGepObjAddress</a>(srcId, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
1039
+ <div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> expr_dst = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">getGepObjAddress</a>(dstId, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> + start_idx);</div>
1040
+ <div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;dst: expr_dst)</div>
1041
+ <div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; {</div>
1042
+ <div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;src: expr_src)</div>
1043
+ <div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; {</div>
1044
+ <div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1ExeState.html#ab72f3bc855feeda75e11768ab03ad84e">ExeState::getInternalID</a>(src);</div>
1045
+ <div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; <span class="keywordflow">if</span> (es.<a class="code" href="classSVF_1_1IntervalExeState.html#a50aee49f7f34e05f7e2cb28ae55099f8">inLocToValTable</a>(objId))</div>
1046
+ <div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; {</div>
1047
+ <div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; es.<a class="code" href="classSVF_1_1IntervalESBase.html#adb26b186ee31bce7449a7b36faa24cc2">store</a>(dst, es.<a class="code" href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">load</a>(src));</div>
1048
+ <div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; }</div>
1049
+ <div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (es.<a class="code" href="classSVF_1_1IntervalExeState.html#af61110c081ca71f9348e8dfff5aa76e4">inLocToAddrsTable</a>(objId))</div>
1050
+ <div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; {</div>
1051
+ <div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; es.<a class="code" href="classSVF_1_1ExeState.html#a99f4437a7e350fec131d48f52082d672">storeAddrs</a>(dst, es.<a class="code" href="classSVF_1_1IntervalExeState.html#ad17ceaf8058043151ae0f23b3415458a">loadAddrs</a>(src));</div>
1052
+ <div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; }</div>
1053
+ <div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; }</div>
1054
+ <div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; }</div>
1055
+ <div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; }</div>
1056
+ <div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; }</div>
1057
+ <div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;}</div>
1057
1058
  </div><!-- fragment -->
1058
1059
  </div>
1059
1060
  </div>
@@ -1103,58 +1104,58 @@ Protected Attributes</h2></td></tr>
1103
1104
  </dd>
1104
1105
  </dl>
1105
1106
 
1106
- <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01684">1684</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
1107
- <div class="fragment"><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;{</div>
1108
- <div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;es = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>();</div>
1109
- <div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dstId = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst);</div>
1110
- <div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size = std::min((<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(), (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>) len.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>());</div>
1111
- <div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
1112
- <div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
1113
- <div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; {</div>
1114
- <div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>())-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1115
- <div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; }</div>
1116
- <div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
1117
- <div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; {</div>
1118
- <div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemType = <a class="code" href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">getPointeeElement</a>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst)))</div>
1119
- <div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; {</div>
1120
- <div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; elemSize = elemType-&gt;getByteSize();</div>
1121
- <div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; }</div>
1122
- <div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; <span class="keywordflow">else</span></div>
1123
- <div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; {</div>
1124
- <div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; elemSize = 1;</div>
1125
- <div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; }</div>
1126
- <div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; }</div>
1127
- <div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <span class="keywordflow">else</span></div>
1128
- <div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; {</div>
1129
- <div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we cannot support this type&quot;</span>);</div>
1130
- <div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; }</div>
1131
- <div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; </div>
1132
- <div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> range_val = size / elemSize;</div>
1133
- <div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; range_val; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
1134
- <div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; {</div>
1135
- <div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; <span class="comment">// dead loop for string and break if there&#39;s a \0. If no \0, it will throw err.</span></div>
1136
- <div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(dstId))</div>
1137
- <div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; {</div>
1138
- <div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> lhs_gep = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">getGepObjAddress</a>(dstId, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
1139
- <div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: lhs_gep)</div>
1140
- <div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; {</div>
1141
- <div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1ExeState.html#ab72f3bc855feeda75e11768ab03ad84e">ExeState::getInternalID</a>(addr);</div>
1142
- <div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; <span class="keywordflow">if</span> (es.<a class="code" href="classSVF_1_1IntervalExeState.html#a50aee49f7f34e05f7e2cb28ae55099f8">inLocToValTable</a>(objId))</div>
1143
- <div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; {</div>
1144
- <div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> tmp = es.<a class="code" href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">load</a>(addr);</div>
1145
- <div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; tmp.<a class="code" href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">join_with</a>(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(elem));</div>
1146
- <div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; es.<a class="code" href="classSVF_1_1IntervalESBase.html#adb26b186ee31bce7449a7b36faa24cc2">store</a>(addr, tmp);</div>
1147
- <div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; }</div>
1148
- <div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; <span class="keywordflow">else</span></div>
1149
- <div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; {</div>
1150
- <div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; es.<a class="code" href="classSVF_1_1IntervalESBase.html#adb26b186ee31bce7449a7b36faa24cc2">store</a>(addr, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(elem));</div>
1151
- <div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; }</div>
1152
- <div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; }</div>
1153
- <div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; }</div>
1154
- <div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="keywordflow">else</span></div>
1155
- <div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <span class="keywordflow">break</span>;</div>
1156
- <div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; }</div>
1157
- <div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;}</div>
1107
+ <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01685">1685</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
1108
+ <div class="fragment"><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;{</div>
1109
+ <div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;es = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>();</div>
1110
+ <div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dstId = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst);</div>
1111
+ <div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size = std::min((<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(), (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>) len.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>());</div>
1112
+ <div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
1113
+ <div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
1114
+ <div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; {</div>
1115
+ <div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>())-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1116
+ <div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; }</div>
1117
+ <div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
1118
+ <div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; {</div>
1119
+ <div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemType = <a class="code" href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">getPointeeElement</a>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst)))</div>
1120
+ <div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; {</div>
1121
+ <div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; elemSize = elemType-&gt;getByteSize();</div>
1122
+ <div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; }</div>
1123
+ <div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; <span class="keywordflow">else</span></div>
1124
+ <div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; {</div>
1125
+ <div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; elemSize = 1;</div>
1126
+ <div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; }</div>
1127
+ <div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; }</div>
1128
+ <div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; <span class="keywordflow">else</span></div>
1129
+ <div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; {</div>
1130
+ <div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we cannot support this type&quot;</span>);</div>
1131
+ <div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; }</div>
1132
+ <div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; </div>
1133
+ <div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> range_val = size / elemSize;</div>
1134
+ <div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; range_val; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
1135
+ <div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; {</div>
1136
+ <div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="comment">// dead loop for string and break if there&#39;s a \0. If no \0, it will throw err.</span></div>
1137
+ <div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(dstId))</div>
1138
+ <div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; {</div>
1139
+ <div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> lhs_gep = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">getGepObjAddress</a>(dstId, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
1140
+ <div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: lhs_gep)</div>
1141
+ <div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; {</div>
1142
+ <div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1ExeState.html#ab72f3bc855feeda75e11768ab03ad84e">ExeState::getInternalID</a>(addr);</div>
1143
+ <div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; <span class="keywordflow">if</span> (es.<a class="code" href="classSVF_1_1IntervalExeState.html#a50aee49f7f34e05f7e2cb28ae55099f8">inLocToValTable</a>(objId))</div>
1144
+ <div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; {</div>
1145
+ <div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> tmp = es.<a class="code" href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">load</a>(addr);</div>
1146
+ <div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; tmp.<a class="code" href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">join_with</a>(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(elem));</div>
1147
+ <div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; es.<a class="code" href="classSVF_1_1IntervalESBase.html#adb26b186ee31bce7449a7b36faa24cc2">store</a>(addr, tmp);</div>
1148
+ <div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; }</div>
1149
+ <div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="keywordflow">else</span></div>
1150
+ <div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; {</div>
1151
+ <div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; es.<a class="code" href="classSVF_1_1IntervalESBase.html#adb26b186ee31bce7449a7b36faa24cc2">store</a>(addr, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(elem));</div>
1152
+ <div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; }</div>
1153
+ <div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; }</div>
1154
+ <div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; }</div>
1155
+ <div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <span class="keywordflow">else</span></div>
1156
+ <div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; <span class="keywordflow">break</span>;</div>
1157
+ <div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; }</div>
1158
+ <div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;}</div>
1158
1159
  </div><!-- fragment -->
1159
1160
  </div>
1160
1161
  </div>
@@ -1188,41 +1189,41 @@ Protected Attributes</h2></td></tr>
1188
1189
  </dd>
1189
1190
  </dl>
1190
1191
 
1191
- <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01574">1574</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
1192
- <div class="fragment"><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;{</div>
1193
- <div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <span class="comment">// __strcat_chk, strcat, __wcscat_chk, wcscat, __strncat_chk, strncat, __wcsncat_chk, wcsncat</span></div>
1194
- <div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; <span class="comment">// to check it is strcat group or strncat group</span></div>
1195
- <div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1196
- <div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; <span class="keyword">const</span> std::vector&lt;std::string&gt; strcatGroup = {<span class="stringliteral">&quot;__strcat_chk&quot;</span>, <span class="stringliteral">&quot;strcat&quot;</span>, <span class="stringliteral">&quot;__wcscat_chk&quot;</span>, <span class="stringliteral">&quot;wcscat&quot;</span>};</div>
1197
- <div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="keyword">const</span> std::vector&lt;std::string&gt; strncatGroup = {<span class="stringliteral">&quot;__strncat_chk&quot;</span>, <span class="stringliteral">&quot;strncat&quot;</span>, <span class="stringliteral">&quot;__wcsncat_chk&quot;</span>, <span class="stringliteral">&quot;wcsncat&quot;</span>};</div>
1198
- <div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; <span class="keywordflow">if</span> (std::find(strcatGroup.begin(), strcatGroup.end(), fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()) != strcatGroup.end())</div>
1199
- <div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; {</div>
1200
- <div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1201
- <div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg0Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0);</div>
1202
- <div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg1Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1);</div>
1203
- <div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> strLen0 = <a class="code" href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">getStrlen</a>(arg0Val);</div>
1204
- <div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> strLen1 = <a class="code" href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">getStrlen</a>(arg1Val);</div>
1205
- <div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> totalLen = strLen0 + strLen1;</div>
1206
- <div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <a class="code" href="classSVF_1_1AEAPI.html#ae0847fb421538982bfd50cc280d1a65b">handleMemcpy</a>(arg0Val, arg1Val, strLen1, strLen0.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>());</div>
1207
- <div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; <span class="comment">// do memcpy</span></div>
1208
- <div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; }</div>
1209
- <div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (std::find(strncatGroup.begin(), strncatGroup.end(), fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()) != strncatGroup.end())</div>
1210
- <div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; {</div>
1211
- <div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1212
- <div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg0Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0);</div>
1213
- <div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg1Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1);</div>
1214
- <div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg2Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(2);</div>
1215
- <div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> arg2Num = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>()[<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg2Val)];</div>
1216
- <div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> strLen0 = <a class="code" href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">getStrlen</a>(arg0Val);</div>
1217
- <div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> totalLen = strLen0 + arg2Num;</div>
1218
- <div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; <a class="code" href="classSVF_1_1AEAPI.html#ae0847fb421538982bfd50cc280d1a65b">handleMemcpy</a>(arg0Val, arg1Val, arg2Num, strLen0.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>());</div>
1219
- <div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; <span class="comment">// do memcpy</span></div>
1220
- <div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; }</div>
1221
- <div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; <span class="keywordflow">else</span></div>
1222
- <div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; {</div>
1223
- <div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unknown strcat function, please add it to strcatGroup or strncatGroup&quot;</span>);</div>
1224
- <div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; }</div>
1225
- <div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;}</div>
1192
+ <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01575">1575</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
1193
+ <div class="fragment"><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;{</div>
1194
+ <div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; <span class="comment">// __strcat_chk, strcat, __wcscat_chk, wcscat, __strncat_chk, strncat, __wcsncat_chk, wcsncat</span></div>
1195
+ <div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <span class="comment">// to check it is strcat group or strncat group</span></div>
1196
+ <div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1197
+ <div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="keyword">const</span> std::vector&lt;std::string&gt; strcatGroup = {<span class="stringliteral">&quot;__strcat_chk&quot;</span>, <span class="stringliteral">&quot;strcat&quot;</span>, <span class="stringliteral">&quot;__wcscat_chk&quot;</span>, <span class="stringliteral">&quot;wcscat&quot;</span>};</div>
1198
+ <div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; <span class="keyword">const</span> std::vector&lt;std::string&gt; strncatGroup = {<span class="stringliteral">&quot;__strncat_chk&quot;</span>, <span class="stringliteral">&quot;strncat&quot;</span>, <span class="stringliteral">&quot;__wcsncat_chk&quot;</span>, <span class="stringliteral">&quot;wcsncat&quot;</span>};</div>
1199
+ <div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <span class="keywordflow">if</span> (std::find(strcatGroup.begin(), strcatGroup.end(), fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()) != strcatGroup.end())</div>
1200
+ <div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; {</div>
1201
+ <div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1202
+ <div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg0Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0);</div>
1203
+ <div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg1Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1);</div>
1204
+ <div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> strLen0 = <a class="code" href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">getStrlen</a>(arg0Val);</div>
1205
+ <div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> strLen1 = <a class="code" href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">getStrlen</a>(arg1Val);</div>
1206
+ <div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> totalLen = strLen0 + strLen1;</div>
1207
+ <div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; <a class="code" href="classSVF_1_1AEAPI.html#ae0847fb421538982bfd50cc280d1a65b">handleMemcpy</a>(arg0Val, arg1Val, strLen1, strLen0.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>());</div>
1208
+ <div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; <span class="comment">// do memcpy</span></div>
1209
+ <div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; }</div>
1210
+ <div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (std::find(strncatGroup.begin(), strncatGroup.end(), fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()) != strncatGroup.end())</div>
1211
+ <div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; {</div>
1212
+ <div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1213
+ <div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg0Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0);</div>
1214
+ <div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg1Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1);</div>
1215
+ <div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg2Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(2);</div>
1216
+ <div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> arg2Num = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>()[<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg2Val)];</div>
1217
+ <div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> strLen0 = <a class="code" href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">getStrlen</a>(arg0Val);</div>
1218
+ <div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> totalLen = strLen0 + arg2Num;</div>
1219
+ <div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; <a class="code" href="classSVF_1_1AEAPI.html#ae0847fb421538982bfd50cc280d1a65b">handleMemcpy</a>(arg0Val, arg1Val, arg2Num, strLen0.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>());</div>
1220
+ <div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; <span class="comment">// do memcpy</span></div>
1221
+ <div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; }</div>
1222
+ <div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; <span class="keywordflow">else</span></div>
1223
+ <div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; {</div>
1224
+ <div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unknown strcat function, please add it to strcatGroup or strncatGroup&quot;</span>);</div>
1225
+ <div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; }</div>
1226
+ <div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;}</div>
1226
1227
  </div><!-- fragment -->
1227
1228
  </div>
1228
1229
  </div>
@@ -1482,130 +1483,130 @@ Protected Attributes</h2></td></tr>
1482
1483
  <p>Usually called by a <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> overflow check, or external API (like memcpy) overflow check Defitions of Terms: source node: malloc or gepStmt(array), sink node: gepStmt or external API (like memcpy) it tracks the value flow from sink to source, and accumulates offset then compare the accumulated offset and malloc size (or gepStmt array size)</p>
1483
1484
  <p>CallNode means Source Node</p>
1484
1485
 
1485
- <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01388">1388</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
1486
- <div class="fragment"><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;{</div>
1487
- <div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; <a class="code" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList&lt;const SVFValue *&gt;</a> worklist;</div>
1488
- <div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFValue *&gt;</a> visited;</div>
1489
- <div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; visited.insert(value);</div>
1490
- <div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const ICFGNode *, IntervalValue&gt;</a> gep_offsets;</div>
1491
- <div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(value);</div>
1492
- <div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> total_bytes(0);</div>
1493
- <div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#a071a624c91def82a4bbbf3806c7b7eea">empty</a>())</div>
1494
- <div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; {</div>
1495
- <div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; value = worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#a3fd9acb6d09fd142bfd402fdf8cac93b">pop</a>();</div>
1496
- <div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* ins = SVFUtil::dyn_cast&lt;SVFInstruction&gt;(value))</div>
1497
- <div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; {</div>
1498
- <div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(ins);</div>
1499
- <div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callnode = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(node))</div>
1500
- <div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; {</div>
1501
- <div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="comment">//to handle Ret PE</span></div>
1502
- <div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <a class="code" href="classSVF_1_1AEAPI.html#a7be3da80bedb1077a99d67daa124afde">AccessMemoryViaRetNode</a>(callnode, worklist, visited);</div>
1503
- <div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; }</div>
1504
- <div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: node-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
1505
- <div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; {</div>
1506
- <div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyStmt&gt;(stmt))</div>
1507
- <div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; {</div>
1508
- <div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <span class="comment">// Copy Stmt, forward to lhs</span></div>
1509
- <div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <a class="code" href="classSVF_1_1AEAPI.html#a3665513f6e8f8b93ef3f9d273d03ee70">AccessMemoryViaCopyStmt</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>, worklist, visited);</div>
1510
- <div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; }</div>
1511
- <div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load = SVFUtil::dyn_cast&lt;LoadStmt&gt;(stmt))</div>
1512
- <div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; {</div>
1513
- <div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; <span class="comment">// Load Stmt, forward to the Var from last Store Stmt</span></div>
1514
- <div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <a class="code" href="classSVF_1_1AEAPI.html#afa34cb2ee3fc1ca5aa04a2afe7c2d6e8">AccessMemoryViaLoadStmt</a>(load, worklist, visited);</div>
1515
- <div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; }</div>
1516
- <div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep = SVFUtil::dyn_cast&lt;GepStmt&gt;(stmt))</div>
1517
- <div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; {</div>
1518
- <div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="comment">// there are 3 type of gepStmt</span></div>
1519
- <div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <span class="comment">// 1. ptr get offset</span></div>
1520
- <div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; <span class="comment">// 2. struct get field</span></div>
1521
- <div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; <span class="comment">// 3. array get element</span></div>
1522
- <div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <span class="comment">// for array gep, there are two kind of overflow checking</span></div>
1523
- <div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; <span class="comment">// Arr [Struct.C * 10] arr, Struct.C {i32 a, i32 b}</span></div>
1524
- <div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; <span class="comment">// arr[11].a = **, it is &quot;lhs = gep *arr, 0 (ptr), 11 (arrIdx), 0 (ptr), 0(struct field)&quot;</span></div>
1525
- <div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="comment">// 1) in this case arrIdx 11 is overflow.</span></div>
1526
- <div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; <span class="comment">// Other case,</span></div>
1527
- <div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="comment">// Struct.C {i32 a, [i32*10] b, i32 c}, C.b[11] = 1</span></div>
1528
- <div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; <span class="comment">// it is &quot;lhs - gep *C, 0(ptr), 1(struct field), 0(ptr), 11(arrIdx)&quot;</span></div>
1529
- <div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="comment">// 2) in this case arrIdx 11 is larger than its getOffsetVar.Type Array([i32*10])</span></div>
1530
- <div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; </div>
1531
- <div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; <span class="comment">// therefore, if last getOffsetVar.Type is not the Array, just check the overall offset and its</span></div>
1532
- <div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <span class="comment">// gep source type size (together with totalOffset along the value flow).</span></div>
1533
- <div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="comment">// Alloc Size: TBD, but totalOffset + current Gep offset</span></div>
1534
- <div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; </div>
1535
- <div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <span class="comment">// otherwise, if last getOffsetVar.Type is the Array, check the last idx and array. (just offset,</span></div>
1536
- <div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <span class="comment">// not with totalOffset during check)</span></div>
1537
- <div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; <span class="comment">// Alloc Size: getOffsetVar.TypeByteSize()</span></div>
1538
- <div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; </div>
1539
- <div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; <span class="comment">// make sure it has OffsetVarAndGepType Pair</span></div>
1540
- <div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; <span class="keywordflow">if</span> (gep-&gt;getOffsetVarAndGepTypePairVec().size() &gt; 0)</div>
1541
- <div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; {</div>
1542
- <div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; <span class="comment">// check if last OffsetVarAndGepType Pair is Array</span></div>
1543
- <div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* gepType = gep-&gt;getOffsetVarAndGepTypePairVec().back().second;</div>
1544
- <div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <span class="comment">// if its array</span></div>
1545
- <div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keywordflow">if</span> (gepType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
1546
- <div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; {</div>
1547
- <div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs_type_bytes = gepType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
1548
- <div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; <span class="comment">// if gepStmt&#39;s base var is Array, compares offset with the arraysize</span></div>
1549
- <div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(rhs_type_bytes);</div>
1550
- <div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; }</div>
1551
- <div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; <span class="keywordflow">else</span></div>
1552
- <div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; {</div>
1553
- <div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> byteOffset;</div>
1554
- <div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <span class="keywordflow">if</span> (gep-&gt;isConstantOffset())</div>
1555
- <div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; {</div>
1556
- <div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; byteOffset = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(gep-&gt;accumulateConstantByteOffset());</div>
1557
- <div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; }</div>
1558
- <div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; <span class="keywordflow">else</span></div>
1559
- <div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; {</div>
1560
- <div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> byteOffset = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e">getByteOffset</a>(gep);</div>
1561
- <div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; }</div>
1562
- <div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="comment">// for variable offset, join with accumulate gep offset</span></div>
1563
- <div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; gep_offsets[gep-&gt;getICFGNode()] = byteOffset;</div>
1564
- <div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; total_bytes = total_bytes + byteOffset;</div>
1565
- <div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; }</div>
1566
- <div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; }</div>
1567
- <div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <span class="keywordflow">if</span> (!visited.count(gep-&gt;getRHSVar()-&gt;getValue()))</div>
1568
- <div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; {</div>
1569
- <div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; visited.insert(gep-&gt;getRHSVar()-&gt;getValue());</div>
1570
- <div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(gep-&gt;getRHSVar()-&gt;getValue());</div>
1571
- <div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; }</div>
1572
- <div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; }</div>
1573
- <div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr = SVFUtil::dyn_cast&lt;AddrStmt&gt;(stmt))</div>
1574
- <div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; {</div>
1575
- <div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; <span class="comment">// addrStmt is source node.</span></div>
1576
- <div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> arr_type_size = <a class="code" href="classSVF_1_1AEAPI.html#afe6d49fd36a96bda165654eb393be6f2">getAllocaInstByteSize</a>(addr);</div>
1577
- <div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(arr_type_size) - total_bytes;</div>
1578
- <div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; }</div>
1579
- <div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; }</div>
1580
- <div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; }</div>
1581
- <div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVF::SVFGlobalValue</a>* gvalue = SVFUtil::dyn_cast&lt;SVF::SVFGlobalValue&gt;(value))</div>
1582
- <div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; {</div>
1583
- <div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> arr_type_size = 0;</div>
1584
- <div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype = gvalue-&gt;getType();</div>
1585
- <div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(svftype))</div>
1586
- <div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; {</div>
1587
- <div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>* ptrArrType = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(<a class="code" href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">getPointeeElement</a>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(value))))</div>
1588
- <div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; arr_type_size = ptrArrType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
1589
- <div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; <span class="keywordflow">else</span></div>
1590
- <div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; arr_type_size = svftype-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
1591
- <div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; }</div>
1592
- <div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; <span class="keywordflow">else</span></div>
1593
- <div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; arr_type_size = svftype-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
1594
- <div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(arr_type_size) - total_bytes;</div>
1595
- <div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; }</div>
1596
- <div class="line"><a name="l01505"></a><span class="lineno"> 1505</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">SVF::SVFArgument</a>* arg = SVFUtil::dyn_cast&lt;SVF::SVFArgument&gt;(value))</div>
1597
- <div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; {</div>
1598
- <div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="comment">// to handle call PE</span></div>
1599
- <div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <a class="code" href="classSVF_1_1AEAPI.html#ac49859a7848fbef0e29492e95b031f1f">AccessMemoryViaCallArgs</a>(arg, worklist, visited);</div>
1600
- <div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; }</div>
1601
- <div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; <span class="keywordflow">else</span></div>
1602
- <div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; {</div>
1603
- <div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; <span class="comment">// maybe SVFConstant</span></div>
1604
- <div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
1605
- <div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; }</div>
1606
- <div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; }</div>
1607
- <div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
1608
- <div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;}</div>
1486
+ <p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l01389">1389</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
1487
+ <div class="fragment"><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;{</div>
1488
+ <div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; <a class="code" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList&lt;const SVFValue *&gt;</a> worklist;</div>
1489
+ <div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFValue *&gt;</a> visited;</div>
1490
+ <div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; visited.insert(value);</div>
1491
+ <div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const ICFGNode *, IntervalValue&gt;</a> gep_offsets;</div>
1492
+ <div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(value);</div>
1493
+ <div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> total_bytes(0);</div>
1494
+ <div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#a071a624c91def82a4bbbf3806c7b7eea">empty</a>())</div>
1495
+ <div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; {</div>
1496
+ <div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; value = worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#a3fd9acb6d09fd142bfd402fdf8cac93b">pop</a>();</div>
1497
+ <div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* ins = SVFUtil::dyn_cast&lt;SVFInstruction&gt;(value))</div>
1498
+ <div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; {</div>
1499
+ <div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(ins);</div>
1500
+ <div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callnode = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(node))</div>
1501
+ <div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; {</div>
1502
+ <div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <span class="comment">//to handle Ret PE</span></div>
1503
+ <div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <a class="code" href="classSVF_1_1AEAPI.html#a7be3da80bedb1077a99d67daa124afde">AccessMemoryViaRetNode</a>(callnode, worklist, visited);</div>
1504
+ <div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; }</div>
1505
+ <div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: node-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
1506
+ <div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; {</div>
1507
+ <div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyStmt&gt;(stmt))</div>
1508
+ <div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; {</div>
1509
+ <div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <span class="comment">// Copy Stmt, forward to lhs</span></div>
1510
+ <div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <a class="code" href="classSVF_1_1AEAPI.html#a3665513f6e8f8b93ef3f9d273d03ee70">AccessMemoryViaCopyStmt</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>, worklist, visited);</div>
1511
+ <div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; }</div>
1512
+ <div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load = SVFUtil::dyn_cast&lt;LoadStmt&gt;(stmt))</div>
1513
+ <div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; {</div>
1514
+ <div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <span class="comment">// Load Stmt, forward to the Var from last Store Stmt</span></div>
1515
+ <div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <a class="code" href="classSVF_1_1AEAPI.html#afa34cb2ee3fc1ca5aa04a2afe7c2d6e8">AccessMemoryViaLoadStmt</a>(load, worklist, visited);</div>
1516
+ <div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; }</div>
1517
+ <div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep = SVFUtil::dyn_cast&lt;GepStmt&gt;(stmt))</div>
1518
+ <div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; {</div>
1519
+ <div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <span class="comment">// there are 3 type of gepStmt</span></div>
1520
+ <div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; <span class="comment">// 1. ptr get offset</span></div>
1521
+ <div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; <span class="comment">// 2. struct get field</span></div>
1522
+ <div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <span class="comment">// 3. array get element</span></div>
1523
+ <div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; <span class="comment">// for array gep, there are two kind of overflow checking</span></div>
1524
+ <div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; <span class="comment">// Arr [Struct.C * 10] arr, Struct.C {i32 a, i32 b}</span></div>
1525
+ <div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="comment">// arr[11].a = **, it is &quot;lhs = gep *arr, 0 (ptr), 11 (arrIdx), 0 (ptr), 0(struct field)&quot;</span></div>
1526
+ <div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; <span class="comment">// 1) in this case arrIdx 11 is overflow.</span></div>
1527
+ <div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="comment">// Other case,</span></div>
1528
+ <div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; <span class="comment">// Struct.C {i32 a, [i32*10] b, i32 c}, C.b[11] = 1</span></div>
1529
+ <div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="comment">// it is &quot;lhs - gep *C, 0(ptr), 1(struct field), 0(ptr), 11(arrIdx)&quot;</span></div>
1530
+ <div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; <span class="comment">// 2) in this case arrIdx 11 is larger than its getOffsetVar.Type Array([i32*10])</span></div>
1531
+ <div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; </div>
1532
+ <div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <span class="comment">// therefore, if last getOffsetVar.Type is not the Array, just check the overall offset and its</span></div>
1533
+ <div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="comment">// gep source type size (together with totalOffset along the value flow).</span></div>
1534
+ <div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; <span class="comment">// Alloc Size: TBD, but totalOffset + current Gep offset</span></div>
1535
+ <div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; </div>
1536
+ <div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <span class="comment">// otherwise, if last getOffsetVar.Type is the Array, check the last idx and array. (just offset,</span></div>
1537
+ <div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; <span class="comment">// not with totalOffset during check)</span></div>
1538
+ <div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="comment">// Alloc Size: getOffsetVar.TypeByteSize()</span></div>
1539
+ <div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; </div>
1540
+ <div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; <span class="comment">// make sure it has OffsetVarAndGepType Pair</span></div>
1541
+ <div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">if</span> (gep-&gt;getOffsetVarAndGepTypePairVec().size() &gt; 0)</div>
1542
+ <div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; {</div>
1543
+ <div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="comment">// check if last OffsetVarAndGepType Pair is Array</span></div>
1544
+ <div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* gepType = gep-&gt;getOffsetVarAndGepTypePairVec().back().second;</div>
1545
+ <div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="comment">// if its array</span></div>
1546
+ <div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <span class="keywordflow">if</span> (gepType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
1547
+ <div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; {</div>
1548
+ <div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs_type_bytes = gepType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
1549
+ <div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; <span class="comment">// if gepStmt&#39;s base var is Array, compares offset with the arraysize</span></div>
1550
+ <div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(rhs_type_bytes);</div>
1551
+ <div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; }</div>
1552
+ <div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; <span class="keywordflow">else</span></div>
1553
+ <div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; {</div>
1554
+ <div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> byteOffset;</div>
1555
+ <div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keywordflow">if</span> (gep-&gt;isConstantOffset())</div>
1556
+ <div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; {</div>
1557
+ <div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; byteOffset = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(gep-&gt;accumulateConstantByteOffset());</div>
1558
+ <div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; }</div>
1559
+ <div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <span class="keywordflow">else</span></div>
1560
+ <div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; {</div>
1561
+ <div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> byteOffset = <a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>-&gt;<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e">getByteOffset</a>(gep);</div>
1562
+ <div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; }</div>
1563
+ <div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; <span class="comment">// for variable offset, join with accumulate gep offset</span></div>
1564
+ <div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; gep_offsets[gep-&gt;getICFGNode()] = byteOffset;</div>
1565
+ <div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; total_bytes = total_bytes + byteOffset;</div>
1566
+ <div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; }</div>
1567
+ <div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; }</div>
1568
+ <div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; <span class="keywordflow">if</span> (!visited.count(gep-&gt;getRHSVar()-&gt;getValue()))</div>
1569
+ <div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; {</div>
1570
+ <div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; visited.insert(gep-&gt;getRHSVar()-&gt;getValue());</div>
1571
+ <div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(gep-&gt;getRHSVar()-&gt;getValue());</div>
1572
+ <div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; }</div>
1573
+ <div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; }</div>
1574
+ <div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr = SVFUtil::dyn_cast&lt;AddrStmt&gt;(stmt))</div>
1575
+ <div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; {</div>
1576
+ <div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <span class="comment">// addrStmt is source node.</span></div>
1577
+ <div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> arr_type_size = <a class="code" href="classSVF_1_1AEAPI.html#afe6d49fd36a96bda165654eb393be6f2">getAllocaInstByteSize</a>(addr);</div>
1578
+ <div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(arr_type_size) - total_bytes;</div>
1579
+ <div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; }</div>
1580
+ <div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; }</div>
1581
+ <div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; }</div>
1582
+ <div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVF::SVFGlobalValue</a>* gvalue = SVFUtil::dyn_cast&lt;SVF::SVFGlobalValue&gt;(value))</div>
1583
+ <div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; {</div>
1584
+ <div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> arr_type_size = 0;</div>
1585
+ <div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype = gvalue-&gt;getType();</div>
1586
+ <div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(svftype))</div>
1587
+ <div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; {</div>
1588
+ <div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>* ptrArrType = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(<a class="code" href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">getPointeeElement</a>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(value))))</div>
1589
+ <div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; arr_type_size = ptrArrType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
1590
+ <div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; <span class="keywordflow">else</span></div>
1591
+ <div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; arr_type_size = svftype-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
1592
+ <div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; }</div>
1593
+ <div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keywordflow">else</span></div>
1594
+ <div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; arr_type_size = svftype-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
1595
+ <div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(arr_type_size) - total_bytes;</div>
1596
+ <div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; }</div>
1597
+ <div class="line"><a name="l01506"></a><span class="lineno"> 1506</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">SVF::SVFArgument</a>* arg = SVFUtil::dyn_cast&lt;SVF::SVFArgument&gt;(value))</div>
1598
+ <div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; {</div>
1599
+ <div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <span class="comment">// to handle call PE</span></div>
1600
+ <div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; <a class="code" href="classSVF_1_1AEAPI.html#ac49859a7848fbef0e29492e95b031f1f">AccessMemoryViaCallArgs</a>(arg, worklist, visited);</div>
1601
+ <div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; }</div>
1602
+ <div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; <span class="keywordflow">else</span></div>
1603
+ <div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; {</div>
1604
+ <div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <span class="comment">// maybe SVFConstant</span></div>
1605
+ <div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
1606
+ <div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; }</div>
1607
+ <div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; }</div>
1608
+ <div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
1609
+ <div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;}</div>
1609
1610
  </div><!-- fragment -->
1610
1611
  </div>
1611
1612
  </div>
@@ -1803,7 +1804,7 @@ Protected Attributes</h2></td></tr>
1803
1804
  <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a8380eb5e2424c8c7bd290962f04a17ba"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a8380eb5e2424c8c7bd290962f04a17ba">SVF::SVFIR2ItvExeState::inVarToValTable</a></div><div class="ttdeci">bool inVarToValTable(u32_t id) const</div><div class="ttdoc">whether the variable is in varToVal table</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8h_source.html#l00117">SVFIR2ItvExeState.h:117</a></div></div>
1804
1805
  <div class="ttc" id="aclassSVF_1_1AEAPI_html_ad364ccca2d91efa83263fad7ed196361"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ad364ccca2d91efa83263fad7ed196361">SVF::AEAPI::_checkpoints</a></div><div class="ttdeci">Set&lt; const CallICFGNode * &gt; _checkpoints</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00434">AbstractExecution.h:434</a></div></div>
1805
1806
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
1806
- <div class="ttc" id="aclassSVF_1_1AEAPI_html_a4d160903c3bbedbd486be39c40c2c836"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a4d160903c3bbedbd486be39c40c2c836">SVF::AEAPI::handleStrcat</a></div><div class="ttdeci">virtual void handleStrcat(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01574">AbstractExecution.cpp:1574</a></div></div>
1807
+ <div class="ttc" id="aclassSVF_1_1AEAPI_html_a4d160903c3bbedbd486be39c40c2c836"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a4d160903c3bbedbd486be39c40c2c836">SVF::AEAPI::handleStrcat</a></div><div class="ttdeci">virtual void handleStrcat(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01575">AbstractExecution.cpp:1575</a></div></div>
1807
1808
  <div class="ttc" id="aclassSVF_1_1AEAPI_html_a29ab312d273e6c9c32a40d61861afb04ab8167323edeff68403cf4ceb7e8133d9"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04ab8167323edeff68403cf4ceb7e8133d9">SVF::AEAPI::STRCAT</a></div><div class="ttdeci">@ STRCAT</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00289">AbstractExecution.h:289</a></div></div>
1808
1809
  <div class="ttc" id="aclassSVF_1_1IntervalExeState_html_aab316a63c25483eefc38bed0a86a0e7e"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html#aab316a63c25483eefc38bed0a86a0e7e">SVF::IntervalExeState::inVarToValTable</a></div><div class="ttdeci">bool inVarToValTable(u32_t id) const override</div><div class="ttdoc">whether the variable is in varToVal table</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00483">IntervalExeState.h:483</a></div></div>
1809
1810
  <div class="ttc" id="anamespaceSVF_html_a41375daa7cc99317d0aa2a21dc643b88a53d18d0ea8b11173db3d2f60f838ffe1"><div class="ttname"><a href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88a53d18d0ea8b11173db3d2f60f838ffe1">SVF::AEKind::AbstractExecution</a></div><div class="ttdeci">@ AbstractExecution</div></div>
@@ -1819,7 +1820,7 @@ Protected Attributes</h2></td></tr>
1819
1820
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a330084f9a3deb6e5acb52a8ee3eb7fe4"><div class="ttname"><a href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">SVF::SVFType::isArrayTy</a></div><div class="ttdeci">bool isArrayTy() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00254">SVFType.h:254</a></div></div>
1820
1821
  <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>
1821
1822
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a5d73cc2aa0a6ed49e8301fa7b0cd5045"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a5d73cc2aa0a6ed49e8301fa7b0cd5045">SVF::IntervalValue::toString</a></div><div class="ttdeci">const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00441">IntervalValue.h:441</a></div></div>
1822
- <div class="ttc" id="aclassSVF_1_1AEAPI_html_ac49859a7848fbef0e29492e95b031f1f"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ac49859a7848fbef0e29492e95b031f1f">SVF::AEAPI::AccessMemoryViaCallArgs</a></div><div class="ttdeci">void AccessMemoryViaCallArgs(const SVF::SVFArgument *arg, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01793">AbstractExecution.cpp:1793</a></div></div>
1823
+ <div class="ttc" id="aclassSVF_1_1AEAPI_html_ac49859a7848fbef0e29492e95b031f1f"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ac49859a7848fbef0e29492e95b031f1f">SVF::AEAPI::AccessMemoryViaCallArgs</a></div><div class="ttdeci">void AccessMemoryViaCallArgs(const SVF::SVFArgument *arg, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01794">AbstractExecution.cpp:1794</a></div></div>
1823
1824
  <div class="ttc" id="aclassSVF_1_1IntervalESBase_html_ab5d7ac23f8334fa32ae0a78c8f1d9fa9"><div class="ttname"><a href="classSVF_1_1IntervalESBase.html#ab5d7ac23f8334fa32ae0a78c8f1d9fa9">SVF::IntervalESBase::toString</a></div><div class="ttdeci">std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00317">IntervalExeState.h:317</a></div></div>
1824
1825
  <div class="ttc" id="aclassSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00558">SVFStatements.h:558</a></div></div>
1825
1826
  <div class="ttc" id="aclassSVF_1_1AEAPI_html_a3df0f1b34893f44904dce62e6641a58e"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a3df0f1b34893f44904dce62e6641a58e">SVF::AEAPI::strRead</a></div><div class="ttdeci">std::string strRead(const SVFValue *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01211">AbstractExecution.cpp:1211</a></div></div>
@@ -1828,7 +1829,7 @@ Protected Attributes</h2></td></tr>
1828
1829
  <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a48fec38aad1c2a9a140ee94e9fdd7e9b"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a48fec38aad1c2a9a140ee94e9fdd7e9b">SVF::SVFIR2ItvExeState::getAddrs</a></div><div class="ttdeci">Addrs &amp; getAddrs(u32_t id)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8h_source.html#l00107">SVFIR2ItvExeState.h:107</a></div></div>
1829
1830
  <div class="ttc" id="aclassSVF_1_1AEAPI_html_afed1d221bdb876046ec036f1cae53fd3"><div class="ttname"><a href="classSVF_1_1AEAPI.html#afed1d221bdb876046ec036f1cae53fd3">SVF::AEAPI::_stat</a></div><div class="ttdeci">AEStat * _stat</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00428">AbstractExecution.h:428</a></div></div>
1830
1831
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a523826aede7ad22736beed0c8223b6b0"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a523826aede7ad22736beed0c8223b6b0">SVF::IntervalValue::is_numeral</a></div><div class="ttdeci">bool is_numeral() const</div><div class="ttdoc">Return true if the IntervalValue is a number [num, num].</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00270">IntervalValue.h:270</a></div></div>
1831
- <div class="ttc" id="aclassSVF_1_1AEAPI_html_afa34cb2ee3fc1ca5aa04a2afe7c2d6e8"><div class="ttname"><a href="classSVF_1_1AEAPI.html#afa34cb2ee3fc1ca5aa04a2afe7c2d6e8">SVF::AEAPI::AccessMemoryViaLoadStmt</a></div><div class="ttdeci">void AccessMemoryViaLoadStmt(const LoadStmt *load, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01773">AbstractExecution.cpp:1773</a></div></div>
1832
+ <div class="ttc" id="aclassSVF_1_1AEAPI_html_afa34cb2ee3fc1ca5aa04a2afe7c2d6e8"><div class="ttname"><a href="classSVF_1_1AEAPI.html#afa34cb2ee3fc1ca5aa04a2afe7c2d6e8">SVF::AEAPI::AccessMemoryViaLoadStmt</a></div><div class="ttdeci">void AccessMemoryViaLoadStmt(const LoadStmt *load, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01774">AbstractExecution.cpp:1774</a></div></div>
1832
1833
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html_a067bd6dbaf74a028d546fa56b095791b"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">SVF::SVFFunction::getAnnotations</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; &amp; getAnnotations() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00466">SVFValue.h:466</a></div></div>
1833
1834
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00241">SVFUtil.h:241</a></div></div>
1834
1835
  <div class="ttc" id="aclassSVF_1_1ValVar_html"><div class="ttname"><a href="classSVF_1_1ValVar.html">SVF::ValVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00262">SVFVariables.h:262</a></div></div>
@@ -1838,19 +1839,19 @@ Protected Attributes</h2></td></tr>
1838
1839
  <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a66c426719f583653cb70189f01d6fda5"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a66c426719f583653cb70189f01d6fda5">SVF::SVFIR2ItvExeState::getInternalID</a></div><div class="ttdeci">static u32_t getInternalID(u32_t idx)</div><div class="ttdoc">Return the internal index if idx is an address otherwise return the value of idx.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8h_source.html#l00166">SVFIR2ItvExeState.h:166</a></div></div>
1839
1840
  <div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00177">SVFValue.h:177</a></div></div>
1840
1841
  <div class="ttc" id="aextapi_8c_html_adadd6582d46775aab6a51e29d16d9f77"><div class="ttname"><a href="extapi_8c.html#adadd6582d46775aab6a51e29d16d9f77">isupper</a></div><div class="ttdeci">int isupper(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00882">extapi.c:882</a></div></div>
1841
- <div class="ttc" id="aclassSVF_1_1AEAPI_html_ae0519df0b6927a2d077c3d46beeaa9f7"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">SVF::AEAPI::getStrlen</a></div><div class="ttdeci">IntervalValue getStrlen(const SVF::SVFValue *strValue)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01520">AbstractExecution.cpp:1520</a></div></div>
1842
+ <div class="ttc" id="aclassSVF_1_1AEAPI_html_ae0519df0b6927a2d077c3d46beeaa9f7"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">SVF::AEAPI::getStrlen</a></div><div class="ttdeci">IntervalValue getStrlen(const SVF::SVFValue *strValue)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01521">AbstractExecution.cpp:1521</a></div></div>
1842
1843
  <div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
1843
1844
  <div class="ttc" id="aclassSVF_1_1SVFArrayType_html"><div class="ttname"><a href="classSVF_1_1SVFArrayType.html">SVF::SVFArrayType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00377">SVFType.h:377</a></div></div>
1844
1845
  <div class="ttc" id="aclassSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00385">ICFGNode.h:385</a></div></div>
1845
1846
  <div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00156">SVFType.h:156</a></div></div>
1846
1847
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_a747b2c92c81d32fcd357e80d2d8fe7cc"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">SVF::SVFVar::hasIncomingEdges</a></div><div class="ttdeci">bool hasIncomingEdges(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Has incoming SVFIR statements (edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00158">SVFVariables.h:158</a></div></div>
1847
1848
  <div class="ttc" id="aAbstractExecution_8cpp_html_a6ded577f411d8dd34071fba96989f93a"><div class="ttname"><a href="AbstractExecution_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a></div><div class="ttdeci">#define SSE_FUNC_PROCESS(LLVM_NAME,FUNC_NAME)</div></div>
1848
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a335922caf105ee72cd9d66a451ae3d4e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e">SVF::SVFIR2ItvExeState::getByteOffset</a></div><div class="ttdeci">IntervalValue getByteOffset(const GepStmt *gep)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00274">SVFIR2ItvExeState.cpp:274</a></div></div>
1849
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a335922caf105ee72cd9d66a451ae3d4e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e">SVF::SVFIR2ItvExeState::getByteOffset</a></div><div class="ttdeci">IntervalValue getByteOffset(const GepStmt *gep)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00275">SVFIR2ItvExeState.cpp:275</a></div></div>
1849
1850
  <div class="ttc" id="aclassSVF_1_1AEAPI_html_a29ab312d273e6c9c32a40d61861afb04a68863d4626b3cde194a0fa6da74a3313"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a68863d4626b3cde194a0fa6da74a3313">SVF::AEAPI::MEMSET</a></div><div class="ttdeci">@ MEMSET</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00289">AbstractExecution.h:289</a></div></div>
1850
1851
  <div class="ttc" id="aclassSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node.</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00092">ICFG.h:92</a></div></div>
1851
1852
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00297">SVFValue.h:297</a></div></div>
1852
1853
  <div class="ttc" id="aextapi_8c_html_a9d60842d6ae065229ba810e6b01110da"><div class="ttname"><a href="extapi_8c.html#a9d60842d6ae065229ba810e6b01110da">ispunct</a></div><div class="ttdeci">int ispunct(int argument)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00872">extapi.c:872</a></div></div>
1853
- <div class="ttc" id="aclassSVF_1_1AEAPI_html_a7be3da80bedb1077a99d67daa124afde"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a7be3da80bedb1077a99d67daa124afde">SVF::AEAPI::AccessMemoryViaRetNode</a></div><div class="ttdeci">void AccessMemoryViaRetNode(const CallICFGNode *callnode, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01739">AbstractExecution.cpp:1739</a></div></div>
1854
+ <div class="ttc" id="aclassSVF_1_1AEAPI_html_a7be3da80bedb1077a99d67daa124afde"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a7be3da80bedb1077a99d67daa124afde">SVF::AEAPI::AccessMemoryViaRetNode</a></div><div class="ttdeci">void AccessMemoryViaRetNode(const CallICFGNode *callnode, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01740">AbstractExecution.cpp:1740</a></div></div>
1854
1855
  <div class="ttc" id="aclassSVF_1_1FILOWorkList_html_afcf3fcda18e8d3e2bad70a51376c0ce1"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">SVF::FILOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00257">WorkList.h:257</a></div></div>
1855
1856
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_adac2dc2c9f744a071ad3f0175ed40cd9"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">SVF::IntervalValue::ub</a></div><div class="ttdeci">const NumericLiteral &amp; ub() const</div><div class="ttdoc">Return the upper bound.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00225">IntervalValue.h:225</a></div></div>
1856
1857
  <div class="ttc" id="aclassSVF_1_1SVFGlobalValue_html"><div class="ttname"><a href="classSVF_1_1SVFGlobalValue.html">SVF::SVFGlobalValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00856">SVFValue.h:856</a></div></div>
@@ -1865,14 +1866,14 @@ Protected Attributes</h2></td></tr>
1865
1866
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_ad03d28d16754c9049dd4d0ad3b6c1e28"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">SVF::AssignStmt::getRHSVar</a></div><div class="ttdeci">SVFVar * getRHSVar() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00290">SVFStatements.h:290</a></div></div>
1866
1867
  <div class="ttc" id="aextapi_8c_html_a99355d8f0fb41ec43effb95189db0ed4"><div class="ttname"><a href="extapi_8c.html#a99355d8f0fb41ec43effb95189db0ed4">isprint</a></div><div class="ttdeci">int isprint(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00867">extapi.c:867</a></div></div>
1867
1868
  <div class="ttc" id="aextapi_8c_html_a0008a4e8e7889734dc1d83297de07158"><div class="ttname"><a href="extapi_8c.html#a0008a4e8e7889734dc1d83297de07158">iscntrl</a></div><div class="ttdeci">int iscntrl(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00847">extapi.c:847</a></div></div>
1868
- <div class="ttc" id="aclassSVF_1_1AEAPI_html_ae0847fb421538982bfd50cc280d1a65b"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ae0847fb421538982bfd50cc280d1a65b">SVF::AEAPI::handleMemcpy</a></div><div class="ttdeci">virtual void handleMemcpy(const SVFValue *dst, const SVFValue *src, IntervalValue len, u32_t start_idx)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01610">AbstractExecution.cpp:1610</a></div></div>
1869
+ <div class="ttc" id="aclassSVF_1_1AEAPI_html_ae0847fb421538982bfd50cc280d1a65b"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ae0847fb421538982bfd50cc280d1a65b">SVF::AEAPI::handleMemcpy</a></div><div class="ttdeci">virtual void handleMemcpy(const SVFValue *dst, const SVFValue *src, IntervalValue len, u32_t start_idx)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01611">AbstractExecution.cpp:1611</a></div></div>
1869
1870
  <div class="ttc" id="aclassSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00474">SVFStatements.h:474</a></div></div>
1870
1871
  <div class="ttc" id="aextapi_8c_html_af947cbf1ae303e5297c9d68c68a6b9cb"><div class="ttname"><a href="extapi_8c.html#af947cbf1ae303e5297c9d68c68a6b9cb">isalpha</a></div><div class="ttdeci">int isalpha(int character)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00837">extapi.c:837</a></div></div>
1871
1872
  <div class="ttc" id="aclassSVF_1_1ExeState_html_ab72f3bc855feeda75e11768ab03ad84e"><div class="ttname"><a href="classSVF_1_1ExeState.html#ab72f3bc855feeda75e11768ab03ad84e">SVF::ExeState::getInternalID</a></div><div class="ttdeci">static u32_t getInternalID(u32_t idx)</div><div class="ttdoc">Return the internal index if idx is an address otherwise return the value of idx.</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00284">ExeState.h:284</a></div></div>
1872
1873
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_abda052b73e869ed6d7c139ad1528da11"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00170">SVFIR.h:170</a></div></div>
1873
- <div class="ttc" id="aclassSVF_1_1AEAPI_html_a185e694007f4d69b0030c65fb54c9c6d"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a185e694007f4d69b0030c65fb54c9c6d">SVF::AEAPI::handleMemset</a></div><div class="ttdeci">virtual void handleMemset(const SVFValue *dst, IntervalValue elem, IntervalValue len)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01684">AbstractExecution.cpp:1684</a></div></div>
1874
+ <div class="ttc" id="aclassSVF_1_1AEAPI_html_a185e694007f4d69b0030c65fb54c9c6d"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a185e694007f4d69b0030c65fb54c9c6d">SVF::AEAPI::handleMemset</a></div><div class="ttdeci">virtual void handleMemset(const SVFValue *dst, IntervalValue elem, IntervalValue len)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01685">AbstractExecution.cpp:1685</a></div></div>
1874
1875
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_aa027be2f9243ce4cae799b265b019443"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#aa027be2f9243ce4cae799b265b019443">SVF::IntervalValue::bottom</a></div><div class="ttdeci">static IntervalValue bottom()</div><div class="ttdoc">Create the bottom IntervalValue.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00089">IntervalValue.h:89</a></div></div>
1875
- <div class="ttc" id="aclassSVF_1_1AEAPI_html_a4efc7447db13da26ce284218d6c01059"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a4efc7447db13da26ce284218d6c01059">SVF::AEAPI::traceMemoryAllocationSize</a></div><div class="ttdeci">IntervalValue traceMemoryAllocationSize(const SVFValue *value)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01388">AbstractExecution.cpp:1388</a></div></div>
1876
+ <div class="ttc" id="aclassSVF_1_1AEAPI_html_a4efc7447db13da26ce284218d6c01059"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a4efc7447db13da26ce284218d6c01059">SVF::AEAPI::traceMemoryAllocationSize</a></div><div class="ttdeci">IntervalValue traceMemoryAllocationSize(const SVFValue *value)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01389">AbstractExecution.cpp:1389</a></div></div>
1876
1877
  <div class="ttc" id="aextapi_8c_html_aaecd098576b00440124c44580144e8d5"><div class="ttname"><a href="extapi_8c.html#aaecd098576b00440124c44580144e8d5">isblank</a></div><div class="ttdeci">int isblank(int character)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00842">extapi.c:842</a></div></div>
1877
1878
  <div class="ttc" id="aextapi_8c_html_adaf3aadefe3fc4fb07b6be0d7b880f53"><div class="ttname"><a href="extapi_8c.html#adaf3aadefe3fc4fb07b6be0d7b880f53">isxdigit</a></div><div class="ttdeci">int isxdigit(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00887">extapi.c:887</a></div></div>
1878
1879
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00380">GenericGraph.h:380</a></div></div>
@@ -1891,7 +1892,7 @@ Protected Attributes</h2></td></tr>
1891
1892
  <div class="ttc" id="aclassSVF_1_1AEAPI_html_ace3e82bcfbb4495a765e01d75a58dc3f"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ace3e82bcfbb4495a765e01d75a58dc3f">SVF::AEAPI::_checkpoint_names</a></div><div class="ttdeci">Set&lt; std::string &gt; _checkpoint_names</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00435">AbstractExecution.h:435</a></div></div>
1892
1893
  <div class="ttc" id="aclassSVF_1_1CallSite_html_ac2a0091dab3543a398da890b947e42ef"><div class="ttname"><a href="classSVF_1_1CallSite.html#ac2a0091dab3543a398da890b947e42ef">SVF::CallSite::getInstruction</a></div><div class="ttdeci">const SVFInstruction * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01128">SVFValue.h:1128</a></div></div>
1893
1894
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_a98f731be7be9bc8e7fd09f5c2204c840"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">SVF::AssignStmt::getLHSVarID</a></div><div class="ttdeci">NodeID getLHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00302">SVFStatements.h:302</a></div></div>
1894
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_af8d06156bcbb61beb305ed8096319966"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">SVF::SVFIR2ItvExeState::getGepObjAddress</a></div><div class="ttdeci">Addrs getGepObjAddress(u32_t pointer, APOffset offset)</div><div class="ttdoc">Return the field address given a pointer points to a struct object and an offset.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00231">SVFIR2ItvExeState.cpp:231</a></div></div>
1895
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_af8d06156bcbb61beb305ed8096319966"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">SVF::SVFIR2ItvExeState::getGepObjAddress</a></div><div class="ttdeci">Addrs getGepObjAddress(u32_t pointer, APOffset offset)</div><div class="ttdoc">Return the field address given a pointer points to a struct object and an offset.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00232">SVFIR2ItvExeState.cpp:232</a></div></div>
1895
1896
  <div class="ttc" id="aclassSVF_1_1IntervalExeState_html_ad485a35730353c0e945bc84a034d9e45"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html#ad485a35730353c0e945bc84a034d9e45">SVF::IntervalExeState::inVarToAddrsTable</a></div><div class="ttdeci">bool inVarToAddrsTable(u32_t id) const override</div><div class="ttdoc">whether the variable is in varToAddrs table</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00476">IntervalExeState.h:476</a></div></div>
1896
1897
  <div class="ttc" id="aclassSVF_1_1FILOWorkList_html_a3fd9acb6d09fd142bfd402fdf8cac93b"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#a3fd9acb6d09fd142bfd402fdf8cac93b">SVF::FILOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00272">WorkList.h:272</a></div></div>
1897
1898
  <div class="ttc" id="aclassSVF_1_1FILOWorkList_html"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00044">AbstractExecution.h:44</a></div></div>
@@ -1914,9 +1915,9 @@ Protected Attributes</h2></td></tr>
1914
1915
  <div class="ttc" id="aclassSVF_1_1ExeState_html_a99f4437a7e350fec131d48f52082d672"><div class="ttname"><a href="classSVF_1_1ExeState.html#a99f4437a7e350fec131d48f52082d672">SVF::ExeState::storeAddrs</a></div><div class="ttdeci">virtual void storeAddrs(u32_t addr, const Addrs &amp;vaddrs)</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00155">ExeState.h:155</a></div></div>
1915
1916
  <div class="ttc" id="aclassSVF_1_1CallSite_html_a9e7c94ee7f689466111487e03b2cebcc"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">SVF::CallSite::getArgument</a></div><div class="ttdeci">const SVFValue * getArgument(u32_t ArgNo) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01132">SVFValue.h:1132</a></div></div>
1916
1917
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a3771eb932069dcad8212009efc411b99"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">SVF::IntervalValue::join_with</a></div><div class="ttdeci">void join_with(const IntervalValue &amp;other)</div><div class="ttdoc">Current IntervalValue joins with another IntervalValue.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00345">IntervalValue.h:345</a></div></div>
1917
- <div class="ttc" id="aclassSVF_1_1AEAPI_html_a112519b672206ac552273666949eeb3b"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">SVF::AEAPI::getPointeeElement</a></div><div class="ttdeci">const SVFType * getPointeeElement(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01667">AbstractExecution.cpp:1667</a></div></div>
1918
+ <div class="ttc" id="aclassSVF_1_1AEAPI_html_a112519b672206ac552273666949eeb3b"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">SVF::AEAPI::getPointeeElement</a></div><div class="ttdeci">const SVFType * getPointeeElement(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01668">AbstractExecution.cpp:1668</a></div></div>
1918
1919
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream &amp; errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
1919
- <div class="ttc" id="aclassSVF_1_1AEAPI_html_a3665513f6e8f8b93ef3f9d273d03ee70"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a3665513f6e8f8b93ef3f9d273d03ee70">SVF::AEAPI::AccessMemoryViaCopyStmt</a></div><div class="ttdeci">void AccessMemoryViaCopyStmt(const CopyStmt *copy, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01764">AbstractExecution.cpp:1764</a></div></div>
1920
+ <div class="ttc" id="aclassSVF_1_1AEAPI_html_a3665513f6e8f8b93ef3f9d273d03ee70"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a3665513f6e8f8b93ef3f9d273d03ee70">SVF::AEAPI::AccessMemoryViaCopyStmt</a></div><div class="ttdeci">void AccessMemoryViaCopyStmt(const CopyStmt *copy, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01765">AbstractExecution.cpp:1765</a></div></div>
1920
1921
  <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a999c358b80dd07591b0432eaa41c20c9"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">SVF::SVFIR2ItvExeState::inVarToAddrsTable</a></div><div class="ttdeci">bool inVarToAddrsTable(u32_t id) const</div><div class="ttdoc">whether the variable is in varToAddrs table</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8h_source.html#l00123">SVFIR2ItvExeState.h:123</a></div></div>
1921
1922
  <!-- start footer part -->
1922
1923
  <hr class="footer"/><address class="footer"><small>