svf-tools 1.0.332 → 1.0.336

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 (289) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +4 -4
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -2
  5. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +3 -3
  6. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +17 -8
  7. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  8. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
  9. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
  10. package/SVF-doxygen/html/html/DCHG_8h_source.html +5 -4
  11. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
  12. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  14. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +3 -3
  15. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
  17. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +4 -4
  18. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +4 -4
  19. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +5 -5
  20. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/LocationSet_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  24. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +6 -6
  25. package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
  26. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  27. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  28. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
  30. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
  32. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  33. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +3 -3
  34. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
  35. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +6 -6
  36. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +18 -18
  37. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +37 -37
  38. package/SVF-doxygen/html/html/SVFIR_8h_source.html +27 -27
  39. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  40. package/SVF-doxygen/html/html/SVFStatements_8h.html +14 -12
  41. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +131 -123
  42. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +18 -18
  43. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +132 -129
  44. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
  45. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +5 -4
  46. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -3
  47. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +2 -2
  48. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  49. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +10 -10
  50. package/SVF-doxygen/html/html/VFGNode_8h_source.html +13 -13
  51. package/SVF-doxygen/html/html/VFG_8cpp_source.html +25 -25
  52. package/SVF-doxygen/html/html/VFG_8h_source.html +18 -17
  53. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/html/annotated.html +271 -270
  55. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +16 -10
  56. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +36 -14
  57. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.png +0 -0
  58. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  59. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
  60. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
  61. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +3 -3
  62. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +4 -4
  63. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -2
  64. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt-members.html +145 -0
  65. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +770 -0
  66. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.png +0 -0
  67. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +4 -4
  68. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +7 -11
  69. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +19 -138
  70. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
  71. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +2 -2
  72. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +39 -39
  73. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  74. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
  75. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode-members.html +3 -3
  76. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +18 -18
  77. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +19 -13
  78. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +43 -21
  79. package/SVF-doxygen/html/html/classSVF_1_1CallPE.png +0 -0
  80. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +37 -40
  81. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +14 -22
  82. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +37 -40
  83. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +15 -23
  84. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +48 -51
  85. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +18 -26
  86. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +7 -11
  87. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +20 -139
  88. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
  89. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +18 -11
  90. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
  91. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +16 -10
  92. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +36 -14
  93. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.png +0 -0
  94. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge-members.html +3 -3
  95. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +19 -19
  96. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
  97. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +37 -40
  98. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +16 -24
  99. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +36 -39
  100. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +15 -23
  101. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +37 -40
  102. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +21 -29
  103. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  106. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +5 -5
  107. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +3 -9
  108. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
  109. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +49 -52
  110. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +53 -61
  111. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +23 -15
  112. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +166 -69
  113. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
  114. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +45 -48
  115. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +40 -48
  116. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +12 -12
  117. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  118. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +2 -2
  119. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  120. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
  121. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
  122. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +16 -10
  123. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +36 -14
  124. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.png +0 -0
  125. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +1 -1
  126. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +12 -12
  127. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +10 -10
  128. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +6 -6
  129. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +36 -29
  130. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +250 -31
  131. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +2 -2
  132. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +14 -14
  133. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +51 -46
  134. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +53 -93
  135. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.png +0 -0
  136. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +37 -40
  139. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +34 -42
  140. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
  141. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +4 -4
  142. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +5 -9
  144. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +18 -137
  145. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +7 -7
  146. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +16 -10
  147. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +43 -21
  148. package/SVF-doxygen/html/html/classSVF_1_1RetPE.png +0 -0
  149. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +36 -39
  150. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +16 -24
  151. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +61 -53
  154. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +22 -16
  156. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +12 -8
  157. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
  158. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +28 -25
  159. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +185 -107
  160. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
  161. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +16 -10
  162. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +36 -14
  163. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.png +0 -0
  164. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +13 -9
  165. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +2 -2
  166. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +18 -12
  167. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +35 -13
  168. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.png +0 -0
  169. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +17 -11
  170. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +35 -13
  171. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.png +0 -0
  172. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  173. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +17 -17
  174. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +2 -2
  175. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +32 -32
  176. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  177. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +34 -34
  178. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +36 -39
  179. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +19 -27
  180. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +36 -39
  181. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +16 -24
  182. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +52 -45
  183. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +56 -25
  184. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.png +0 -0
  185. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
  186. package/SVF-doxygen/html/html/classes.html +91 -93
  187. package/SVF-doxygen/html/html/functions_a.html +18 -15
  188. package/SVF-doxygen/html/html/functions_c.html +16 -15
  189. package/SVF-doxygen/html/html/functions_func.html +11 -8
  190. package/SVF-doxygen/html/html/functions_func_c.html +24 -23
  191. package/SVF-doxygen/html/html/functions_func_g.html +43 -35
  192. package/SVF-doxygen/html/html/functions_func_o.html +5 -3
  193. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  194. package/SVF-doxygen/html/html/functions_func_t.html +1 -0
  195. package/SVF-doxygen/html/html/functions_g.html +38 -30
  196. package/SVF-doxygen/html/html/functions_i.html +7 -6
  197. package/SVF-doxygen/html/html/functions_l.html +4 -4
  198. package/SVF-doxygen/html/html/functions_m.html +1 -1
  199. package/SVF-doxygen/html/html/functions_o.html +12 -10
  200. package/SVF-doxygen/html/html/functions_p.html +12 -8
  201. package/SVF-doxygen/html/html/functions_r.html +1 -1
  202. package/SVF-doxygen/html/html/functions_rela.html +56 -1
  203. package/SVF-doxygen/html/html/functions_s.html +17 -18
  204. package/SVF-doxygen/html/html/functions_t.html +4 -3
  205. package/SVF-doxygen/html/html/functions_type.html +2 -2
  206. package/SVF-doxygen/html/html/functions_v.html +11 -10
  207. package/SVF-doxygen/html/html/functions_vars_a.html +1 -1
  208. package/SVF-doxygen/html/html/functions_vars_l.html +1 -1
  209. package/SVF-doxygen/html/html/functions_vars_o.html +1 -1
  210. package/SVF-doxygen/html/html/functions_w.html +9 -5
  211. package/SVF-doxygen/html/html/hierarchy.html +17 -16
  212. package/SVF-doxygen/html/html/menudata.js +13 -1
  213. package/SVF-doxygen/html/html/namespaceSVF.html +2 -0
  214. package/SVF-doxygen/html/html/search/all_1.js +6 -5
  215. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  216. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  217. package/SVF-doxygen/html/html/search/all_13.js +11 -11
  218. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  219. package/SVF-doxygen/html/html/search/all_16.js +5 -5
  220. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  221. package/SVF-doxygen/html/html/search/all_3.js +2 -2
  222. package/SVF-doxygen/html/html/search/all_7.js +12 -8
  223. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  224. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  225. package/SVF-doxygen/html/html/search/all_d.js +3 -3
  226. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  227. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  228. package/SVF-doxygen/html/html/search/classes_0.js +2 -1
  229. package/SVF-doxygen/html/html/search/functions_0.js +4 -3
  230. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  231. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  232. package/SVF-doxygen/html/html/search/functions_13.js +1 -1
  233. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  234. package/SVF-doxygen/html/html/search/functions_6.js +12 -8
  235. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  236. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  237. package/SVF-doxygen/html/html/search/related_4.js +1 -2
  238. package/SVF-doxygen/html/html/search/related_5.js +2 -1
  239. package/SVF-doxygen/html/html/search/related_6.js +1 -4
  240. package/SVF-doxygen/html/html/search/related_7.js +4 -1
  241. package/SVF-doxygen/html/html/search/related_8.js +1 -5
  242. package/SVF-doxygen/html/html/search/related_9.js +6 -2
  243. package/SVF-doxygen/html/html/search/related_a.js +2 -1
  244. package/SVF-doxygen/html/html/search/related_b.html +26 -0
  245. package/SVF-doxygen/html/html/search/related_b.js +5 -0
  246. package/SVF-doxygen/html/html/search/searchdata.js +1 -1
  247. package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
  248. package/SVF-doxygen/html/html/search/variables_1.js +1 -1
  249. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  250. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  251. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  252. package/SVF-doxygen/html/html/search/variables_f.js +1 -1
  253. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  254. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +3 -3
  255. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  256. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +2 -2
  257. package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
  258. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -2
  259. package/images/svf-stat.pdf +0 -0
  260. package/include/Graphs/ConsG.h +1 -1
  261. package/include/Graphs/ConsGEdge.h +2 -2
  262. package/include/Graphs/ICFGNode.h +3 -3
  263. package/include/Graphs/VFG.h +4 -4
  264. package/include/MemoryModel/LocationSet.h +3 -3
  265. package/include/MemoryModel/SVFIR.h +1 -1
  266. package/include/MemoryModel/SVFStatements.h +378 -308
  267. package/include/MemoryModel/SVFVariables.h +31 -30
  268. package/include/SVF-FE/DCHG.h +3 -3
  269. package/include/SVF-FE/SVFIRBuilder.h +2 -2
  270. package/include/Util/IRAnnotator.h +1 -1
  271. package/lib/Graphs/ConsG.cpp +25 -25
  272. package/lib/Graphs/VFG.cpp +10 -10
  273. package/lib/MSSA/MemRegion.cpp +5 -5
  274. package/lib/MemoryModel/LocationSet.cpp +2 -2
  275. package/lib/MemoryModel/PAGBuilderFromFile.cpp +1 -1
  276. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  277. package/lib/MemoryModel/SVFIR.cpp +9 -9
  278. package/lib/MemoryModel/SVFStatements.cpp +11 -11
  279. package/lib/MemoryModel/SVFVariables.cpp +2 -2
  280. package/lib/MemoryModel/SymbolTableInfo.cpp +2 -2
  281. package/lib/SVF-FE/DCHG.cpp +1 -1
  282. package/lib/SVF-FE/Graph2Json.cpp +1 -1
  283. package/lib/SVF-FE/SVFIRBuilder.cpp +3 -3
  284. package/lib/SVF-FE/SymbolTableBuilder.cpp +16 -3
  285. package/lib/Util/TypeBasedHeapCloning.cpp +5 -5
  286. package/lib/WPA/AndersenSFR.cpp +2 -2
  287. package/lib/WPA/CSC.cpp +2 -2
  288. package/lib/WPA/FlowSensitiveTBHC.cpp +3 -3
  289. package/package.json +1 -1
@@ -184,8 +184,8 @@ Private Attributes</h2></td></tr>
184
184
  <p>Analyse types of all flattened fields of this object. </p>
185
185
  <p>Analyse types of all flattened fields of this object </p>
186
186
 
187
- <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00495">495</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
188
- <div class="fragment"><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;{</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * refty = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;PointerType&gt;(refty) &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = refty-&gt;getElementType();</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordtype">bool</span> isPtrObj = <span class="keyword">false</span>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="comment">// Find the inter nested array element</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *AT= SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; elemTy = AT-&gt;getElementType();</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span>(elemTy-&gt;isPointerTy())</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer()</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; &amp;&amp; SVFUtil::isa&lt;ConstantArray&gt;(SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">ObjTypeInfo::CONST_ARRAY_OBJ</a>);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">ObjTypeInfo::VAR_ARRAY_OBJ</a>);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *ST= SVFUtil::dyn_cast&lt;StructType&gt;(elemTy))</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keyword">const</span> std::vector&lt;FlattenedFieldInfo&gt;&amp; flattenFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">getFlattenedFieldInfoVec</a>(ST);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">for</span>(std::vector&lt;FlattenedFieldInfo&gt;::const_iterator it = flattenFields.begin(), eit = flattenFields.end();</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span>((*it).getFlattenElemTy()-&gt;isPointerTy())</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer()</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; &amp;&amp; SVFUtil::isa&lt;ConstantStruct&gt;(SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">ObjTypeInfo::CONST_STRUCT_OBJ</a>);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">ObjTypeInfo::VAR_STRUCT_OBJ</a>);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTy-&gt;isPointerTy())</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">if</span>(isPtrObj)</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">ObjTypeInfo::HASPTR_OBJ</a>);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;}</div><div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">SVF::ObjTypeInfo::CONST_ARRAY_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00593">SymbolTableInfo.h:593</a></div></div>
187
+ <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00502">502</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
188
+ <div class="fragment"><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;{</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * refty = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;PointerType&gt;(refty) &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = refty-&gt;getElementType();</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordtype">bool</span> isPtrObj = <span class="keyword">false</span>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="comment">// Find the inter nested array element</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *AT= SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; elemTy = AT-&gt;getElementType();</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span>(elemTy-&gt;isPointerTy())</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer()</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; &amp;&amp; SVFUtil::isa&lt;ConstantArray&gt;(SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">ObjTypeInfo::CONST_ARRAY_OBJ</a>);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">ObjTypeInfo::VAR_ARRAY_OBJ</a>);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *ST= SVFUtil::dyn_cast&lt;StructType&gt;(elemTy))</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keyword">const</span> std::vector&lt;FlattenedFieldInfo&gt;&amp; flattenFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">getFlattenedFieldInfoVec</a>(ST);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">for</span>(std::vector&lt;FlattenedFieldInfo&gt;::const_iterator it = flattenFields.begin(), eit = flattenFields.end();</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">if</span>((*it).getFlattenElemTy()-&gt;isPointerTy())</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer()</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; &amp;&amp; SVFUtil::isa&lt;ConstantStruct&gt;(SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">ObjTypeInfo::CONST_STRUCT_OBJ</a>);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">ObjTypeInfo::VAR_STRUCT_OBJ</a>);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTy-&gt;isPointerTy())</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">if</span>(isPtrObj)</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">ObjTypeInfo::HASPTR_OBJ</a>);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;}</div><div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">SVF::ObjTypeInfo::CONST_ARRAY_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00593">SymbolTableInfo.h:593</a></div></div>
189
189
  <div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
190
190
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
191
191
  <div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00108">BasicTypes.h:108</a></div></div>
@@ -463,18 +463,20 @@ Private Attributes</h2></td></tr>
463
463
  <p>Create an objectInfo based on LLVM value. </p>
464
464
 
465
465
  <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00460">460</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
466
- <div class="fragment"><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;{</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refTy = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(val);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="comment">// We consider two types of objects:</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="comment">// (1) A heap/static object from a callsite</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">if</span> (I &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(I))</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">getRefTypeOfHeapAllocOrStatic</a>(I);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="comment">// (2) Other objects (e.g., alloca, global, etc.)</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span> (refTy)</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *objTy = refTy-&gt;getElementType();</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(val, objTy, <a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; }</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create an object with a non-pointer type.&quot;</span>);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(val-&gt;getName().str());</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(val) + <span class="stringliteral">&quot;)&quot;</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Memory object must be held by a pointer-typed ref value.&quot;</span>);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
466
+ <div class="fragment"><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;{</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refTy = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(val);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="comment">// We consider two types of objects:</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="comment">// (1) A heap/static object from a callsite</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">if</span> (I &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(I))</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">getRefTypeOfHeapAllocOrStatic</a>(I);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="comment">// (2) Other objects (e.g., alloca, global, etc.)</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span> (refTy)</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *objTy = refTy-&gt;getElementType();</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(val, objTy, <a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; }</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create an object with a non-pointer type.&quot;</span>);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(val-&gt;getName().str());</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(val) + <span class="stringliteral">&quot;)&quot;</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val)){</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(val, val-&gt;getType(), 0);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Memory object must be either (1) held by a pointer-typed ref value or (2) a constant value (e.g., 10).&quot;</span>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
467
467
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
468
468
  <div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00108">BasicTypes.h:108</a></div></div>
469
469
  <div class="ttc" id="classSVF_1_1Options_html_adfc1a5c6098d3867e29fc65ca9ffa1cc"><div class="ttname"><a href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &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#l00037">Options.h:37</a></div></div>
470
470
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
471
471
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00069">SVFUtil.cpp:69</a></div></div>
472
472
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
473
+ <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a3100246d9b0a58e53f2dbc8acf231afb"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">SVF::SymbolTableBuilder::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00046">SymbolTableBuilder.h:46</a></div></div>
473
474
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9232d260dc83d3a25cd98195ba76567a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">SVF::SVFUtil::getRefTypeOfHeapAllocOrStatic</a></div><div class="ttdeci">const PointerType * getRefTypeOfHeapAllocOrStatic(const CallSite cs)</div><div class="ttdoc">Get the reference type of heap/static object from an allocation site. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00227">LLVMUtil.h:227</a></div></div>
474
475
  <div class="ttc" id="util_8h_html_a23c00958edf66c39625a0d535dee57b7"><div class="ttname"><a href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a></div><div class="ttdeci">VOID_OR_INT abort()</div></div>
475
476
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
476
477
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00206">SVFUtil.h:206</a></div></div>
477
- <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a92ba9c9671e557ba950c14f418079696"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">SVF::SymbolTableBuilder::initTypeInfo</a></div><div class="ttdeci">void initTypeInfo(ObjTypeInfo *typeinfo, const Value *value)</div><div class="ttdoc">Initialize TypeInfo based on LLVM Value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00543">SymbolTableBuilder.cpp:543</a></div></div>
478
+ <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a92ba9c9671e557ba950c14f418079696"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">SVF::SymbolTableBuilder::initTypeInfo</a></div><div class="ttdeci">void initTypeInfo(ObjTypeInfo *typeinfo, const Value *value)</div><div class="ttdoc">Initialize TypeInfo based on LLVM Value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00550">SymbolTableBuilder.cpp:550</a></div></div>
479
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00267">SymbolTableInfo.cpp:267</a></div></div>
478
480
  <div class="ttc" id="classSVF_1_1ObjTypeInfo_html"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html">SVF::ObjTypeInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00579">SymbolTableInfo.h:579</a></div></div>
479
481
  </div><!-- fragment -->
480
482
  </div>
@@ -498,8 +500,8 @@ Private Attributes</h2></td></tr>
498
500
  <p>Return size of this object based on LLVM value. </p>
499
501
  <p>Return size of this Object </p>
500
502
 
501
- <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00596">596</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
502
- <div class="fragment"><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;{</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety = SVFUtil::cast&lt;PointerType&gt;(val-&gt;getType())-&gt;getElementType();</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(ety) || SVFUtil::isa&lt;ArrayType&gt;(ety))</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; numOfFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">getFlattenedFieldInfoVec</a>(ety).size();</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">return</span> numOfFields;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
503
+ <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00609">609</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
504
+ <div class="fragment"><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;{</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety = SVFUtil::cast&lt;PointerType&gt;(val-&gt;getType())-&gt;getElementType();</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(ety) || SVFUtil::isa&lt;ArrayType&gt;(ety))</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; numOfFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">getFlattenedFieldInfoVec</a>(ety).size();</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; }</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">return</span> numOfFields;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
503
505
  <div class="ttc" id="namespaceSVF_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="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
504
506
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00059">SymbolTableInfo.cpp:59</a></div></div>
505
507
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9ca564bdc1f40a2ccd30d98e0e4075b0"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">SVF::SymbolTableInfo::getFlattenedFieldInfoVec</a></div><div class="ttdeci">const std::vector&lt; FlattenedFieldInfo &gt; &amp; getFlattenedFieldInfoVec(const Type *T)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00330">SymbolTableInfo.cpp:330</a></div></div>
@@ -640,13 +642,13 @@ Private Attributes</h2></td></tr>
640
642
  <p>Initialize TypeInfo based on LLVM Value. </p>
641
643
  <p>Initialize the type info of an object </p>
642
644
 
643
- <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00543">543</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
644
- <div class="fragment"><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> objSize = 1;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="comment">// Global variable</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function&gt;(val))</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">ObjTypeInfo::FUNCTION_OBJ</a>);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;AllocaInst&gt;(val))</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">ObjTypeInfo::STACK_OBJ</a>);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">ObjTypeInfo::GLOBVAR_OBJ</a>);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;isConstantObjSym(val))</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af11159d515b7cf1146b5342f64ee2da1">ObjTypeInfo::CONST_OBJ</a>);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">analyzeHeapObjType</a>(val-&gt;getType());</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="comment">// Heap object, label its field as infinite here</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; objSize = -1;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">isStaticExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">analyzeStaticObjType</a>(val-&gt;getType());</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="comment">// static object allocated before main, label its field as infinite here</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; objSize = -1;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">ArgInProgEntryFunction</a>(val))</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">analyzeStaticObjType</a>(val-&gt;getType());</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">// user input data, label its field as infinite here</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; objSize = -1;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="stringliteral">&quot;what other object do we have??&quot;</span>);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">if</span>(objSize &gt; 0 &amp;&amp; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() &gt; objSize)</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">setMaxFieldOffsetLimit</a>(objSize);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a0f6e58467a6c280181c0366ca6331f98"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">SVF::SymbolTableBuilder::getObjSize</a></div><div class="ttdeci">u32_t getObjSize(const Value *val)</div><div class="ttdoc">Return size of this object based on LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00596">SymbolTableBuilder.cpp:596</a></div></div>
645
+ <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00550">550</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
646
+ <div class="fragment"><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; </div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> objSize = 1;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="comment">// Global variable</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function&gt;(val))</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">ObjTypeInfo::FUNCTION_OBJ</a>);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;AllocaInst&gt;(val))</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">ObjTypeInfo::STACK_OBJ</a>);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; }</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">ObjTypeInfo::GLOBVAR_OBJ</a>);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;isConstantObjSym(val))</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af11159d515b7cf1146b5342f64ee2da1">ObjTypeInfo::CONST_OBJ</a>);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">analyzeHeapObjType</a>(val-&gt;getType());</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="comment">// Heap object, label its field as infinite here</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; objSize = -1;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">isStaticExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">analyzeStaticObjType</a>(val-&gt;getType());</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="comment">// static object allocated before main, label its field as infinite here</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; objSize = -1;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">ArgInProgEntryFunction</a>(val))</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">analyzeStaticObjType</a>(val-&gt;getType());</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="comment">// user input data, label its field as infinite here</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; objSize = -1;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val))</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af11159d515b7cf1146b5342f64ee2da1">ObjTypeInfo::CONST_OBJ</a>);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="stringliteral">&quot;what other object do we have??&quot;</span>);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">if</span>(objSize &gt; 0 &amp;&amp; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() &gt; objSize)</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">setMaxFieldOffsetLimit</a>(objSize);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a0f6e58467a6c280181c0366ca6331f98"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">SVF::SymbolTableBuilder::getObjSize</a></div><div class="ttdeci">u32_t getObjSize(const Value *val)</div><div class="ttdoc">Return size of this object based on LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00609">SymbolTableBuilder.cpp:609</a></div></div>
645
647
  <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a9fff869c63776c6ebeff78933e0f6092"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">SVF::ObjTypeInfo::setMaxFieldOffsetLimit</a></div><div class="ttdeci">void setMaxFieldOffsetLimit(u32_t limit)</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00644">SymbolTableInfo.h:644</a></div></div>
646
648
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4d4191a1c81d80bf26aac120ed880135"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">SVF::SVFUtil::ArgInProgEntryFunction</a></div><div class="ttdeci">bool ArgInProgEntryFunction(const Value *val)</div><div class="ttdoc">Return true if this is an argument of a program entry function (e.g. main) </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00452">LLVMUtil.h:452</a></div></div>
647
649
  <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830af11159d515b7cf1146b5342f64ee2da1"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af11159d515b7cf1146b5342f64ee2da1">SVF::ObjTypeInfo::CONST_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00594">SymbolTableInfo.h:594</a></div></div>
648
650
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
649
- <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a403767d4aee3cf36ef9655e734e0b74f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">SVF::SymbolTableBuilder::analyzeGlobalStackObjType</a></div><div class="ttdeci">void analyzeGlobalStackObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of all flattened fields of this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00495">SymbolTableBuilder.cpp:495</a></div></div>
651
+ <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a403767d4aee3cf36ef9655e734e0b74f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">SVF::SymbolTableBuilder::analyzeGlobalStackObjType</a></div><div class="ttdeci">void analyzeGlobalStackObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of all flattened fields of this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00502">SymbolTableBuilder.cpp:502</a></div></div>
650
652
  <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a81bc3d785062c7e527ecf8e564cd52a4"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">SVF::ObjTypeInfo::getMaxFieldOffsetLimit</a></div><div class="ttdeci">u32_t getMaxFieldOffsetLimit()</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00638">SymbolTableInfo.h:638</a></div></div>
651
653
  <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_ad6fb2bfae3d4b73a6821a87106f65f49"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">SVF::ObjTypeInfo::setFlag</a></div><div class="ttdeci">void setFlag(MEMTYPE mask)</div><div class="ttdoc">Flag for this object type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00651">SymbolTableInfo.h:651</a></div></div>
652
654
  <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_aa8b97a2cbd2de56b3c6c5c0e2e0a2211"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">SVF::ObjTypeInfo::analyzeStaticObjType</a></div><div class="ttdeci">void analyzeStaticObjType(const Type *type)</div><div class="ttdoc">Analyse types of heap and static objects. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00527">SymbolTableInfo.cpp:527</a></div></div>
@@ -655,6 +657,8 @@ Private Attributes</h2></td></tr>
655
657
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae62938f722543d6d7fc201b685be1abf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00193">LLVMUtil.h:193</a></div></div>
656
658
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00059">SymbolTableInfo.cpp:59</a></div></div>
657
659
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a93ac673b885633849fa484938405ca75"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">SVF::SVFUtil::isHeapAllocExtCall</a></div><div class="ttdeci">bool isHeapAllocExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00115">LLVMUtil.h:115</a></div></div>
660
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00392">LLVMUtil.h:392</a></div></div>
661
+ <div class="ttc" id="util_8h_html_a23c00958edf66c39625a0d535dee57b7"><div class="ttname"><a href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a></div><div class="ttdeci">VOID_OR_INT abort()</div></div>
658
662
  <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">SVF::ObjTypeInfo::STACK_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00588">SymbolTableInfo.h:588</a></div></div>
659
663
  <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">SVF::ObjTypeInfo::FUNCTION_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00585">SymbolTableInfo.h:585</a></div></div>
660
664
  <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a66692043a56c327ac7ac00cc3126cd78"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">SVF::ObjTypeInfo::analyzeHeapObjType</a></div><div class="ttdeci">void analyzeHeapObjType(const Type *type)</div><div class="ttdoc">Analyse types of heap and static objects. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00516">SymbolTableInfo.cpp:516</a></div></div>
@@ -1309,12 +1309,12 @@ Friends</h2></td></tr>
1309
1309
  <p>if the offset is negative, it's possible that we're looking for an obj node out of range of current struct. Make the offset positive so we can still get a node within current struct to represent this obj. </p>
1310
1310
 
1311
1311
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00191">191</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1312
- <div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> offset = ls.<a class="code" href="classSVF_1_1LocationSet.html#ac098bc95299002b9016684fa7f2799ca">accumulateConstantOffset</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span>(offset &lt; 0)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create a gep node with negative offset.&quot;</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; offset = abs(offset);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> maxOffset = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#afccbd809fe7c2acf4741383987036807">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (maxOffset != 0)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; offset = offset % maxOffset;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; offset = 0;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(offset);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;}</div><div class="ttc" id="namespaceSVF_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="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
1312
+ <div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> offset = ls.<a class="code" href="classSVF_1_1LocationSet.html#a43de212ce81a29391cee13d8dbaa93eb">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span>(offset &lt; 0)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create a gep node with negative offset.&quot;</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; offset = abs(offset);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> maxOffset = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#afccbd809fe7c2acf4741383987036807">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (maxOffset != 0)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; offset = offset % maxOffset;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; offset = 0;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(offset);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;}</div><div class="ttc" id="namespaceSVF_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="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
1313
1313
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00069">SVFUtil.cpp:69</a></div></div>
1314
1314
  <div class="ttc" id="namespaceSVF_html_a2db29836a72e8d86e9baa6d8d55d2978"><div class="ttname"><a href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">SVF::Size_t</a></div><div class="ttdeci">signed long Size_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
1315
1315
  <div class="ttc" id="classSVF_1_1MemObj_html_afccbd809fe7c2acf4741383987036807"><div class="ttname"><a href="classSVF_1_1MemObj.html#afccbd809fe7c2acf4741383987036807">SVF::MemObj::getMaxFieldOffsetLimit</a></div><div class="ttdeci">Size_t getMaxFieldOffsetLimit() const</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00643">SymbolTableInfo.cpp:643</a></div></div>
1316
1316
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00072">LocationSet.h:72</a></div></div>
1317
- <div class="ttc" id="classSVF_1_1LocationSet_html_ac098bc95299002b9016684fa7f2799ca"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ac098bc95299002b9016684fa7f2799ca">SVF::LocationSet::accumulateConstantOffset</a></div><div class="ttdeci">Size_t accumulateConstantOffset() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00154">LocationSet.h:154</a></div></div>
1317
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a43de212ce81a29391cee13d8dbaa93eb"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a43de212ce81a29391cee13d8dbaa93eb">SVF::LocationSet::accumulateConstantFieldIdx</a></div><div class="ttdeci">Size_t accumulateConstantFieldIdx() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00154">LocationSet.h:154</a></div></div>
1318
1318
  </div><!-- fragment -->
1319
1319
  </div>
1320
1320
  </div>
@@ -70,14 +70,16 @@ $(function() {
70
70
  <p>This is the complete list of members for <a class="el" href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a>, including all inherited members.</p>
71
71
  <table class="directory">
72
72
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">Addr</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
73
- <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
74
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">Branch</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
75
- <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">Call</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
76
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1CallPE.html#a74951537cff8b14c1cf8eb706fca5049">CallPE</a>(SVFVar *s, SVFVar *d, const CallBlockNode *i, GEdgeKind k=SVFStmt::Call)</td><td class="entry"><a class="el" href="classSVF_1_1CallPE.html">SVF::CallPE</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
77
- <tr><td class="entry"><a class="el" href="classSVF_1_1TDForkPE.html#a79317f2ac92ace129a1ccf802406498d">classof</a>(const TDForkPE *)</td><td class="entry"><a class="el" href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
78
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1TDForkPE.html#a68f16df5a9b44dd2492c33fb0a1b5f0c">classof</a>(const SVFStmt *edge)</td><td class="entry"><a class="el" href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
79
- <tr><td class="entry"><a class="el" href="classSVF_1_1TDForkPE.html#a9e160158fe61958bcd6ef2a7da559018">classof</a>(const GenericPAGEdgeTy *edge)</td><td class="entry"><a class="el" href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
80
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1CallPE.html#a6df0149f79122c5a7d517f75d0235e73">SVF::CallPE::classof</a>(const CallPE *)</td><td class="entry"><a class="el" href="classSVF_1_1CallPE.html">SVF::CallPE</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
73
+ <tr><td class="entry"><a class="el" href="classSVF_1_1AssignStmt.html#aff4c35109790daed3c6170c985153620">AssignStmt</a>(SVFVar *s, SVFVar *d, GEdgeFlag k)</td><td class="entry"><a class="el" href="classSVF_1_1AssignStmt.html">SVF::AssignStmt</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
74
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
75
+ <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">Branch</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
76
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">Call</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
77
+ <tr><td class="entry"><a class="el" href="classSVF_1_1CallPE.html#a74951537cff8b14c1cf8eb706fca5049">CallPE</a>(SVFVar *s, SVFVar *d, const CallBlockNode *i, GEdgeKind k=SVFStmt::Call)</td><td class="entry"><a class="el" href="classSVF_1_1CallPE.html">SVF::CallPE</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
78
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1TDForkPE.html#a79317f2ac92ace129a1ccf802406498d">classof</a>(const TDForkPE *)</td><td class="entry"><a class="el" href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
79
+ <tr><td class="entry"><a class="el" href="classSVF_1_1TDForkPE.html#a68f16df5a9b44dd2492c33fb0a1b5f0c">classof</a>(const SVFStmt *edge)</td><td class="entry"><a class="el" href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
80
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1TDForkPE.html#a9e160158fe61958bcd6ef2a7da559018">classof</a>(const GenericPAGEdgeTy *edge)</td><td class="entry"><a class="el" href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
81
+ <tr><td class="entry"><a class="el" href="classSVF_1_1CallPE.html#a6df0149f79122c5a7d517f75d0235e73">SVF::CallPE::classof</a>(const CallPE *)</td><td class="entry"><a class="el" href="classSVF_1_1CallPE.html">SVF::CallPE</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
82
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1AssignStmt.html#a4f94b6731f324e44fc4d4e06d7acdbf7">SVF::AssignStmt::classof</a>(const AssignStmt *)</td><td class="entry"><a class="el" href="classSVF_1_1AssignStmt.html">SVF::AssignStmt</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
81
83
  <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
82
84
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">Copy</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
83
85
  <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a93dec4c27088242a4b1b6aa82cea46b9">EdgeKindMask</a></td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
@@ -89,14 +91,18 @@ $(function() {
89
91
  <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a793c53e0b4f9a58099c096f0a0856495">getBB</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
90
92
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1CallPE.html#ac8f25219948d3a6ff205048e746338d5">getCallInst</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1CallPE.html">SVF::CallPE</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
91
93
  <tr><td class="entry"><a class="el" href="classSVF_1_1CallPE.html#a6a7a917cd6f1235b9453c9672f38c0ef">getCallSite</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1CallPE.html">SVF::CallPE</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
92
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
93
- <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
94
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::SVFStmt::getDstID</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
95
+ <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::SVFStmt::getDstNode</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
94
96
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#af7bb0d687fc61cae1de639c88e472491">getEdgeID</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
95
97
  <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
96
98
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
97
99
  <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a86628ea173dec4934322f5d1caf2e1db">getInst</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
98
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
99
- <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
100
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1AssignStmt.html#a973a2b79da223275ed6a1831837b89c7">getLHSVar</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1AssignStmt.html">SVF::AssignStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
101
+ <tr><td class="entry"><a class="el" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1AssignStmt.html">SVF::AssignStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
102
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1AssignStmt.html">SVF::AssignStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
103
+ <tr><td class="entry"><a class="el" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1AssignStmt.html">SVF::AssignStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
104
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVF::SVFStmt::getSrcID</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
105
+ <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::SVFStmt::getSrcNode</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
100
106
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a65ee8b43a3a4999eb112a197d1a9f882">getValue</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
101
107
  <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
102
108
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66">KindToSVFStmtMapTy</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>