svf-tools 1.0.829 → 1.0.830

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/SVF-doxygen/html/AccessPath_8cpp_source.html +225 -224
  2. package/SVF-doxygen/html/AccessPath_8h_source.html +11 -11
  3. package/SVF-doxygen/html/AndersenSFR_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/Andersen_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/BasicTypes_8h.html +2 -0
  6. package/SVF-doxygen/html/BasicTypes_8h_source.html +123 -121
  7. package/SVF-doxygen/html/CFLAlias_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/CFLGraphBuilder_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +11 -11
  10. package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/ConsG_8h_source.html +1 -1
  12. package/SVF-doxygen/html/ContextDDA_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/ContextDDA_8h_source.html +1 -1
  14. package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
  15. package/SVF-doxygen/html/DCHG_8cpp_source.html +12 -12
  16. package/SVF-doxygen/html/DCHG_8h_source.html +5 -5
  17. package/SVF-doxygen/html/DDAClient_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/DDAStat_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/DDAVFSolver_8h_source.html +4 -4
  20. package/SVF-doxygen/html/FlowDDA_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/FlowDDA_8h_source.html +1 -1
  22. package/SVF-doxygen/html/FlowSensitiveStat_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/IRGraph_8h_source.html +2 -2
  26. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +145 -144
  27. package/SVF-doxygen/html/LLVMModule_8h_source.html +3 -3
  28. package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +1138 -1066
  29. package/SVF-doxygen/html/LLVMUtil_8h.html +2 -0
  30. package/SVF-doxygen/html/LLVMUtil_8h_source.html +419 -414
  31. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
  32. package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/MemRegion_8cpp_source.html +3 -3
  35. package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/PointerAnalysisImpl_8cpp_source.html +4 -4
  37. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +363 -362
  38. package/SVF-doxygen/html/PointerAnalysis_8h_source.html +13 -13
  39. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +7 -7
  40. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +11 -10
  41. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +927 -924
  42. package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +35 -34
  43. package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +2 -2
  44. package/SVF-doxygen/html/SVFIR_8cpp_source.html +1 -1
  45. package/SVF-doxygen/html/SVFIR_8h_source.html +1 -1
  46. package/SVF-doxygen/html/SVFStat_8cpp_source.html +12 -12
  47. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/SVFStatements_8h_source.html +2 -2
  49. package/SVF-doxygen/html/SVFType_8cpp_source.html +38 -37
  50. package/SVF-doxygen/html/SVFType_8h_source.html +5 -5
  51. package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
  52. package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
  53. package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/SVFVariables_8h_source.html +1 -1
  55. package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  56. package/SVF-doxygen/html/Steensgaard_8cpp_source.html +1 -1
  57. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +653 -651
  58. package/SVF-doxygen/html/SymbolTableBuilder_8h_source.html +17 -17
  59. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +339 -338
  60. package/SVF-doxygen/html/SymbolTableInfo_8h_source.html +33 -33
  61. package/SVF-doxygen/html/ThreadCallGraph_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/classSVF_1_1AccessPath-members.html +3 -3
  64. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +236 -235
  65. package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  66. package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  67. package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
  68. package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
  69. package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
  70. package/SVF-doxygen/html/classSVF_1_1AndersenSFR.html +1 -1
  71. package/SVF-doxygen/html/classSVF_1_1BVDataPTAImpl.html +4 -4
  72. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
  73. package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  74. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
  75. package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +3 -3
  76. package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +11 -11
  77. package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +1 -1
  78. package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
  79. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
  80. package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
  81. package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +2 -2
  82. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
  83. package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
  84. package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
  85. package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
  86. package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +12 -12
  87. package/SVF-doxygen/html/classSVF_1_1DDAStat.html +1 -1
  88. package/SVF-doxygen/html/classSVF_1_1DDAVFSolver.html +1 -1
  89. package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  90. package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
  91. package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +2 -2
  92. package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +1 -1
  93. package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  94. package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
  95. package/SVF-doxygen/html/classSVF_1_1FunptrDDAClient.html +1 -1
  96. package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +2 -2
  97. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +3 -3
  98. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
  99. package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
  100. package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +1 -1
  101. package/SVF-doxygen/html/classSVF_1_1IRGraph.html +2 -2
  102. package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  103. package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  104. package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +1 -1
  105. package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +1 -1
  106. package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  107. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +141 -140
  108. package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
  109. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
  110. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
  111. package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
  112. package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +3 -3
  113. package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +1 -1
  114. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
  115. package/SVF-doxygen/html/classSVF_1_1MemObj.html +121 -121
  116. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
  117. package/SVF-doxygen/html/classSVF_1_1ObjTypeInfo.html +29 -29
  118. package/SVF-doxygen/html/classSVF_1_1ObjVar.html +2 -2
  119. package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
  120. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
  121. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +342 -341
  122. package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +1 -1
  123. package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
  124. package/SVF-doxygen/html/classSVF_1_1SVFArrayType.html +4 -4
  125. package/SVF-doxygen/html/classSVF_1_1SVFFunctionType.html +4 -4
  126. package/SVF-doxygen/html/classSVF_1_1SVFIR.html +1 -1
  127. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +6 -6
  128. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +11 -10
  129. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +868 -864
  130. package/SVF-doxygen/html/classSVF_1_1SVFIntegerType.html +7 -7
  131. package/SVF-doxygen/html/classSVF_1_1SVFOtherType.html +4 -4
  132. package/SVF-doxygen/html/classSVF_1_1SVFPointerType.html +3 -2
  133. package/SVF-doxygen/html/classSVF_1_1SVFStat.html +12 -12
  134. package/SVF-doxygen/html/classSVF_1_1SVFStructType.html +4 -4
  135. package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
  136. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  137. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
  138. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
  139. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
  140. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +634 -631
  141. package/SVF-doxygen/html/classSVF_1_1SymbolTableInfo.html +125 -124
  142. package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
  143. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
  144. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
  145. package/SVF-doxygen/html/classSVF_1_1ThreadCallGraph.html +1 -1
  146. package/SVF-doxygen/html/classSVF_1_1TypeAnalysis.html +2 -2
  147. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
  148. package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  149. package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
  150. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  151. package/SVF-doxygen/html/functions_func_g.html +10 -10
  152. package/SVF-doxygen/html/functions_func_p.html +1 -1
  153. package/SVF-doxygen/html/functions_g.html +6 -6
  154. package/SVF-doxygen/html/functions_r.html +2 -2
  155. package/SVF-doxygen/html/functions_s.html +5 -5
  156. package/SVF-doxygen/html/functions_t.html +7 -7
  157. package/SVF-doxygen/html/functions_v.html +3 -1
  158. package/SVF-doxygen/html/functions_w.html +8 -8
  159. package/SVF-doxygen/html/namespaceSVF.html +43 -25
  160. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +1233 -1138
  161. package/SVF-doxygen/html/namespacemembers_func_g.html +6 -3
  162. package/SVF-doxygen/html/namespacemembers_g.html +10 -4
  163. package/SVF-doxygen/html/namespacemembers_type_g.html +3 -0
  164. package/SVF-doxygen/html/search/all_10.js +324 -324
  165. package/SVF-doxygen/html/search/all_11.js +223 -223
  166. package/SVF-doxygen/html/search/all_12.js +553 -553
  167. package/SVF-doxygen/html/search/all_13.js +192 -192
  168. package/SVF-doxygen/html/search/all_14.js +67 -67
  169. package/SVF-doxygen/html/search/all_15.js +167 -167
  170. package/SVF-doxygen/html/search/all_16.js +63 -63
  171. package/SVF-doxygen/html/search/all_17.js +1 -1
  172. package/SVF-doxygen/html/search/all_18.js +1 -1
  173. package/SVF-doxygen/html/search/all_19.js +11 -11
  174. package/SVF-doxygen/html/search/all_1a.js +172 -172
  175. package/SVF-doxygen/html/search/all_7.js +895 -893
  176. package/SVF-doxygen/html/search/all_8.js +198 -198
  177. package/SVF-doxygen/html/search/all_9.js +607 -607
  178. package/SVF-doxygen/html/search/all_a.js +46 -46
  179. package/SVF-doxygen/html/search/all_b.js +26 -26
  180. package/SVF-doxygen/html/search/all_c.js +115 -115
  181. package/SVF-doxygen/html/search/all_d.js +198 -198
  182. package/SVF-doxygen/html/search/all_e.js +207 -207
  183. package/SVF-doxygen/html/search/all_f.js +116 -116
  184. package/SVF-doxygen/html/search/classes_0.js +26 -26
  185. package/SVF-doxygen/html/search/classes_1.js +9 -9
  186. package/SVF-doxygen/html/search/classes_10.js +73 -73
  187. package/SVF-doxygen/html/search/classes_11.js +15 -15
  188. package/SVF-doxygen/html/search/classes_12.js +2 -2
  189. package/SVF-doxygen/html/search/classes_13.js +10 -10
  190. package/SVF-doxygen/html/search/classes_14.js +14 -14
  191. package/SVF-doxygen/html/search/classes_15.js +1 -1
  192. package/SVF-doxygen/html/search/classes_2.js +80 -80
  193. package/SVF-doxygen/html/search/classes_3.js +37 -37
  194. package/SVF-doxygen/html/search/classes_4.js +9 -9
  195. package/SVF-doxygen/html/search/classes_5.js +28 -28
  196. package/SVF-doxygen/html/search/classes_6.js +104 -104
  197. package/SVF-doxygen/html/search/classes_7.js +34 -34
  198. package/SVF-doxygen/html/search/classes_8.js +56 -56
  199. package/SVF-doxygen/html/search/classes_9.js +1 -1
  200. package/SVF-doxygen/html/search/classes_a.js +12 -12
  201. package/SVF-doxygen/html/search/classes_b.js +29 -29
  202. package/SVF-doxygen/html/search/classes_c.js +6 -6
  203. package/SVF-doxygen/html/search/classes_d.js +18 -18
  204. package/SVF-doxygen/html/search/classes_e.js +36 -36
  205. package/SVF-doxygen/html/search/classes_f.js +25 -25
  206. package/SVF-doxygen/html/search/defines_0.js +3 -3
  207. package/SVF-doxygen/html/search/defines_1.js +2 -2
  208. package/SVF-doxygen/html/search/defines_2.js +30 -30
  209. package/SVF-doxygen/html/search/defines_3.js +21 -21
  210. package/SVF-doxygen/html/search/defines_4.js +2 -2
  211. package/SVF-doxygen/html/search/defines_5.js +4 -4
  212. package/SVF-doxygen/html/search/defines_6.js +2 -2
  213. package/SVF-doxygen/html/search/defines_7.js +5 -5
  214. package/SVF-doxygen/html/search/defines_8.js +11 -11
  215. package/SVF-doxygen/html/search/defines_9.js +9 -9
  216. package/SVF-doxygen/html/search/defines_a.js +2 -2
  217. package/SVF-doxygen/html/search/defines_b.js +1 -1
  218. package/SVF-doxygen/html/search/defines_c.js +3 -3
  219. package/SVF-doxygen/html/search/defines_d.js +2 -2
  220. package/SVF-doxygen/html/search/defines_e.js +7 -7
  221. package/SVF-doxygen/html/search/defines_f.js +3 -3
  222. package/SVF-doxygen/html/search/enums_0.js +3 -3
  223. package/SVF-doxygen/html/search/enums_1.js +2 -2
  224. package/SVF-doxygen/html/search/enums_10.js +1 -1
  225. package/SVF-doxygen/html/search/enums_11.js +1 -1
  226. package/SVF-doxygen/html/search/enums_2.js +8 -8
  227. package/SVF-doxygen/html/search/enums_3.js +1 -1
  228. package/SVF-doxygen/html/search/enums_4.js +3 -3
  229. package/SVF-doxygen/html/search/enums_5.js +1 -1
  230. package/SVF-doxygen/html/search/enums_6.js +2 -2
  231. package/SVF-doxygen/html/search/enums_7.js +2 -2
  232. package/SVF-doxygen/html/search/enums_8.js +4 -4
  233. package/SVF-doxygen/html/search/enums_9.js +1 -1
  234. package/SVF-doxygen/html/search/enums_a.js +1 -1
  235. package/SVF-doxygen/html/search/enums_b.js +7 -7
  236. package/SVF-doxygen/html/search/enums_c.js +1 -1
  237. package/SVF-doxygen/html/search/enums_d.js +4 -4
  238. package/SVF-doxygen/html/search/enums_e.js +2 -2
  239. package/SVF-doxygen/html/search/enums_f.js +4 -4
  240. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  241. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  242. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  243. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  244. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  245. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  246. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  247. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  248. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  249. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  250. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  251. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  252. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  253. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  254. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  255. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  256. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  257. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  258. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  259. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  260. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  261. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  262. package/SVF-doxygen/html/search/files_0.js +13 -13
  263. package/SVF-doxygen/html/search/files_1.js +7 -7
  264. package/SVF-doxygen/html/search/files_10.js +8 -8
  265. package/SVF-doxygen/html/search/files_11.js +8 -8
  266. package/SVF-doxygen/html/search/files_12.js +2 -2
  267. package/SVF-doxygen/html/search/files_2.js +55 -55
  268. package/SVF-doxygen/html/search/files_3.js +14 -14
  269. package/SVF-doxygen/html/search/files_4.js +5 -5
  270. package/SVF-doxygen/html/search/files_5.js +13 -13
  271. package/SVF-doxygen/html/search/files_6.js +9 -9
  272. package/SVF-doxygen/html/search/files_7.js +14 -14
  273. package/SVF-doxygen/html/search/files_8.js +13 -13
  274. package/SVF-doxygen/html/search/files_9.js +18 -18
  275. package/SVF-doxygen/html/search/files_a.js +3 -3
  276. package/SVF-doxygen/html/search/files_b.js +2 -2
  277. package/SVF-doxygen/html/search/files_c.js +20 -20
  278. package/SVF-doxygen/html/search/files_d.js +4 -4
  279. package/SVF-doxygen/html/search/files_e.js +62 -62
  280. package/SVF-doxygen/html/search/files_f.js +8 -8
  281. package/SVF-doxygen/html/search/functions_0.js +13 -13
  282. package/SVF-doxygen/html/search/functions_1.js +360 -360
  283. package/SVF-doxygen/html/search/functions_10.js +140 -140
  284. package/SVF-doxygen/html/search/functions_11.js +139 -139
  285. package/SVF-doxygen/html/search/functions_12.js +288 -288
  286. package/SVF-doxygen/html/search/functions_13.js +59 -59
  287. package/SVF-doxygen/html/search/functions_14.js +39 -39
  288. package/SVF-doxygen/html/search/functions_15.js +71 -71
  289. package/SVF-doxygen/html/search/functions_16.js +32 -32
  290. package/SVF-doxygen/html/search/functions_17.js +3 -3
  291. package/SVF-doxygen/html/search/functions_18.js +172 -172
  292. package/SVF-doxygen/html/search/functions_2.js +89 -89
  293. package/SVF-doxygen/html/search/functions_3.js +258 -258
  294. package/SVF-doxygen/html/search/functions_4.js +78 -78
  295. package/SVF-doxygen/html/search/functions_5.js +53 -53
  296. package/SVF-doxygen/html/search/functions_6.js +60 -60
  297. package/SVF-doxygen/html/search/functions_7.js +857 -856
  298. package/SVF-doxygen/html/search/functions_8.js +149 -149
  299. package/SVF-doxygen/html/search/functions_9.js +423 -423
  300. package/SVF-doxygen/html/search/functions_a.js +30 -30
  301. package/SVF-doxygen/html/search/functions_b.js +2 -2
  302. package/SVF-doxygen/html/search/functions_c.js +25 -25
  303. package/SVF-doxygen/html/search/functions_d.js +79 -79
  304. package/SVF-doxygen/html/search/functions_e.js +35 -35
  305. package/SVF-doxygen/html/search/functions_f.js +56 -56
  306. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  307. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  308. package/SVF-doxygen/html/search/related_0.js +2 -2
  309. package/SVF-doxygen/html/search/related_1.js +2 -2
  310. package/SVF-doxygen/html/search/related_2.js +2 -2
  311. package/SVF-doxygen/html/search/related_3.js +2 -2
  312. package/SVF-doxygen/html/search/related_4.js +2 -2
  313. package/SVF-doxygen/html/search/related_5.js +1 -1
  314. package/SVF-doxygen/html/search/related_6.js +2 -2
  315. package/SVF-doxygen/html/search/related_7.js +4 -4
  316. package/SVF-doxygen/html/search/related_8.js +2 -2
  317. package/SVF-doxygen/html/search/related_9.js +4 -4
  318. package/SVF-doxygen/html/search/related_a.js +19 -19
  319. package/SVF-doxygen/html/search/related_b.js +4 -4
  320. package/SVF-doxygen/html/search/related_c.js +2 -2
  321. package/SVF-doxygen/html/search/related_d.js +12 -12
  322. package/SVF-doxygen/html/search/related_e.js +2 -2
  323. package/SVF-doxygen/html/search/related_f.js +2 -2
  324. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  325. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  326. package/SVF-doxygen/html/search/typedefs_10.js +61 -61
  327. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  328. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  329. package/SVF-doxygen/html/search/typedefs_13.js +33 -33
  330. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  331. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  332. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  333. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  334. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  335. package/SVF-doxygen/html/search/typedefs_6.js +56 -55
  336. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  337. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  338. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  339. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  340. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  341. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  342. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  343. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  344. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  345. package/SVF-doxygen/html/search/variables_0.js +151 -151
  346. package/SVF-doxygen/html/search/variables_1.js +75 -75
  347. package/SVF-doxygen/html/search/variables_10.js +97 -97
  348. package/SVF-doxygen/html/search/variables_11.js +44 -44
  349. package/SVF-doxygen/html/search/variables_12.js +92 -92
  350. package/SVF-doxygen/html/search/variables_13.js +76 -76
  351. package/SVF-doxygen/html/search/variables_14.js +14 -14
  352. package/SVF-doxygen/html/search/variables_15.js +48 -48
  353. package/SVF-doxygen/html/search/variables_16.js +9 -9
  354. package/SVF-doxygen/html/search/variables_17.js +1 -1
  355. package/SVF-doxygen/html/search/variables_18.js +2 -2
  356. package/SVF-doxygen/html/search/variables_2.js +38 -38
  357. package/SVF-doxygen/html/search/variables_3.js +142 -142
  358. package/SVF-doxygen/html/search/variables_4.js +55 -55
  359. package/SVF-doxygen/html/search/variables_5.js +37 -37
  360. package/SVF-doxygen/html/search/variables_6.js +66 -66
  361. package/SVF-doxygen/html/search/variables_7.js +34 -34
  362. package/SVF-doxygen/html/search/variables_8.js +7 -7
  363. package/SVF-doxygen/html/search/variables_9.js +78 -78
  364. package/SVF-doxygen/html/search/variables_a.js +4 -4
  365. package/SVF-doxygen/html/search/variables_b.js +10 -10
  366. package/SVF-doxygen/html/search/variables_c.js +45 -45
  367. package/SVF-doxygen/html/search/variables_d.js +56 -56
  368. package/SVF-doxygen/html/search/variables_e.js +123 -123
  369. package/SVF-doxygen/html/search/variables_f.js +30 -30
  370. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  371. package/SVF-doxygen/html/svf-ex_8cpp.html +1 -1
  372. package/SVF-doxygen/html/svf-ex_8cpp_source.html +1 -1
  373. package/package.json +1 -1
  374. package/svf/include/MemoryModel/AccessPath.h +2 -2
  375. package/svf/lib/AbstractExecution/SVFIR2ConsExeState.cpp +2 -2
  376. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +4 -4
  377. package/svf/lib/MemoryModel/AccessPath.cpp +6 -5
  378. package/svf/lib/MemoryModel/PointerAnalysis.cpp +1 -0
  379. package/svf/lib/SVFIR/SVFType.cpp +1 -0
  380. package/svf/lib/SVFIR/SymbolTableInfo.cpp +1 -0
  381. package/svf-llvm/include/SVF-LLVM/BasicTypes.h +1 -0
  382. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +6 -0
  383. package/svf-llvm/lib/LLVMModule.cpp +1 -0
  384. package/svf-llvm/lib/LLVMUtil.cpp +70 -0
  385. package/svf-llvm/lib/SVFIRBuilder.cpp +3 -1
  386. package/svf-llvm/lib/SymbolTableBuilder.cpp +4 -1
@@ -122,8 +122,8 @@ Public Member Functions</h2></td></tr>
122
122
  <tr class="separator:ab95df74c97fba13206df48e00131e15f"><td class="memSeparator" colspan="2">&#160;</td></tr>
123
123
  <tr class="memitem:a586c71842e3e4487921aa3384ce9d025"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a> () const</td></tr>
124
124
  <tr class="separator:a586c71842e3e4487921aa3384ce9d025"><td class="memSeparator" colspan="2">&#160;</td></tr>
125
- <tr class="memitem:a8e0c5f7549c3b6a7808caacd57bf2035"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AccessPath.html#a8e0c5f7549c3b6a7808caacd57bf2035">getGepPointeeType</a> () const</td></tr>
126
- <tr class="separator:a8e0c5f7549c3b6a7808caacd57bf2035"><td class="memSeparator" colspan="2">&#160;</td></tr>
125
+ <tr class="memitem:a7b4921dea37246f0f08dffa7db384a61"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AccessPath.html#a7b4921dea37246f0f08dffa7db384a61">gepSrcPointeeType</a> () const</td></tr>
126
+ <tr class="separator:a7b4921dea37246f0f08dffa7db384a61"><td class="memSeparator" colspan="2">&#160;</td></tr>
127
127
  <tr class="memitem:a43dc770c4458c6ac58c591974b93fc57"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AccessPath.html#a43dc770c4458c6ac58c591974b93fc57">computeConstantByteOffset</a> () const</td></tr>
128
128
  <tr class="separator:a43dc770c4458c6ac58c591974b93fc57"><td class="memSeparator" colspan="2">&#160;</td></tr>
129
129
  <tr class="memitem:ae746362c42da05a641ae062658e40651"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651">computeConstantOffset</a> () const</td></tr>
@@ -310,7 +310,7 @@ Friends</h2></td></tr>
310
310
  <p class="definition">Definition at line <a class="el" href="AccessPath_8h_source.html#l00071">71</a> of file <a class="el" href="AccessPath_8h_source.html">AccessPath.h</a>.</p>
311
311
  <div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; : <a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>(ap.fldIdx),</div>
312
312
  <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>(ap.getIdxOperandPairVec()),</div>
313
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html#a1d75baf851ba9982ac0861c850929985">gepPointeeType</a>(ap.getGepPointeeType())</div>
313
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html#a1d75baf851ba9982ac0861c850929985">gepPointeeType</a>(ap.gepSrcPointeeType())</div>
314
314
  <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div>
315
315
  <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div>
316
316
  </div><!-- fragment -->
@@ -416,26 +416,26 @@ Friends</h2></td></tr>
416
416
 
417
417
  <p>Check relations of two location sets. </p>
418
418
 
419
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00304">304</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
420
- <div class="fragment"><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;{</div>
421
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> lhsLocations = LHS.<a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">computeAllLocations</a>();</div>
422
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> rhsLocations = RHS.<a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">computeAllLocations</a>();</div>
423
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">intersects</a>(rhsLocations))</div>
424
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div>
425
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div>
426
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245ab1ba3a42758473e5ff427ba36147a56a">Same</a>;</div>
427
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(rhsLocations))</div>
428
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245a52a64f855e6233e88b319cf2f3442f14">Superset</a>;</div>
429
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(lhsLocations))</div>
430
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245a45bfb1e14fd39a700dba1243afe022e4">Subset</a>;</div>
431
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">else</span></div>
432
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245afbdf7000b827f7d8590e5f0997e0d59a">Overlap</a>;</div>
433
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div>
434
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">else</span></div>
435
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div>
436
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245acb3c4a3f685068e391025eb01ebf061d">NonOverlap</a>;</div>
437
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div>
438
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;}</div>
419
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00305">305</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
420
+ <div class="fragment"><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;{</div>
421
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> lhsLocations = LHS.<a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">computeAllLocations</a>();</div>
422
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> rhsLocations = RHS.<a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">computeAllLocations</a>();</div>
423
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">intersects</a>(rhsLocations))</div>
424
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div>
425
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div>
426
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245ab1ba3a42758473e5ff427ba36147a56a">Same</a>;</div>
427
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(rhsLocations))</div>
428
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245a52a64f855e6233e88b319cf2f3442f14">Superset</a>;</div>
429
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(lhsLocations))</div>
430
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245a45bfb1e14fd39a700dba1243afe022e4">Subset</a>;</div>
431
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">else</span></div>
432
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245afbdf7000b827f7d8590e5f0997e0d59a">Overlap</a>;</div>
433
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div>
434
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">else</span></div>
435
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div>
436
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245acb3c4a3f685068e391025eb01ebf061d">NonOverlap</a>;</div>
437
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
438
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div>
439
439
  </div><!-- fragment -->
440
440
  </div>
441
441
  </div>
@@ -465,12 +465,12 @@ Friends</h2></td></tr>
465
465
  <p>Compute all possible locations according to offset and number-stride pairs. </p>
466
466
  <p>Compute all possible locations according to offset and number-stride pairs. </p>
467
467
 
468
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00262">262</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
469
- <div class="fragment"><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;{</div>
470
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> result;</div>
471
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; result.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>());</div>
472
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> result;</div>
473
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;}</div>
468
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00263">263</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
469
+ <div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;{</div>
470
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> result;</div>
471
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; result.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>());</div>
472
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> result;</div>
473
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;}</div>
474
474
  </div><!-- fragment -->
475
475
  </div>
476
476
  </div>
@@ -500,45 +500,45 @@ Friends</h2></td></tr>
500
500
  <p>for (1) structType: struct.DEST structField = 0, flattenIdx = 0, type2: int structField = 1, flattenIdx = 1, type2: char[10] structField = 2, flattenIdx = 11, type2: int[5]</p>
501
501
  <p>for (2) i = 0, op: 0, type: [10 x i8]*(Ptr), type2: [10 x i8](Arr) i = 1, op: 8, type: [10 x i8](Arr), type2: i8</p>
502
502
 
503
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00097">97</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
504
- <div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;{</div>
505
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; assert(<a class="code" href="classSVF_1_1AccessPath.html#a403312192a96a9fd5e7d071481592a7f">isConstantOffset</a>() &amp;&amp; <span class="stringliteral">&quot;not a constant offset&quot;</span>);</div>
506
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
507
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalConstOffset = 0;</div>
508
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>.size() - 1; i &gt;= 0; i--)</div>
509
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div>
510
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// (2) %arrayidx = getelementptr inbounds [10 x i8], [10 x i8]* %b, i64 0, i64 8</span></div>
511
- <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>[i].first-&gt;getValue();</div>
512
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>[i].second;</div>
513
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &amp;&amp; <span class="stringliteral">&quot;this GepStmt comes from ExternalAPI cannot call this api&quot;</span>);</div>
514
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* type2 = <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>;</div>
515
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>* arrType = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
516
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div>
517
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; type2 = arrType-&gt;getTypeOfElement();</div>
518
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
519
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* ptrType = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
520
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div>
521
- <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; type2 = ptrType-&gt;getPtrElementType();</div>
522
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
523
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
524
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>* op = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(value);</div>
525
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>* structType = SVFUtil::dyn_cast&lt;SVFStructType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
526
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div>
527
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> structField = 0; structField &lt; (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>(); ++structField)</div>
528
- <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div>
529
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenIdx = structType-&gt;getTypeInfo()-&gt;getFlattenedFieldIdxVec()[structField];</div>
530
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; type2 = structType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#a055697f565cb9d73b41110090fe50159">getOriginalElemType</a>(flattenIdx);</div>
531
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; totalConstOffset += type2-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
532
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
533
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div>
534
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">else</span></div>
535
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div>
536
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>() * type2-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
537
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
538
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
539
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; totalConstOffset = <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() &gt; totalConstOffset? totalConstOffset: <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
540
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div>
541
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;}</div>
503
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00098">98</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
504
+ <div class="fragment"><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;{</div>
505
+ <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; assert(<a class="code" href="classSVF_1_1AccessPath.html#a403312192a96a9fd5e7d071481592a7f">isConstantOffset</a>() &amp;&amp; <span class="stringliteral">&quot;not a constant offset&quot;</span>);</div>
506
+ <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
507
+ <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalConstOffset = 0;</div>
508
+ <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>.size() - 1; i &gt;= 0; i--)</div>
509
+ <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div>
510
+ <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="comment">// (2) %arrayidx = getelementptr inbounds [10 x i8], [10 x i8]* %b, i64 0, i64 8</span></div>
511
+ <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>[i].first-&gt;getValue();</div>
512
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>[i].second;</div>
513
+ <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &amp;&amp; <span class="stringliteral">&quot;this GepStmt comes from ExternalAPI cannot call this api&quot;</span>);</div>
514
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* type2 = <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>;</div>
515
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>* arrType = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
516
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div>
517
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; type2 = arrType-&gt;getTypeOfElement();</div>
518
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
519
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
520
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
521
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; type2 = <a class="code" href="classSVF_1_1AccessPath.html#a7b4921dea37246f0f08dffa7db384a61">gepSrcPointeeType</a>();</div>
522
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div>
523
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; </div>
524
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>* op = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(value);</div>
525
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>* structType = SVFUtil::dyn_cast&lt;SVFStructType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
526
+ <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div>
527
+ <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> structField = 0; structField &lt; (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>(); ++structField)</div>
528
+ <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div>
529
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenIdx = structType-&gt;getTypeInfo()-&gt;getFlattenedFieldIdxVec()[structField];</div>
530
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; type2 = structType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#a055697f565cb9d73b41110090fe50159">getOriginalElemType</a>(flattenIdx);</div>
531
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; totalConstOffset += type2-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
532
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div>
533
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div>
534
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">else</span></div>
535
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div>
536
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>() * type2-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
537
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
538
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div>
539
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; totalConstOffset = <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() &gt; totalConstOffset? totalConstOffset: <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
540
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div>
541
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div>
542
542
  </div><!-- fragment -->
543
543
  </div>
544
544
  </div>
@@ -562,58 +562,58 @@ Friends</h2></td></tr>
562
562
  <p>Return accumulated constant offset</p>
563
563
  <p>"value" is the offset variable (must be a constant) "type" is the location where we want to compute offset Given a vector: [(value1,type1), (value2,type2), (value3,type3)] totalConstOffset = flattenOffset(value1,type1) * flattenOffset(value2,type2) + flattenOffset(value3,type3) For a pointer type (e.g., t1 is PointerType), we will retrieve the pointee type and times the offset, i.e., getElementNum(t1) X off1 %5 = getelementptr inbounds struct.Student, struct.Student* %4, i64 1 value1: i64 1 type1: struct.Student* computeConstantOffset = 32 %6 = getelementptr inbounds struct.Student, struct.Student* %5, i32 0, i32 1 value1: i32 0 type1: struct.Student* value2: i32 1 type2: struct.Student = type { struct.inner, [10 x [3 x i8]] } computeConstantOffset = 2 %7 = getelementptr inbounds [10 x [3 x i8]], [10 x [3 x i8]]* %6, i64 0, i64 3 value1: i64 0 type1: [10 x [3 x i8]]* value2: i64 3 type2: [10 x [3 x i8]] computeConstantOffset = 9 %8 = getelementptr inbounds [3 x i8], [3 x i8]* %7, i64 0, i64 2 value1: i64 0 type1: [3 x i8]* value2: i64 2 type2: [3 x i8] computeConstantOffset = 2 </p>
564
564
 
565
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00207">207</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
566
- <div class="fragment"><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;{</div>
567
- <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; </div>
568
- <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; assert(<a class="code" href="classSVF_1_1AccessPath.html#a403312192a96a9fd5e7d071481592a7f">isConstantOffset</a>() &amp;&amp; <span class="stringliteral">&quot;not a constant offset&quot;</span>);</div>
569
- <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; </div>
570
- <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalConstOffset = 0;</div>
571
- <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">//After the model-const and model-array options are turned on,</span></div>
572
- <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// the gepstmt offset generated by the array on the global</span></div>
573
- <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="comment">// node will be saved in getConstantStructFldIdx</span></div>
574
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>.size() == 0)</div>
575
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>();</div>
576
- <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>.size() - 1; i &gt;= 0; i--)</div>
577
- <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div>
578
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>[i].first-&gt;getValue();</div>
579
- <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>[i].second;</div>
580
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>* op = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(value);</div>
581
- <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; assert(op &amp;&amp; <span class="stringliteral">&quot;not a constant offset?&quot;</span>);</div>
582
- <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>==<span class="keyword">nullptr</span>)</div>
583
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div>
584
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div>
585
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">continue</span>;</div>
586
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; }</div>
587
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; </div>
588
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* pty = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
589
- <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>() * <a class="code" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">getElementNum</a>(pty-&gt;getPtrElementType());</div>
590
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">else</span></div>
591
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div>
592
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div>
593
- <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> &gt;= 0)</div>
594
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div>
595
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keyword">const</span> std::vector&lt;u32_t&gt;&amp; so = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5dc699aa85fe879eb4b2c9109cf3030d">getTypeInfo</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)-&gt;<a class="code" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">getFlattenedElemIdxVec</a>();</div>
596
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// if offset is larger than the size of getFlattenedElemIdxVec (overflow)</span></div>
597
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// set offset the last index of getFlattenedElemIdxVec to avoid assertion</span></div>
598
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> &gt;= (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a>)so.size())</div>
599
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div>
600
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;It is overflow access, we access the last idx\n&quot;</span>;</div>
601
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = so.size() - 1;</div>
602
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
603
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">else</span></div>
604
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div>
605
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; </div>
606
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div>
607
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; </div>
608
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenOffset =</div>
609
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>,</div>
610
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div>
611
- <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; totalConstOffset += flattenOffset;</div>
612
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div>
613
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
614
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
615
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div>
616
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div>
565
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00208">208</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
566
+ <div class="fragment"><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;{</div>
567
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; </div>
568
+ <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; assert(<a class="code" href="classSVF_1_1AccessPath.html#a403312192a96a9fd5e7d071481592a7f">isConstantOffset</a>() &amp;&amp; <span class="stringliteral">&quot;not a constant offset&quot;</span>);</div>
569
+ <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
570
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalConstOffset = 0;</div>
571
+ <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">//After the model-const and model-array options are turned on,</span></div>
572
+ <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="comment">// the gepstmt offset generated by the array on the global</span></div>
573
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">// node will be saved in getConstantStructFldIdx</span></div>
574
+ <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>.size() == 0)</div>
575
+ <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>();</div>
576
+ <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>.size() - 1; i &gt;= 0; i--)</div>
577
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div>
578
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>[i].first-&gt;getValue();</div>
579
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>[i].second;</div>
580
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>* op = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(value);</div>
581
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; assert(op &amp;&amp; <span class="stringliteral">&quot;not a constant offset?&quot;</span>);</div>
582
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>==<span class="keyword">nullptr</span>)</div>
583
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div>
584
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div>
585
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">continue</span>;</div>
586
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div>
587
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; </div>
588
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
589
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>() * <a class="code" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">getElementNum</a>(<a class="code" href="classSVF_1_1AccessPath.html#a1d75baf851ba9982ac0861c850929985">gepPointeeType</a>);</div>
590
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">else</span></div>
591
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div>
592
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div>
593
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> &gt;= 0)</div>
594
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div>
595
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">const</span> std::vector&lt;u32_t&gt;&amp; so = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5dc699aa85fe879eb4b2c9109cf3030d">getTypeInfo</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)-&gt;<a class="code" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">getFlattenedElemIdxVec</a>();</div>
596
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// if offset is larger than the size of getFlattenedElemIdxVec (overflow)</span></div>
597
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// set offset the last index of getFlattenedElemIdxVec to avoid assertion</span></div>
598
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> &gt;= (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a>)so.size())</div>
599
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div>
600
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;It is overflow access, we access the last idx\n&quot;</span>;</div>
601
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = so.size() - 1;</div>
602
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
603
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">else</span></div>
604
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div>
605
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
606
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div>
607
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; </div>
608
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenOffset =</div>
609
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>,</div>
610
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div>
611
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; totalConstOffset += flattenOffset;</div>
612
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
613
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
614
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div>
615
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div>
616
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;}</div>
617
617
  </div><!-- fragment -->
618
618
  </div>
619
619
  </div>
@@ -634,24 +634,54 @@ Friends</h2></td></tr>
634
634
 
635
635
  <p>Dump location set. </p>
636
636
 
637
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00326">326</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
638
- <div class="fragment"><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;{</div>
639
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
640
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; std::stringstream rawstr(str);</div>
641
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; </div>
642
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;AccessPath\tField_Index: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>();</div>
643
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;,\tNum-Stride: {&quot;</span>;</div>
644
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; vec = <a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
645
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; IdxOperandPairs::const_iterator it = vec.begin();</div>
646
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; IdxOperandPairs::const_iterator eit = vec.end();</div>
647
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div>
648
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div>
649
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = it-&gt;second;</div>
650
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; (Svf var: &quot;</span> &lt;&lt; it-&gt;first-&gt;<a class="code" href="classSVF_1_1SVFType.html#a9035ac13134de4647d63507cd80ca3d6">toString</a>() &lt;&lt; <span class="stringliteral">&quot;, Iter type: &quot;</span> &lt;&lt; *ty &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
651
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div>
652
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }\n&quot;</span>;</div>
653
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
654
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;}</div>
637
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00327">327</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
638
+ <div class="fragment"><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;{</div>
639
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
640
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; std::stringstream rawstr(str);</div>
641
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; </div>
642
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;AccessPath\tField_Index: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>();</div>
643
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;,\tNum-Stride: {&quot;</span>;</div>
644
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; vec = <a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
645
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; IdxOperandPairs::const_iterator it = vec.begin();</div>
646
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; IdxOperandPairs::const_iterator eit = vec.end();</div>
647
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div>
648
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div>
649
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = it-&gt;second;</div>
650
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; (Svf var: &quot;</span> &lt;&lt; it-&gt;first-&gt;<a class="code" href="classSVF_1_1SVFType.html#a9035ac13134de4647d63507cd80ca3d6">toString</a>() &lt;&lt; <span class="stringliteral">&quot;, Iter type: &quot;</span> &lt;&lt; *ty &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
651
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
652
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }\n&quot;</span>;</div>
653
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
654
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;}</div>
655
+ </div><!-- fragment -->
656
+ </div>
657
+ </div>
658
+ <a id="a7b4921dea37246f0f08dffa7db384a61"></a>
659
+ <h2 class="memtitle"><span class="permalink"><a href="#a7b4921dea37246f0f08dffa7db384a61">&#9670;&nbsp;</a></span>gepSrcPointeeType()</h2>
660
+
661
+ <div class="memitem">
662
+ <div class="memproto">
663
+ <table class="mlabels">
664
+ <tr>
665
+ <td class="mlabels-left">
666
+ <table class="memname">
667
+ <tr>
668
+ <td class="memname">const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a>* SVF::AccessPath::gepSrcPointeeType </td>
669
+ <td>(</td>
670
+ <td class="paramname"></td><td>)</td>
671
+ <td> const</td>
672
+ </tr>
673
+ </table>
674
+ </td>
675
+ <td class="mlabels-right">
676
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
677
+ </tr>
678
+ </table>
679
+ </div><div class="memdoc">
680
+
681
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8h_source.html#l00112">112</a> of file <a class="el" href="AccessPath_8h_source.html">AccessPath.h</a>.</p>
682
+ <div class="fragment"><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div>
683
+ <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#a1d75baf851ba9982ac0861c850929985">gepPointeeType</a>;</div>
684
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
655
685
  </div><!-- fragment -->
656
686
  </div>
657
687
  </div>
@@ -716,52 +746,23 @@ Friends</h2></td></tr>
716
746
  <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div>
717
747
  <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;isSingleValueType())</div>
718
748
  <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div>
719
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* pty = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
720
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">getElementNum</a>(pty-&gt;getPtrElementType());</div>
721
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">else</span></div>
722
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> 1;</div>
723
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
724
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFFunctionType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
725
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div>
726
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> 1;</div>
727
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div>
728
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">else</span></div>
729
- <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div>
730
- <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;GepIter Type&quot;</span> &lt;&lt; *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
731
- <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;What other types for this gep?&quot;</span>);</div>
732
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; abort();</div>
733
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
734
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div>
735
- </div><!-- fragment -->
736
- </div>
737
- </div>
738
- <a id="a8e0c5f7549c3b6a7808caacd57bf2035"></a>
739
- <h2 class="memtitle"><span class="permalink"><a href="#a8e0c5f7549c3b6a7808caacd57bf2035">&#9670;&nbsp;</a></span>getGepPointeeType()</h2>
740
-
741
- <div class="memitem">
742
- <div class="memproto">
743
- <table class="mlabels">
744
- <tr>
745
- <td class="mlabels-left">
746
- <table class="memname">
747
- <tr>
748
- <td class="memname">const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a>* SVF::AccessPath::getGepPointeeType </td>
749
- <td>(</td>
750
- <td class="paramname"></td><td>)</td>
751
- <td> const</td>
752
- </tr>
753
- </table>
754
- </td>
755
- <td class="mlabels-right">
756
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
757
- </tr>
758
- </table>
759
- </div><div class="memdoc">
760
-
761
- <p class="definition">Definition at line <a class="el" href="AccessPath_8h_source.html#l00112">112</a> of file <a class="el" href="AccessPath_8h_source.html">AccessPath.h</a>.</p>
762
- <div class="fragment"><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div>
763
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#a1d75baf851ba9982ac0861c850929985">gepPointeeType</a>;</div>
764
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
749
+ <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// TODO: getPtrElementType to be removed</span></div>
750
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* pty = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
751
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">getElementNum</a>(pty-&gt;getPtrElementType());</div>
752
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span></div>
753
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> 1;</div>
754
+ <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
755
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFFunctionType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
756
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div>
757
+ <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> 1;</div>
758
+ <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
759
+ <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">else</span></div>
760
+ <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div>
761
+ <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;GepIter Type&quot;</span> &lt;&lt; *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
762
+ <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;What other types for this gep?&quot;</span>);</div>
763
+ <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; abort();</div>
764
+ <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
765
+ <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;}</div>
765
766
  </div><!-- fragment -->
766
767
  </div>
767
768
  </div>
@@ -824,22 +825,22 @@ Friends</h2></td></tr>
824
825
  <p>Return byte offset from the beginning of the structure to the field where it is located for struct type. </p>
825
826
  <p>Return byte offset from the beginning of the structure to the field where it is located for struct type </p>
826
827
 
827
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00162">162</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
828
- <div class="fragment"><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;{</div>
829
- <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* idxValue = idxOperandVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>();</div>
830
- <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> structByteOffset = 0;</div>
831
- <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a> *op = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(idxValue))</div>
832
- <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div>
833
- <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> structField = 0; structField &lt; (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)op-&gt;getSExtValue(); ++structField)</div>
834
- <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {</div>
835
- <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenIdx = idxOperandType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#aaf05447c20c9f90eea64ab6e88d6ab05">getFlattenedFieldIdxVec</a>()[structField];</div>
836
- <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; structByteOffset += idxOperandType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#a055697f565cb9d73b41110090fe50159">getOriginalElemType</a>(flattenIdx)-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
837
- <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
838
- <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> structByteOffset;</div>
839
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
840
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">else</span></div>
841
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;struct type can only pair with constant idx&quot;</span>);</div>
842
- <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;}</div>
828
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00163">163</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
829
+ <div class="fragment"><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;{</div>
830
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* idxValue = idxOperandVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>();</div>
831
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> structByteOffset = 0;</div>
832
+ <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a> *op = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(idxValue))</div>
833
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div>
834
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> structField = 0; structField &lt; (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)op-&gt;getSExtValue(); ++structField)</div>
835
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div>
836
+ <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenIdx = idxOperandType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#aaf05447c20c9f90eea64ab6e88d6ab05">getFlattenedFieldIdxVec</a>()[structField];</div>
837
+ <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; structByteOffset += idxOperandType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#a055697f565cb9d73b41110090fe50159">getOriginalElemType</a>(flattenIdx)-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
838
+ <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
839
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> structByteOffset;</div>
840
+ <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
841
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">else</span></div>
842
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;struct type can only pair with constant idx&quot;</span>);</div>
843
+ <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</div>
843
844
  </div><!-- fragment -->
844
845
  </div>
845
846
  </div>
@@ -924,16 +925,16 @@ Friends</h2></td></tr>
924
925
 
925
926
  <p>Overload operators. </p>
926
927
 
927
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00269">269</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
928
- <div class="fragment"><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;{</div>
929
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; assert(<a class="code" href="classSVF_1_1AccessPath.html#a1d75baf851ba9982ac0861c850929985">gepPointeeType</a> == rhs.<a class="code" href="classSVF_1_1AccessPath.html#a8e0c5f7549c3b6a7808caacd57bf2035">getGepPointeeType</a>() &amp;&amp; <span class="stringliteral">&quot;source element type not match&quot;</span>);</div>
930
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap(rhs);</div>
931
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; ap.fldIdx += <a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>();</div>
932
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a> : ap.getIdxOperandPairVec())</div>
933
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; ap.addOffsetVarAndGepTypePair(<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.first, <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.second);</div>
934
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; </div>
935
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> ap;</div>
936
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;}</div>
928
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00270">270</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
929
+ <div class="fragment"><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;{</div>
930
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; assert(<a class="code" href="classSVF_1_1AccessPath.html#a1d75baf851ba9982ac0861c850929985">gepPointeeType</a> == rhs.<a class="code" href="classSVF_1_1AccessPath.html#a7b4921dea37246f0f08dffa7db384a61">gepSrcPointeeType</a>() &amp;&amp; <span class="stringliteral">&quot;source element type not match&quot;</span>);</div>
931
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap(rhs);</div>
932
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; ap.fldIdx += <a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>();</div>
933
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a> : ap.getIdxOperandPairVec())</div>
934
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; ap.addOffsetVarAndGepTypePair(<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.first, <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.second);</div>
935
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; </div>
936
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> ap;</div>
937
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;}</div>
937
938
  </div><!-- fragment -->
938
939
  </div>
939
940
  </div>
@@ -953,29 +954,29 @@ Friends</h2></td></tr>
953
954
  </table>
954
955
  </div><div class="memdoc">
955
956
 
956
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00280">280</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
957
- <div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;{</div>
958
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a> != rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>)</div>
959
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a> &lt; rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>);</div>
960
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">else</span></div>
961
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; {</div>
962
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; pairVec = <a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
963
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; rhsPairVec = rhs.<a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
964
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div>
965
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> (pairVec.size() &lt; rhsPairVec.size());</div>
966
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">else</span></div>
967
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div>
968
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; IdxOperandPairs::const_iterator it = pairVec.begin();</div>
969
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; IdxOperandPairs::const_iterator rhsIt = rhsPairVec.begin();</div>
970
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">for</span> (; it != pairVec.end() &amp;&amp; rhsIt != rhsPairVec.end(); ++it, ++rhsIt)</div>
971
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div>
972
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">return</span> (*it) &lt; (*rhsIt);</div>
973
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div>
974
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; </div>
975
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
976
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div>
977
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div>
978
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;}</div>
957
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00281">281</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
958
+ <div class="fragment"><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;{</div>
959
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a> != rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>)</div>
960
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a> &lt; rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>);</div>
961
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">else</span></div>
962
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div>
963
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; pairVec = <a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
964
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; rhsPairVec = rhs.<a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
965
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div>
966
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> (pairVec.size() &lt; rhsPairVec.size());</div>
967
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">else</span></div>
968
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div>
969
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; IdxOperandPairs::const_iterator it = pairVec.begin();</div>
970
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; IdxOperandPairs::const_iterator rhsIt = rhsPairVec.begin();</div>
971
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">for</span> (; it != pairVec.end() &amp;&amp; rhsIt != rhsPairVec.end(); ++it, ++rhsIt)</div>
972
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div>
973
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> (*it) &lt; (*rhsIt);</div>
974
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div>
975
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; </div>
976
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
977
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div>
978
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; }</div>
979
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;}</div>
979
980
  </div><!-- fragment -->
980
981
  </div>
981
982
  </div>
@@ -1237,12 +1238,13 @@ Friends</h2></td></tr>
1237
1238
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html_abbd0e0cf759fad7858224ed8a63aade8"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">SVF::SparseBitVector::contains</a></div><div class="ttdeci">bool contains(const SparseBitVector&lt; ElementSize &gt; &amp;RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01073">SparseBitVector.h:1073</a></div></div>
1238
1239
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_aabb6c9600fac408f36b9fde013597245afbdf7000b827f7d8590e5f0997e0d59a"><div class="ttname"><a href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245afbdf7000b827f7d8590e5f0997e0d59a">SVF::AccessPath::Overlap</a></div><div class="ttdeci">@ Overlap</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00061">AccessPath.h:61</a></div></div>
1239
1240
  <div class="ttc" id="acJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
1241
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_a7b4921dea37246f0f08dffa7db384a61"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a7b4921dea37246f0f08dffa7db384a61">SVF::AccessPath::gepSrcPointeeType</a></div><div class="ttdeci">const SVFType * gepSrcPointeeType() const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00112">AccessPath.h:112</a></div></div>
1240
1242
  <div class="ttc" id="aclassSVF_1_1SVFPointerType_html"><div class="ttname"><a href="classSVF_1_1SVFPointerType.html">SVF::SVFPointerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00351">SVFType.h:351</a></div></div>
1241
1243
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00747">SparseBitVector.h:747</a></div></div>
1242
1244
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_ac2db6304ea5526fb446ae882983beeb0"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">SVF::SVFVar::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdoc">Get/has methods of the components.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00094">SVFVariables.h:94</a></div></div>
1243
1245
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00459">SparseBitVector.h:459</a></div></div>
1244
1246
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a5427d08c9eb9d86e66c2bff6aeba6bac"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">SVF::AccessPath::getConstantStructFldIdx</a></div><div class="ttdeci">APOffset getConstantStructFldIdx() const</div><div class="ttdoc">Get methods.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00100">AccessPath.h:100</a></div></div>
1245
- <div class="ttc" id="aclassSVF_1_1AccessPath_html_a76222b6571e46e8a8bd5c8c597c8ffaf"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">SVF::AccessPath::computeAllLocations</a></div><div class="ttdeci">NodeBS computeAllLocations() const</div><div class="ttdoc">Compute all possible locations according to offset and number-stride pairs.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00262">AccessPath.cpp:262</a></div></div>
1247
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_a76222b6571e46e8a8bd5c8c597c8ffaf"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">SVF::AccessPath::computeAllLocations</a></div><div class="ttdeci">NodeBS computeAllLocations() const</div><div class="ttdoc">Compute all possible locations according to offset and number-stride pairs.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00263">AccessPath.cpp:263</a></div></div>
1246
1248
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a3c98f0c5f07109f9da0a8a897aa51d18"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">SVF::AccessPath::getElementNum</a></div><div class="ttdeci">u32_t getElementNum(const SVFType *type) const</div><div class="ttdoc">Return element number of a type.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00063">AccessPath.cpp:63</a></div></div>
1247
1249
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_aabb6c9600fac408f36b9fde013597245ab1ba3a42758473e5ff427ba36147a56a"><div class="ttname"><a href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245ab1ba3a42758473e5ff427ba36147a56a">SVF::AccessPath::Same</a></div><div class="ttdeci">@ Same</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00061">AccessPath.h:61</a></div></div>
1248
1250
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a24df52313f8093bb651ae9da972cd663"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">SVF::SymbolTableInfo::getFlattenedElemIdx</a></div><div class="ttdeci">u32_t getFlattenedElemIdx(const SVFType *T, u32_t origId)</div><div class="ttdoc">Flattened element idx of an array or struct by considering stride.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00181">SymbolTableInfo.cpp:181</a></div></div>
@@ -1259,7 +1261,6 @@ Friends</h2></td></tr>
1259
1261
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a1d75baf851ba9982ac0861c850929985"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a1d75baf851ba9982ac0861c850929985">SVF::AccessPath::gepPointeeType</a></div><div class="ttdeci">const SVFType * gepPointeeType</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00176">AccessPath.h:176</a></div></div>
1260
1262
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a9035ac13134de4647d63507cd80ca3d6"><div class="ttname"><a href="classSVF_1_1SVFType.html#a9035ac13134de4647d63507cd80ca3d6">SVF::SVFType::toString</a></div><div class="ttdeci">std::string toString() const</div></div>
1261
1263
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a04ca154a70f40999a6a28c505bfd942d"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">SVF::AccessPath::IdxOperandPairs</a></div><div class="ttdeci">std::vector&lt; IdxOperandPair &gt; IdxOperandPairs</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00065">AccessPath.h:65</a></div></div>
1262
- <div class="ttc" id="aclassSVF_1_1AccessPath_html_a8e0c5f7549c3b6a7808caacd57bf2035"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a8e0c5f7549c3b6a7808caacd57bf2035">SVF::AccessPath::getGepPointeeType</a></div><div class="ttdeci">const SVFType * getGepPointeeType() const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00112">AccessPath.h:112</a></div></div>
1263
1264
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a47855e8ab3bba692f443903b58618229"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">SVF::AccessPath::idxOperandPairs</a></div><div class="ttdeci">IdxOperandPairs idxOperandPairs</div><div class="ttdoc">a vector of actual offset in the form of &lt;SVF Var, iterator type&gt;</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00175">AccessPath.h:175</a></div></div>
1264
1265
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00081">SymbolTableInfo.cpp:81</a></div></div>
1265
1266
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a586c71842e3e4487921aa3384ce9d025"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">SVF::AccessPath::getIdxOperandPairVec</a></div><div class="ttdeci">const IdxOperandPairs &amp; getIdxOperandPairVec() const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00108">AccessPath.h:108</a></div></div>