svf-tools 1.0.830 → 1.0.832

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 (362) hide show
  1. package/SVF-doxygen/html/AccessPath_8cpp_source.html +220 -228
  2. package/SVF-doxygen/html/AccessPath_8h_source.html +9 -9
  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/CFLAlias_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/CFLGraphBuilder_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +8 -8
  8. package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/ConsG_8h_source.html +1 -1
  10. package/SVF-doxygen/html/ContextDDA_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/ContextDDA_8h_source.html +1 -1
  12. package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
  13. package/SVF-doxygen/html/DCHG_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/DDAClient_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/DDAStat_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/DDAVFSolver_8h_source.html +4 -4
  17. package/SVF-doxygen/html/FlowDDA_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/FlowDDA_8h_source.html +1 -1
  19. package/SVF-doxygen/html/FlowSensitiveStat_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/IRGraph_8h_source.html +2 -2
  22. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +7 -7
  23. package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +369 -402
  24. package/SVF-doxygen/html/LLVMUtil_8h.html +3 -10
  25. package/SVF-doxygen/html/LLVMUtil_8h_source.html +350 -392
  26. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/MemRegion_8cpp_source.html +3 -3
  29. package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/PointerAnalysisImpl_8cpp_source.html +4 -4
  31. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +358 -362
  32. package/SVF-doxygen/html/PointerAnalysis_8h_source.html +13 -13
  33. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +5 -5
  34. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +6 -6
  35. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +13 -13
  36. package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/SVFIR_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/SVFIR_8h_source.html +1 -1
  39. package/SVF-doxygen/html/SVFStat_8cpp_source.html +12 -12
  40. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/SVFStatements_8h_source.html +2 -2
  42. package/SVF-doxygen/html/SVFType_8cpp_source.html +38 -39
  43. package/SVF-doxygen/html/SVFType_8h_source.html +5 -5
  44. package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
  45. package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
  46. package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/SVFVariables_8h_source.html +1 -1
  48. package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  49. package/SVF-doxygen/html/Steensgaard_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +199 -199
  51. package/SVF-doxygen/html/SymbolTableBuilder_8h_source.html +4 -4
  52. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +318 -322
  53. package/SVF-doxygen/html/SymbolTableInfo_8h_source.html +33 -33
  54. package/SVF-doxygen/html/ThreadCallGraph_8cpp_source.html +1 -1
  55. package/SVF-doxygen/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  56. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +200 -209
  57. package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  58. package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  59. package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
  60. package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
  61. package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
  62. package/SVF-doxygen/html/classSVF_1_1AndersenSFR.html +1 -1
  63. package/SVF-doxygen/html/classSVF_1_1BVDataPTAImpl.html +4 -4
  64. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
  65. package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  66. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
  67. package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +3 -3
  68. package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +8 -8
  69. package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +1 -1
  70. package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
  71. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
  72. package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
  73. package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +2 -2
  74. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
  75. package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
  76. package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
  77. package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
  78. package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +1 -1
  79. package/SVF-doxygen/html/classSVF_1_1DDAStat.html +1 -1
  80. package/SVF-doxygen/html/classSVF_1_1DDAVFSolver.html +1 -1
  81. package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  82. package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
  83. package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +2 -2
  84. package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +1 -1
  85. package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  86. package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
  87. package/SVF-doxygen/html/classSVF_1_1FunptrDDAClient.html +1 -1
  88. package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +2 -2
  89. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +3 -3
  90. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
  91. package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
  92. package/SVF-doxygen/html/classSVF_1_1IRGraph.html +2 -2
  93. package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  94. package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  95. package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +1 -1
  96. package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +1 -1
  97. package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  98. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +7 -7
  99. package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
  100. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
  101. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
  102. package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
  103. package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +3 -3
  104. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
  105. package/SVF-doxygen/html/classSVF_1_1MemObj.html +121 -121
  106. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
  107. package/SVF-doxygen/html/classSVF_1_1ObjTypeInfo.html +28 -28
  108. package/SVF-doxygen/html/classSVF_1_1ObjVar.html +2 -2
  109. package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
  110. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
  111. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +336 -340
  112. package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +1 -1
  113. package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
  114. package/SVF-doxygen/html/classSVF_1_1SVFArrayType.html +4 -4
  115. package/SVF-doxygen/html/classSVF_1_1SVFFunctionType.html +4 -4
  116. package/SVF-doxygen/html/classSVF_1_1SVFIR.html +1 -1
  117. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +4 -4
  118. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +6 -6
  119. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +16 -16
  120. package/SVF-doxygen/html/classSVF_1_1SVFIntegerType.html +7 -7
  121. package/SVF-doxygen/html/classSVF_1_1SVFOtherType.html +4 -4
  122. package/SVF-doxygen/html/classSVF_1_1SVFPointerType.html +2 -4
  123. package/SVF-doxygen/html/classSVF_1_1SVFStat.html +12 -12
  124. package/SVF-doxygen/html/classSVF_1_1SVFStructType.html +4 -4
  125. package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
  126. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  127. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
  128. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
  129. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
  130. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +196 -196
  131. package/SVF-doxygen/html/classSVF_1_1SymbolTableInfo.html +103 -107
  132. package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
  133. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
  134. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
  135. package/SVF-doxygen/html/classSVF_1_1ThreadCallGraph.html +1 -1
  136. package/SVF-doxygen/html/classSVF_1_1TypeAnalysis.html +2 -2
  137. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
  138. package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  139. package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
  140. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  141. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +526 -669
  142. package/SVF-doxygen/html/namespacemembers_func_g.html +0 -6
  143. package/SVF-doxygen/html/namespacemembers_func_i.html +9 -9
  144. package/SVF-doxygen/html/namespacemembers_g.html +4 -10
  145. package/SVF-doxygen/html/namespacemembers_i.html +7 -7
  146. package/SVF-doxygen/html/search/all_10.js +324 -324
  147. package/SVF-doxygen/html/search/all_11.js +223 -223
  148. package/SVF-doxygen/html/search/all_12.js +553 -553
  149. package/SVF-doxygen/html/search/all_13.js +192 -192
  150. package/SVF-doxygen/html/search/all_14.js +67 -67
  151. package/SVF-doxygen/html/search/all_15.js +167 -167
  152. package/SVF-doxygen/html/search/all_16.js +63 -63
  153. package/SVF-doxygen/html/search/all_17.js +1 -1
  154. package/SVF-doxygen/html/search/all_18.js +1 -1
  155. package/SVF-doxygen/html/search/all_19.js +11 -11
  156. package/SVF-doxygen/html/search/all_1a.js +172 -172
  157. package/SVF-doxygen/html/search/all_7.js +246 -248
  158. package/SVF-doxygen/html/search/all_8.js +198 -198
  159. package/SVF-doxygen/html/search/all_9.js +607 -607
  160. package/SVF-doxygen/html/search/all_a.js +46 -46
  161. package/SVF-doxygen/html/search/all_b.js +26 -26
  162. package/SVF-doxygen/html/search/all_c.js +115 -115
  163. package/SVF-doxygen/html/search/all_d.js +198 -198
  164. package/SVF-doxygen/html/search/all_e.js +207 -207
  165. package/SVF-doxygen/html/search/all_f.js +116 -116
  166. package/SVF-doxygen/html/search/classes_0.js +26 -26
  167. package/SVF-doxygen/html/search/classes_1.js +9 -9
  168. package/SVF-doxygen/html/search/classes_10.js +73 -73
  169. package/SVF-doxygen/html/search/classes_11.js +15 -15
  170. package/SVF-doxygen/html/search/classes_12.js +2 -2
  171. package/SVF-doxygen/html/search/classes_13.js +10 -10
  172. package/SVF-doxygen/html/search/classes_14.js +14 -14
  173. package/SVF-doxygen/html/search/classes_15.js +1 -1
  174. package/SVF-doxygen/html/search/classes_2.js +80 -80
  175. package/SVF-doxygen/html/search/classes_3.js +37 -37
  176. package/SVF-doxygen/html/search/classes_4.js +9 -9
  177. package/SVF-doxygen/html/search/classes_5.js +28 -28
  178. package/SVF-doxygen/html/search/classes_6.js +104 -104
  179. package/SVF-doxygen/html/search/classes_7.js +34 -34
  180. package/SVF-doxygen/html/search/classes_8.js +56 -56
  181. package/SVF-doxygen/html/search/classes_9.js +1 -1
  182. package/SVF-doxygen/html/search/classes_a.js +12 -12
  183. package/SVF-doxygen/html/search/classes_b.js +29 -29
  184. package/SVF-doxygen/html/search/classes_c.js +6 -6
  185. package/SVF-doxygen/html/search/classes_d.js +18 -18
  186. package/SVF-doxygen/html/search/classes_e.js +36 -36
  187. package/SVF-doxygen/html/search/classes_f.js +25 -25
  188. package/SVF-doxygen/html/search/defines_0.js +3 -3
  189. package/SVF-doxygen/html/search/defines_1.js +2 -2
  190. package/SVF-doxygen/html/search/defines_2.js +30 -30
  191. package/SVF-doxygen/html/search/defines_3.js +21 -21
  192. package/SVF-doxygen/html/search/defines_4.js +2 -2
  193. package/SVF-doxygen/html/search/defines_5.js +4 -4
  194. package/SVF-doxygen/html/search/defines_6.js +2 -2
  195. package/SVF-doxygen/html/search/defines_7.js +5 -5
  196. package/SVF-doxygen/html/search/defines_8.js +11 -11
  197. package/SVF-doxygen/html/search/defines_9.js +9 -9
  198. package/SVF-doxygen/html/search/defines_a.js +2 -2
  199. package/SVF-doxygen/html/search/defines_b.js +1 -1
  200. package/SVF-doxygen/html/search/defines_c.js +3 -3
  201. package/SVF-doxygen/html/search/defines_d.js +2 -2
  202. package/SVF-doxygen/html/search/defines_e.js +7 -7
  203. package/SVF-doxygen/html/search/defines_f.js +3 -3
  204. package/SVF-doxygen/html/search/enums_0.js +3 -3
  205. package/SVF-doxygen/html/search/enums_1.js +2 -2
  206. package/SVF-doxygen/html/search/enums_10.js +1 -1
  207. package/SVF-doxygen/html/search/enums_11.js +1 -1
  208. package/SVF-doxygen/html/search/enums_2.js +8 -8
  209. package/SVF-doxygen/html/search/enums_3.js +1 -1
  210. package/SVF-doxygen/html/search/enums_4.js +3 -3
  211. package/SVF-doxygen/html/search/enums_5.js +1 -1
  212. package/SVF-doxygen/html/search/enums_6.js +2 -2
  213. package/SVF-doxygen/html/search/enums_7.js +2 -2
  214. package/SVF-doxygen/html/search/enums_8.js +4 -4
  215. package/SVF-doxygen/html/search/enums_9.js +1 -1
  216. package/SVF-doxygen/html/search/enums_a.js +1 -1
  217. package/SVF-doxygen/html/search/enums_b.js +7 -7
  218. package/SVF-doxygen/html/search/enums_c.js +1 -1
  219. package/SVF-doxygen/html/search/enums_d.js +4 -4
  220. package/SVF-doxygen/html/search/enums_e.js +2 -2
  221. package/SVF-doxygen/html/search/enums_f.js +4 -4
  222. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  223. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  224. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  225. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  226. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  227. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  228. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  229. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  230. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  231. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  232. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  233. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  234. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  235. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  236. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  237. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  238. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  239. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  240. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  241. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  242. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  243. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  244. package/SVF-doxygen/html/search/files_0.js +13 -13
  245. package/SVF-doxygen/html/search/files_1.js +7 -7
  246. package/SVF-doxygen/html/search/files_10.js +8 -8
  247. package/SVF-doxygen/html/search/files_11.js +8 -8
  248. package/SVF-doxygen/html/search/files_12.js +2 -2
  249. package/SVF-doxygen/html/search/files_2.js +55 -55
  250. package/SVF-doxygen/html/search/files_3.js +14 -14
  251. package/SVF-doxygen/html/search/files_4.js +5 -5
  252. package/SVF-doxygen/html/search/files_5.js +13 -13
  253. package/SVF-doxygen/html/search/files_6.js +9 -9
  254. package/SVF-doxygen/html/search/files_7.js +14 -14
  255. package/SVF-doxygen/html/search/files_8.js +13 -13
  256. package/SVF-doxygen/html/search/files_9.js +18 -18
  257. package/SVF-doxygen/html/search/files_a.js +3 -3
  258. package/SVF-doxygen/html/search/files_b.js +2 -2
  259. package/SVF-doxygen/html/search/files_c.js +20 -20
  260. package/SVF-doxygen/html/search/files_d.js +4 -4
  261. package/SVF-doxygen/html/search/files_e.js +62 -62
  262. package/SVF-doxygen/html/search/files_f.js +8 -8
  263. package/SVF-doxygen/html/search/functions_0.js +13 -13
  264. package/SVF-doxygen/html/search/functions_1.js +360 -360
  265. package/SVF-doxygen/html/search/functions_10.js +140 -140
  266. package/SVF-doxygen/html/search/functions_11.js +139 -139
  267. package/SVF-doxygen/html/search/functions_12.js +288 -288
  268. package/SVF-doxygen/html/search/functions_13.js +59 -59
  269. package/SVF-doxygen/html/search/functions_14.js +39 -39
  270. package/SVF-doxygen/html/search/functions_15.js +71 -71
  271. package/SVF-doxygen/html/search/functions_16.js +32 -32
  272. package/SVF-doxygen/html/search/functions_17.js +3 -3
  273. package/SVF-doxygen/html/search/functions_18.js +172 -172
  274. package/SVF-doxygen/html/search/functions_2.js +89 -89
  275. package/SVF-doxygen/html/search/functions_3.js +258 -258
  276. package/SVF-doxygen/html/search/functions_4.js +78 -78
  277. package/SVF-doxygen/html/search/functions_5.js +53 -53
  278. package/SVF-doxygen/html/search/functions_6.js +60 -60
  279. package/SVF-doxygen/html/search/functions_7.js +855 -857
  280. package/SVF-doxygen/html/search/functions_8.js +149 -149
  281. package/SVF-doxygen/html/search/functions_9.js +423 -423
  282. package/SVF-doxygen/html/search/functions_a.js +30 -30
  283. package/SVF-doxygen/html/search/functions_b.js +2 -2
  284. package/SVF-doxygen/html/search/functions_c.js +25 -25
  285. package/SVF-doxygen/html/search/functions_d.js +79 -79
  286. package/SVF-doxygen/html/search/functions_e.js +35 -35
  287. package/SVF-doxygen/html/search/functions_f.js +56 -56
  288. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  289. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  290. package/SVF-doxygen/html/search/related_0.js +2 -2
  291. package/SVF-doxygen/html/search/related_1.js +2 -2
  292. package/SVF-doxygen/html/search/related_2.js +2 -2
  293. package/SVF-doxygen/html/search/related_3.js +2 -2
  294. package/SVF-doxygen/html/search/related_4.js +2 -2
  295. package/SVF-doxygen/html/search/related_5.js +1 -1
  296. package/SVF-doxygen/html/search/related_6.js +2 -2
  297. package/SVF-doxygen/html/search/related_7.js +4 -4
  298. package/SVF-doxygen/html/search/related_8.js +2 -2
  299. package/SVF-doxygen/html/search/related_9.js +4 -4
  300. package/SVF-doxygen/html/search/related_a.js +19 -19
  301. package/SVF-doxygen/html/search/related_b.js +4 -4
  302. package/SVF-doxygen/html/search/related_c.js +2 -2
  303. package/SVF-doxygen/html/search/related_d.js +12 -12
  304. package/SVF-doxygen/html/search/related_e.js +2 -2
  305. package/SVF-doxygen/html/search/related_f.js +2 -2
  306. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  307. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  308. package/SVF-doxygen/html/search/typedefs_10.js +61 -61
  309. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  310. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  311. package/SVF-doxygen/html/search/typedefs_13.js +33 -33
  312. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  313. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  314. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  315. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  316. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  317. package/SVF-doxygen/html/search/typedefs_6.js +56 -56
  318. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  319. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  320. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  321. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  322. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  323. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  324. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  325. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  326. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  327. package/SVF-doxygen/html/search/variables_0.js +151 -151
  328. package/SVF-doxygen/html/search/variables_1.js +75 -75
  329. package/SVF-doxygen/html/search/variables_10.js +97 -97
  330. package/SVF-doxygen/html/search/variables_11.js +44 -44
  331. package/SVF-doxygen/html/search/variables_12.js +92 -92
  332. package/SVF-doxygen/html/search/variables_13.js +76 -76
  333. package/SVF-doxygen/html/search/variables_14.js +14 -14
  334. package/SVF-doxygen/html/search/variables_15.js +48 -48
  335. package/SVF-doxygen/html/search/variables_16.js +9 -9
  336. package/SVF-doxygen/html/search/variables_17.js +1 -1
  337. package/SVF-doxygen/html/search/variables_18.js +2 -2
  338. package/SVF-doxygen/html/search/variables_2.js +38 -38
  339. package/SVF-doxygen/html/search/variables_3.js +142 -142
  340. package/SVF-doxygen/html/search/variables_4.js +55 -55
  341. package/SVF-doxygen/html/search/variables_5.js +37 -37
  342. package/SVF-doxygen/html/search/variables_6.js +66 -66
  343. package/SVF-doxygen/html/search/variables_7.js +34 -34
  344. package/SVF-doxygen/html/search/variables_8.js +7 -7
  345. package/SVF-doxygen/html/search/variables_9.js +78 -78
  346. package/SVF-doxygen/html/search/variables_a.js +4 -4
  347. package/SVF-doxygen/html/search/variables_b.js +10 -10
  348. package/SVF-doxygen/html/search/variables_c.js +45 -45
  349. package/SVF-doxygen/html/search/variables_d.js +56 -56
  350. package/SVF-doxygen/html/search/variables_e.js +123 -123
  351. package/SVF-doxygen/html/search/variables_f.js +30 -30
  352. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  353. package/SVF-doxygen/html/svf-ex_8cpp.html +1 -1
  354. package/SVF-doxygen/html/svf-ex_8cpp_source.html +1 -1
  355. package/package.json +1 -1
  356. package/svf/lib/MemoryModel/AccessPath.cpp +3 -12
  357. package/svf/lib/MemoryModel/PointerAnalysis.cpp +0 -3
  358. package/svf/lib/SVFIR/SVFType.cpp +1 -2
  359. package/svf/lib/SVFIR/SymbolTableInfo.cpp +1 -5
  360. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +1 -34
  361. package/svf-llvm/lib/LLVMUtil.cpp +1 -32
  362. package/svf-llvm/lib/SymbolTableBuilder.cpp +8 -8
@@ -123,253 +123,245 @@ $(function() {
123
123
  <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
124
124
  <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div>
125
125
  <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
126
- <div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18"> 63</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">AccessPath::getElementNum</a>(<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>)<span class="keyword"> const</span></div>
127
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="keyword"></span>{</div>
126
+ <div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18"> 62</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">AccessPath::getElementNum</a>(<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>)<span class="keyword"> const</span></div>
127
+ <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword"></span>{</div>
128
+ <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; assert(!SVFUtil::isa&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>) &amp;&amp; <span class="stringliteral">&quot;can&#39;t be pointer type&quot;</span>);</div>
128
129
  <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
129
130
  <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFArrayType, SVFStructType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
130
131
  <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div>
131
132
  <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a811a3489df0f793c7a5482d31d470a4c">getNumOfFlattenElements</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>);</div>
132
133
  <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div>
133
- <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>
134
+ <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() || SVFUtil::isa&lt;SVFFunctionType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
134
135
  <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div>
135
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// TODO: getPtrElementType to be removed</span></div>
136
- <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>
137
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> getElementNum(pty-&gt;getPtrElementType());</div>
138
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span></div>
139
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> 1;</div>
140
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
141
- <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>
142
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div>
143
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> 1;</div>
144
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
145
- <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">else</span></div>
146
- <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div>
147
- <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>
148
- <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>
149
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; abort();</div>
150
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
151
- <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;}</div>
152
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
153
- <div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a43dc770c4458c6ac58c591974b93fc57"> 98</a></span>&#160;<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="classSVF_1_1AccessPath.html#a43dc770c4458c6ac58c591974b93fc57">AccessPath::computeConstantByteOffset</a>()<span class="keyword"> const</span></div>
154
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword"></span>{</div>
155
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; assert(isConstantOffset() &amp;&amp; <span class="stringliteral">&quot;not a constant offset&quot;</span>);</div>
156
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
157
- <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>
158
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = idxOperandPairs.size() - 1; i &gt;= 0; i--)</div>
159
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div>
160
- <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>
161
- <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 = idxOperandPairs[i].first-&gt;getValue();</div>
162
- <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> = idxOperandPairs[i].second;</div>
163
- <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>
164
- <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>
165
- <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>
166
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div>
167
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; type2 = arrType-&gt;getTypeOfElement();</div>
168
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
169
- <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>
170
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
171
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; type2 = gepSrcPointeeType();</div>
172
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div>
173
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; </div>
174
- <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>
175
- <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>
176
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div>
177
- <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>
178
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div>
179
- <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>
180
- <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>
181
- <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>
182
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div>
183
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div>
184
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">else</span></div>
185
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div>
186
- <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>
187
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
188
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div>
189
- <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>
190
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div>
191
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div>
192
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; </div>
193
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment">// e.g. idxOperandVar: i32 2 idxOperandType: %struct.Student = type { i32, [i8 x 12], i32 }</span></div>
194
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment">// we accumulate field 0 (i32) byte size (4 Bytes), and field 1 ([i8x12]) byte size (12 Bytes)</span></div>
195
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment">// then the return byte offset is 16 Bytes.</span></div>
196
- <div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c"> 163</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c">AccessPath::getStructFieldOffset</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* idxOperandVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>* idxOperandType)<span class="keyword"> const</span></div>
197
- <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="keyword"></span>{</div>
198
- <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>
199
- <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>
200
- <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>
201
- <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div>
202
- <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>
203
- <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div>
204
- <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>
205
- <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>
206
- <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
207
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> structByteOffset;</div>
208
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
209
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">else</span></div>
210
- <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>
211
- <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</div>
212
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
213
- <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; </div>
214
- <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment">// struct inner{ int rollNumber; float percentage;};</span></div>
215
- <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment">// struct Student { struct inner rollNumber; char studentName[10][3];}</span></div>
216
- <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment">// char x = studentRecord[1].studentName[3][2];</span></div>
217
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; </div>
218
- <div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651"> 208</a></span>&#160;<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651">AccessPath::computeConstantOffset</a>()<span class="keyword"> const</span></div>
219
- <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="keyword"></span>{</div>
220
- <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; </div>
221
- <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; assert(isConstantOffset() &amp;&amp; <span class="stringliteral">&quot;not a constant offset&quot;</span>);</div>
222
- <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
223
- <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>
224
- <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>
225
- <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>
226
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">// node will be saved in getConstantStructFldIdx</span></div>
227
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> (idxOperandPairs.size() == 0)</div>
228
- <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> getConstantStructFldIdx();</div>
229
- <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = idxOperandPairs.size() - 1; i &gt;= 0; i--)</div>
230
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div>
231
- <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 = idxOperandPairs[i].first-&gt;getValue();</div>
232
- <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> = idxOperandPairs[i].second;</div>
233
- <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>
234
- <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>
235
- <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>
236
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div>
237
- <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>
238
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">continue</span>;</div>
239
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div>
240
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; </div>
241
- <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>
242
- <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>() * getElementNum(gepPointeeType);</div>
243
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">else</span></div>
244
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div>
245
- <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>
246
- <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>
247
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div>
248
- <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>
249
- <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>
250
- <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>
251
- <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>
252
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div>
253
- <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>
254
- <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>
255
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
256
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">else</span></div>
257
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div>
258
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
259
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div>
260
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; </div>
261
- <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>
262
- <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>
263
- <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div>
264
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; totalConstOffset += flattenOffset;</div>
265
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
266
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
267
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div>
268
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div>
136
+ <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> 1;</div>
137
+ <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div>
138
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">else</span></div>
139
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div>
140
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</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>
141
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;What other types for this gep?&quot;</span>);</div>
142
+ <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; abort();</div>
143
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div>
144
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div>
145
+ <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
146
+ <div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a43dc770c4458c6ac58c591974b93fc57"> 89</a></span>&#160;<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="classSVF_1_1AccessPath.html#a43dc770c4458c6ac58c591974b93fc57">AccessPath::computeConstantByteOffset</a>()<span class="keyword"> const</span></div>
147
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword"></span>{</div>
148
+ <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; assert(isConstantOffset() &amp;&amp; <span class="stringliteral">&quot;not a constant offset&quot;</span>);</div>
149
+ <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
150
+ <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalConstOffset = 0;</div>
151
+ <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = idxOperandPairs.size() - 1; i &gt;= 0; i--)</div>
152
+ <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div>
153
+ <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">// (2) %arrayidx = getelementptr inbounds [10 x i8], [10 x i8]* %b, i64 0, i64 8</span></div>
154
+ <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value = idxOperandPairs[i].first-&gt;getValue();</div>
155
+ <div class="line"><a name="l00106"></a><span class="lineno"> 106</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> = idxOperandPairs[i].second;</div>
156
+ <div class="line"><a name="l00110"></a><span class="lineno"> 110</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>
157
+ <div class="line"><a name="l00111"></a><span class="lineno"> 111</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>
158
+ <div class="line"><a name="l00112"></a><span class="lineno"> 112</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>
159
+ <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div>
160
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; type2 = arrType-&gt;getTypeOfElement();</div>
161
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div>
162
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</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>
163
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div>
164
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; type2 = gepSrcPointeeType();</div>
165
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div>
166
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
167
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</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>
168
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</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>
169
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div>
170
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</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>
171
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div>
172
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenIdx = structType-&gt;getTypeInfo()-&gt;getFlattenedFieldIdxVec()[structField];</div>
173
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</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>
174
+ <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; totalConstOffset += type2-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
175
+ <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div>
176
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
177
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">else</span></div>
178
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div>
179
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</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>
180
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
181
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
182
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</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>
183
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div>
184
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div>
185
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; </div>
186
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment">// e.g. idxOperandVar: i32 2 idxOperandType: %struct.Student = type { i32, [i8 x 12], i32 }</span></div>
187
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment">// we accumulate field 0 (i32) byte size (4 Bytes), and field 1 ([i8x12]) byte size (12 Bytes)</span></div>
188
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment">// then the return byte offset is 16 Bytes.</span></div>
189
+ <div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c"> 154</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c">AccessPath::getStructFieldOffset</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* idxOperandVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>* idxOperandType)<span class="keyword"> const</span></div>
190
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="keyword"></span>{</div>
191
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</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>
192
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> structByteOffset = 0;</div>
193
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</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>
194
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div>
195
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</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>
196
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div>
197
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</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>
198
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</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>
199
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div>
200
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> structByteOffset;</div>
201
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div>
202
+ <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">else</span></div>
203
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</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>
204
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div>
205
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; </div>
206
+ <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; </div>
207
+ <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment">// struct inner{ int rollNumber; float percentage;};</span></div>
208
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment">// struct Student { struct inner rollNumber; char studentName[10][3];}</span></div>
209
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment">// char x = studentRecord[1].studentName[3][2];</span></div>
210
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; </div>
211
+ <div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651"> 199</a></span>&#160;<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651">AccessPath::computeConstantOffset</a>()<span class="keyword"> const</span></div>
212
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="keyword"></span>{</div>
213
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
214
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; assert(isConstantOffset() &amp;&amp; <span class="stringliteral">&quot;not a constant offset&quot;</span>);</div>
215
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; </div>
216
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalConstOffset = 0;</div>
217
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">//After the model-const and model-array options are turned on,</span></div>
218
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// the gepstmt offset generated by the array on the global</span></div>
219
+ <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// node will be saved in getConstantStructFldIdx</span></div>
220
+ <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> (idxOperandPairs.size() == 0)</div>
221
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">return</span> getConstantStructFldIdx();</div>
222
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = idxOperandPairs.size() - 1; i &gt;= 0; i--)</div>
223
+ <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
224
+ <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value = idxOperandPairs[i].first-&gt;getValue();</div>
225
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</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> = idxOperandPairs[i].second;</div>
226
+ <div class="line"><a name="l00214"></a><span class="lineno"> 214</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>
227
+ <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; assert(op &amp;&amp; <span class="stringliteral">&quot;not a constant offset?&quot;</span>);</div>
228
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>==<span class="keyword">nullptr</span>)</div>
229
+ <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; {</div>
230
+ <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div>
231
+ <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">continue</span>;</div>
232
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div>
233
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; </div>
234
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
235
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>() * getElementNum(gepPointeeType);</div>
236
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">else</span></div>
237
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div>
238
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</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>
239
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> &gt;= 0)</div>
240
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div>
241
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</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>
242
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// if offset is larger than the size of getFlattenedElemIdxVec (overflow)</span></div>
243
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// set offset the last index of getFlattenedElemIdxVec to avoid assertion</span></div>
244
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</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>
245
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div>
246
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</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>
247
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = so.size() - 1;</div>
248
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div>
249
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">else</span></div>
250
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div>
251
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; </div>
252
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div>
253
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; </div>
254
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenOffset =</div>
255
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</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>
256
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div>
257
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; totalConstOffset += flattenOffset;</div>
258
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div>
259
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
260
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div>
261
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div>
262
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div>
263
+ <div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf"> 254</a></span>&#160;<a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">AccessPath::computeAllLocations</a>()<span class="keyword"> const</span></div>
264
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="keyword"></span>{</div>
265
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> result;</div>
266
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; result.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(getConstantStructFldIdx());</div>
267
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> result;</div>
269
268
  <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;}</div>
270
- <div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf"> 263</a></span>&#160;<a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">AccessPath::computeAllLocations</a>()<span class="keyword"> const</span></div>
271
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="keyword"></span>{</div>
272
- <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>
273
- <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>(getConstantStructFldIdx());</div>
274
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> result;</div>
275
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;}</div>
276
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; </div>
277
- <div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a6591b6092a829b0c874754b649087aa2"> 270</a></span>&#160;<a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> <a class="code" href="classSVF_1_1AccessPath.html#a6591b6092a829b0c874754b649087aa2">AccessPath::operator+</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; rhs)<span class="keyword"> const</span></div>
278
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="keyword"></span>{</div>
279
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; assert(gepPointeeType == 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>
280
- <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>
281
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; ap.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a> += getConstantStructFldIdx();</div>
282
- <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.<a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>())</div>
283
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; ap.<a class="code" href="classSVF_1_1AccessPath.html#a2358a8194b5e2c4bcbb5218dee7fcbcd">addOffsetVarAndGepTypePair</a>(<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.first, <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.second);</div>
284
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; </div>
285
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> ap;</div>
286
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;}</div>
287
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; </div>
288
- <div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#ae0f38a5f473af89678db2755667c3421"> 281</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AccessPath.html#ae0f38a5f473af89678db2755667c3421">AccessPath::operator&lt; </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; rhs)<span class="keyword"> const</span></div>
289
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="keyword"></span>{</div>
290
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (fldIdx != rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>)</div>
291
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> (fldIdx &lt; rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>);</div>
292
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">else</span></div>
293
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div>
294
- <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 = getIdxOperandPairVec();</div>
295
- <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>
296
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div>
297
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> (pairVec.size() &lt; rhsPairVec.size());</div>
298
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">else</span></div>
299
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div>
300
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; IdxOperandPairs::const_iterator it = pairVec.begin();</div>
301
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; IdxOperandPairs::const_iterator rhsIt = rhsPairVec.begin();</div>
302
- <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>
303
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div>
304
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> (*it) &lt; (*rhsIt);</div>
305
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div>
306
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; </div>
307
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
308
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div>
309
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; }</div>
310
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;}</div>
311
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; </div>
312
- <div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a98b8b3428479259fbafd9e527ecc09bb"> 305</a></span>&#160;<a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245">SVF::AccessPath::LSRelation</a> <a class="code" href="classSVF_1_1AccessPath.html#a98b8b3428479259fbafd9e527ecc09bb">AccessPath::checkRelation</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; LHS, <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; RHS)</div>
313
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;{</div>
314
- <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>
315
- <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>
316
- <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>
317
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div>
318
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div>
319
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span> Same;</div>
320
- <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>
321
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">return</span> Superset;</div>
322
- <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>
323
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> Subset;</div>
324
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">else</span></div>
325
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> Overlap;</div>
326
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div>
327
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">else</span></div>
328
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div>
329
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> NonOverlap;</div>
330
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
331
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div>
332
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; </div>
333
- <div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a4519477605a58d5821d05951a88abcd0"> 327</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1AccessPath.html#a4519477605a58d5821d05951a88abcd0">AccessPath::dump</a>()<span class="keyword"> const</span></div>
334
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="keyword"></span>{</div>
335
- <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>
336
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; std::stringstream rawstr(str);</div>
337
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; </div>
338
- <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; getConstantStructFldIdx();</div>
339
- <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>
340
- <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 = getIdxOperandPairVec();</div>
341
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; IdxOperandPairs::const_iterator it = vec.begin();</div>
342
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; IdxOperandPairs::const_iterator eit = vec.end();</div>
343
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div>
344
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div>
345
- <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>
346
- <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>
347
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
348
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }\n&quot;</span>;</div>
349
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
350
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;}</div>
269
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; </div>
270
+ <div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a6591b6092a829b0c874754b649087aa2"> 261</a></span>&#160;<a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> <a class="code" href="classSVF_1_1AccessPath.html#a6591b6092a829b0c874754b649087aa2">AccessPath::operator+</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; rhs)<span class="keyword"> const</span></div>
271
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keyword"></span>{</div>
272
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; assert(gepPointeeType == 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>
273
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap(rhs);</div>
274
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; ap.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a> += getConstantStructFldIdx();</div>
275
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a> : ap.<a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>())</div>
276
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; ap.<a class="code" href="classSVF_1_1AccessPath.html#a2358a8194b5e2c4bcbb5218dee7fcbcd">addOffsetVarAndGepTypePair</a>(<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.first, <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.second);</div>
277
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; </div>
278
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> ap;</div>
279
+ <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;}</div>
280
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; </div>
281
+ <div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#ae0f38a5f473af89678db2755667c3421"> 272</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AccessPath.html#ae0f38a5f473af89678db2755667c3421">AccessPath::operator&lt; </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; rhs)<span class="keyword"> const</span></div>
282
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="keyword"></span>{</div>
283
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> (fldIdx != rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>)</div>
284
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> (fldIdx &lt; rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>);</div>
285
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">else</span></div>
286
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; {</div>
287
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; pairVec = getIdxOperandPairVec();</div>
288
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</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>
289
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div>
290
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span> (pairVec.size() &lt; rhsPairVec.size());</div>
291
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">else</span></div>
292
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div>
293
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; IdxOperandPairs::const_iterator it = pairVec.begin();</div>
294
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; IdxOperandPairs::const_iterator rhsIt = rhsPairVec.begin();</div>
295
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">for</span> (; it != pairVec.end() &amp;&amp; rhsIt != rhsPairVec.end(); ++it, ++rhsIt)</div>
296
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; {</div>
297
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">return</span> (*it) &lt; (*rhsIt);</div>
298
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div>
299
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; </div>
300
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
301
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div>
302
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div>
303
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;}</div>
304
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; </div>
305
+ <div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a98b8b3428479259fbafd9e527ecc09bb"> 296</a></span>&#160;<a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245">SVF::AccessPath::LSRelation</a> <a class="code" href="classSVF_1_1AccessPath.html#a98b8b3428479259fbafd9e527ecc09bb">AccessPath::checkRelation</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; LHS, <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; RHS)</div>
306
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;{</div>
307
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</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>
308
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</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>
309
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">intersects</a>(rhsLocations))</div>
310
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div>
311
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div>
312
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> Same;</div>
313
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</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>
314
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">return</span> Superset;</div>
315
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</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>
316
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">return</span> Subset;</div>
317
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">else</span></div>
318
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> Overlap;</div>
319
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div>
320
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">else</span></div>
321
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div>
322
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">return</span> NonOverlap;</div>
323
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div>
324
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;}</div>
325
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; </div>
326
+ <div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a4519477605a58d5821d05951a88abcd0"> 318</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1AccessPath.html#a4519477605a58d5821d05951a88abcd0">AccessPath::dump</a>()<span class="keyword"> const</span></div>
327
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="keyword"></span>{</div>
328
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
329
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; std::stringstream rawstr(str);</div>
330
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; </div>
331
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;AccessPath\tField_Index: &quot;</span> &lt;&lt; getConstantStructFldIdx();</div>
332
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;,\tNum-Stride: {&quot;</span>;</div>
333
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; vec = getIdxOperandPairVec();</div>
334
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; IdxOperandPairs::const_iterator it = vec.begin();</div>
335
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; IdxOperandPairs::const_iterator eit = vec.end();</div>
336
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div>
337
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div>
338
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = it-&gt;second;</div>
339
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</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>
340
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
341
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }\n&quot;</span>;</div>
342
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
343
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;}</div>
351
344
  </div><!-- fragment --></div><!-- contents -->
352
- <div class="ttc" id="aclassSVF_1_1AccessPath_html_a1f279344b4061838d7b3498631bc907c"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c">SVF::AccessPath::getStructFieldOffset</a></div><div class="ttdeci">u32_t getStructFieldOffset(const SVFVar *idxOperandVar, const SVFStructType *idxOperandType) const</div><div class="ttdoc">Return byte offset from the beginning of the structure to the field where it is located for struct ty...</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00163">AccessPath.cpp:163</a></div></div>
345
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_a1f279344b4061838d7b3498631bc907c"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c">SVF::AccessPath::getStructFieldOffset</a></div><div class="ttdeci">u32_t getStructFieldOffset(const SVFVar *idxOperandVar, const SVFStructType *idxOperandType) const</div><div class="ttdoc">Return byte offset from the beginning of the structure to the field where it is located for struct ty...</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00154">AccessPath.cpp:154</a></div></div>
353
346
  <div class="ttc" id="anamespaceSVF_html_a5c4820681ef340339ddded756eb82ae1"><div class="ttname"><a href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">SVF::APOffset</a></div><div class="ttdeci">s64_t APOffset</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00061">SVFType.h:61</a></div></div>
354
347
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html_a16756e0545fd3d50ab89f45a2e83bb79"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">SVF::SparseBitVector::intersects</a></div><div class="ttdeci">bool intersects(const SparseBitVector&lt; ElementSize &gt; *RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01031">SparseBitVector.h:1031</a></div></div>
355
348
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a95b8031f1e15d49c7d68628be1d05aae"><div class="ttname"><a href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">SVF::SVFType::getByteSize</a></div><div class="ttdeci">u32_t getByteSize() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00323">SVFType.h:323</a></div></div>
356
349
  <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>
357
350
  <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>
358
351
  <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>
359
- <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>
360
352
  <div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
361
353
  <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>
362
354
  <div class="ttc" id="aAccessPath_8h_html"><div class="ttname"><a href="AccessPath_8h.html">AccessPath.h</a></div></div>
363
- <div class="ttc" id="aclassSVF_1_1AccessPath_html_ae0f38a5f473af89678db2755667c3421"><div class="ttname"><a href="classSVF_1_1AccessPath.html#ae0f38a5f473af89678db2755667c3421">SVF::AccessPath::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const AccessPath &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00281">AccessPath.cpp:281</a></div></div>
355
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_ae0f38a5f473af89678db2755667c3421"><div class="ttname"><a href="classSVF_1_1AccessPath.html#ae0f38a5f473af89678db2755667c3421">SVF::AccessPath::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const AccessPath &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00272">AccessPath.cpp:272</a></div></div>
364
356
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a2358a8194b5e2c4bcbb5218dee7fcbcd"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a2358a8194b5e2c4bcbb5218dee7fcbcd">SVF::AccessPath::addOffsetVarAndGepTypePair</a></div><div class="ttdeci">bool addOffsetVarAndGepTypePair(const SVFVar *var, const SVFType *gepIterType)</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00042">AccessPath.cpp:42</a></div></div>
365
357
  <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>
366
358
  <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>
367
- <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>
368
- <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>
359
+ <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#l00254">AccessPath.cpp:254</a></div></div>
360
+ <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#l00062">AccessPath.cpp:62</a></div></div>
369
361
  <div class="ttc" id="aSVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
370
362
  <div class="ttc" id="aOptions_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
371
363
  <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>
372
- <div class="ttc" id="aclassSVF_1_1AccessPath_html_a98b8b3428479259fbafd9e527ecc09bb"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a98b8b3428479259fbafd9e527ecc09bb">SVF::AccessPath::checkRelation</a></div><div class="ttdeci">LSRelation checkRelation(const AccessPath &amp;LHS, const AccessPath &amp;RHS)</div><div class="ttdoc">Check relations of two location sets.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00305">AccessPath.cpp:305</a></div></div>
364
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_a98b8b3428479259fbafd9e527ecc09bb"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a98b8b3428479259fbafd9e527ecc09bb">SVF::AccessPath::checkRelation</a></div><div class="ttdeci">LSRelation checkRelation(const AccessPath &amp;LHS, const AccessPath &amp;RHS)</div><div class="ttdoc">Check relations of two location sets.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00296">AccessPath.cpp:296</a></div></div>
373
365
  <div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00177">SVFValue.h:177</a></div></div>
374
366
  <div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
375
367
  <div class="ttc" id="aclassSVF_1_1SVFArrayType_html"><div class="ttname"><a href="classSVF_1_1SVFArrayType.html">SVF::SVFArrayType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00469">SVFType.h:469</a></div></div>
@@ -378,7 +370,7 @@ $(function() {
378
370
  <div class="ttc" id="acJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
379
371
  <div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00242">SVFType.h:242</a></div></div>
380
372
  <div class="ttc" id="aclassSVF_1_1SVFStructType_html"><div class="ttname"><a href="classSVF_1_1SVFStructType.html">SVF::SVFStructType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00436">SVFType.h:436</a></div></div>
381
- <div class="ttc" id="aclassSVF_1_1AccessPath_html_ae746362c42da05a641ae062658e40651"><div class="ttname"><a href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651">SVF::AccessPath::computeConstantOffset</a></div><div class="ttdeci">APOffset computeConstantOffset() const</div><div class="ttdoc">For example,.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00208">AccessPath.cpp:208</a></div></div>
373
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_ae746362c42da05a641ae062658e40651"><div class="ttname"><a href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651">SVF::AccessPath::computeConstantOffset</a></div><div class="ttdeci">APOffset computeConstantOffset() const</div><div class="ttdoc">For example,.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00199">AccessPath.cpp:199</a></div></div>
382
374
  <div class="ttc" id="aclassSVF_1_1SVFConstantInt_html"><div class="ttname"><a href="classSVF_1_1SVFConstantInt.html">SVF::SVFConstantInt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00961">SVFValue.h:961</a></div></div>
383
375
  <div class="ttc" id="aclassSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
384
376
  <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>
@@ -387,17 +379,17 @@ $(function() {
387
379
  <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>
388
380
  <div class="ttc" id="aclassSVF_1_1StInfo_html_aaf05447c20c9f90eea64ab6e88d6ab05"><div class="ttname"><a href="classSVF_1_1StInfo.html#aaf05447c20c9f90eea64ab6e88d6ab05">SVF::StInfo::getFlattenedFieldIdxVec</a></div><div class="ttdeci">std::vector&lt; u32_t &gt; &amp; getFlattenedFieldIdxVec()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00180">SVFType.h:180</a></div></div>
389
381
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a05850c17c2dbe42e5602dc8c9a70f3bd"><div class="ttname"><a href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">SVF::SVFType::getTypeInfo</a></div><div class="ttdeci">StInfo * getTypeInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00309">SVFType.h:309</a></div></div>
390
- <div class="ttc" id="aclassSVF_1_1AccessPath_html_a6591b6092a829b0c874754b649087aa2"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a6591b6092a829b0c874754b649087aa2">SVF::AccessPath::operator+</a></div><div class="ttdeci">AccessPath operator+(const AccessPath &amp;rhs) const</div><div class="ttdoc">Overload operators.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00270">AccessPath.cpp:270</a></div></div>
382
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_a6591b6092a829b0c874754b649087aa2"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a6591b6092a829b0c874754b649087aa2">SVF::AccessPath::operator+</a></div><div class="ttdeci">AccessPath operator+(const AccessPath &amp;rhs) const</div><div class="ttdoc">Overload operators.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00261">AccessPath.cpp:261</a></div></div>
391
383
  <div class="ttc" id="acJSON_8cpp_html_a95bf816579e97b6f33bdb5e25ed6d5de"><div class="ttname"><a href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a></div><div class="ttdeci">buffer offset</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01113">cJSON.cpp:1113</a></div></div>
392
384
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
393
385
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a403312192a96a9fd5e7d071481592a7f"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a403312192a96a9fd5e7d071481592a7f">SVF::AccessPath::isConstantOffset</a></div><div class="ttdeci">bool isConstantOffset() const</div><div class="ttdoc">Return TRUE if this is a constant location set.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00049">AccessPath.cpp:49</a></div></div>
394
386
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_aa1747064a0833855a5848ebf4a4d65fa"><div class="ttname"><a href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">SVF::AccessPath::fldIdx</a></div><div class="ttdeci">APOffset fldIdx</div><div class="ttdoc">Accumulated Constant Offsets.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00174">AccessPath.h:174</a></div></div>
395
- <div class="ttc" id="aclassSVF_1_1AccessPath_html_a4519477605a58d5821d05951a88abcd0"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a4519477605a58d5821d05951a88abcd0">SVF::AccessPath::dump</a></div><div class="ttdeci">std::string dump() const</div><div class="ttdoc">Dump location set.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00327">AccessPath.cpp:327</a></div></div>
387
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_a4519477605a58d5821d05951a88abcd0"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a4519477605a58d5821d05951a88abcd0">SVF::AccessPath::dump</a></div><div class="ttdeci">std::string dump() const</div><div class="ttdoc">Dump location set.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00318">AccessPath.cpp:318</a></div></div>
396
388
  <div class="ttc" id="aclassSVF_1_1Options_html_aaab923c093730b1670a54f09340b1bd5"><div class="ttname"><a href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const Option&lt; u32_t &gt; MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object.</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00038">Options.h:38</a></div></div>
397
389
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_aabb6c9600fac408f36b9fde013597245"><div class="ttname"><a href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245">SVF::AccessPath::LSRelation</a></div><div class="ttdeci">LSRelation</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00059">AccessPath.h:59</a></div></div>
398
390
  <div class="ttc" id="aclassSVF_1_1StInfo_html_a055697f565cb9d73b41110090fe50159"><div class="ttname"><a href="classSVF_1_1StInfo.html#a055697f565cb9d73b41110090fe50159">SVF::StInfo::getOriginalElemType</a></div><div class="ttdeci">const SVFType * getOriginalElemType(u32_t fldIdx) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00026">SVFValue.cpp:26</a></div></div>
399
391
  <div class="ttc" id="aclassSVF_1_1SVFConstantInt_html_a73f04bdfc19261b65164b98787bc2ed4"><div class="ttname"><a href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">SVF::SVFConstantInt::getSExtValue</a></div><div class="ttdeci">s64_t getSExtValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00989">SVFValue.h:989</a></div></div>
400
- <div class="ttc" id="aclassSVF_1_1AccessPath_html_a43dc770c4458c6ac58c591974b93fc57"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a43dc770c4458c6ac58c591974b93fc57">SVF::AccessPath::computeConstantByteOffset</a></div><div class="ttdeci">APOffset computeConstantByteOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00098">AccessPath.cpp:98</a></div></div>
392
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_a43dc770c4458c6ac58c591974b93fc57"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a43dc770c4458c6ac58c591974b93fc57">SVF::AccessPath::computeConstantByteOffset</a></div><div class="ttdeci">APOffset computeConstantByteOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00089">AccessPath.cpp:89</a></div></div>
401
393
  <div class="ttc" id="anamespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
402
394
  <div class="ttc" id="aclassSVF_1_1StInfo_html_a55e5fd85f232c1867c5c6a73646d53eb"><div class="ttname"><a href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">SVF::StInfo::getFlattenedElemIdxVec</a></div><div class="ttdeci">std::vector&lt; u32_t &gt; &amp; getFlattenedElemIdxVec()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00184">SVFType.h:184</a></div></div>
403
395
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream &amp; errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>