svf-tools 1.0.402 → 1.0.405

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 (265) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
  2. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
  3. package/SVF-doxygen/html/html/CHG_8h_source.html +5 -6
  4. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +3 -3
  5. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +3 -2
  6. package/SVF-doxygen/html/html/CSC_8cpp_source.html +4 -4
  7. package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
  8. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +1 -2
  9. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +4 -4
  10. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  12. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
  13. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +2 -2
  14. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
  16. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +5 -5
  17. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  18. package/SVF-doxygen/html/html/ICFG_8h_source.html +3 -3
  19. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
  20. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -2
  21. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +5 -5
  22. package/SVF-doxygen/html/html/LocationSet_8h_source.html +7 -7
  23. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  24. package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +3 -3
  27. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +2 -2
  28. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +2 -2
  29. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -5
  30. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +10 -10
  31. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +4 -4
  32. package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
  33. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +6 -6
  34. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +5 -5
  35. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +1 -2
  36. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
  37. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -3
  38. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  39. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
  40. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  41. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  42. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  43. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  44. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  45. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
  46. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  47. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  48. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
  49. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +10 -10
  50. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  51. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +1 -1
  52. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  53. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  54. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +2 -2
  55. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +17 -17
  56. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  57. package/SVF-doxygen/html/html/classSVF_1_1CHEdge.html +1 -1
  58. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +3 -3
  59. package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +4 -4
  60. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +24 -24
  61. package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +1 -1
  62. package/SVF-doxygen/html/html/classSVF_1_1CSC-members.html +1 -1
  63. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +11 -11
  64. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  65. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
  67. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
  68. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  69. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +1 -1
  70. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +1 -1
  71. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +1 -1
  72. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +4 -4
  73. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +1 -2
  76. package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge.html +1 -1
  77. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +1 -1
  78. package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge.html +1 -1
  79. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  81. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +1 -1
  82. package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +1 -1
  83. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
  84. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  86. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +1 -1
  87. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +3 -3
  88. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +2 -2
  90. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  94. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +1 -1
  95. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
  96. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +2 -2
  97. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +2 -2
  98. package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge.html +1 -1
  99. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +13 -13
  101. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +2 -2
  102. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +16 -16
  103. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +12 -12
  106. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  107. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +1 -1
  108. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +7 -7
  110. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
  111. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  113. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +1 -1
  114. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +4 -4
  115. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +2 -2
  116. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +1 -1
  118. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  120. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +3 -3
  121. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +24 -24
  122. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  126. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge.html +1 -1
  128. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +5 -5
  131. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +48 -48
  132. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +1 -1
  135. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +9 -9
  137. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
  139. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile-members.html +1 -1
  141. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +8 -8
  142. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
  148. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
  150. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +1 -1
  154. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
  156. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +16 -16
  157. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +2 -2
  158. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +63 -63
  159. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
  160. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +2 -2
  161. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  166. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
  168. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +1 -1
  169. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +9 -9
  170. package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +1 -1
  171. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  172. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  173. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
  176. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  178. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +3 -3
  179. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
  185. package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge.html +1 -1
  186. package/SVF-doxygen/html/html/functions_a.html +6 -6
  187. package/SVF-doxygen/html/html/functions_b.html +1 -1
  188. package/SVF-doxygen/html/html/functions_f.html +2 -2
  189. package/SVF-doxygen/html/html/functions_func.html +6 -6
  190. package/SVF-doxygen/html/html/functions_func_f.html +1 -1
  191. package/SVF-doxygen/html/html/functions_func_g.html +9 -9
  192. package/SVF-doxygen/html/html/functions_func_i.html +1 -1
  193. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  194. package/SVF-doxygen/html/html/functions_func_v.html +1 -1
  195. package/SVF-doxygen/html/html/functions_g.html +9 -9
  196. package/SVF-doxygen/html/html/functions_i.html +1 -1
  197. package/SVF-doxygen/html/html/functions_l.html +1 -1
  198. package/SVF-doxygen/html/html/functions_n.html +1 -1
  199. package/SVF-doxygen/html/html/functions_s.html +3 -3
  200. package/SVF-doxygen/html/html/functions_type_n.html +1 -1
  201. package/SVF-doxygen/html/html/functions_type_s.html +1 -1
  202. package/SVF-doxygen/html/html/functions_v.html +3 -3
  203. package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
  204. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  205. package/SVF-doxygen/html/html/functions_vars_v.html +2 -2
  206. package/SVF-doxygen/html/html/namespaceSVF.html +5 -5
  207. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  208. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
  209. package/SVF-doxygen/html/html/namespacemembers_s.html +1 -1
  210. package/SVF-doxygen/html/html/namespacemembers_type_s.html +1 -1
  211. package/SVF-doxygen/html/html/search/all_1.js +4 -4
  212. package/SVF-doxygen/html/html/search/all_13.js +4 -4
  213. package/SVF-doxygen/html/html/search/all_16.js +3 -3
  214. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  215. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  216. package/SVF-doxygen/html/html/search/all_7.js +5 -5
  217. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  218. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  219. package/SVF-doxygen/html/html/search/all_e.js +1 -1
  220. package/SVF-doxygen/html/html/search/functions_0.js +4 -4
  221. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  222. package/SVF-doxygen/html/html/search/functions_13.js +1 -1
  223. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  224. package/SVF-doxygen/html/html/search/functions_6.js +5 -5
  225. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  226. package/SVF-doxygen/html/html/search/functions_a.js +1 -1
  227. package/SVF-doxygen/html/html/search/typedefs_11.js +2 -2
  228. package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
  229. package/SVF-doxygen/html/html/search/variables_16.js +2 -2
  230. package/SVF-doxygen/html/html/search/variables_2.js +1 -1
  231. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  232. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +2 -2
  233. package/include/Graphs/CHG.h +6 -6
  234. package/include/Graphs/ConsGEdge.h +1 -1
  235. package/include/Graphs/ICFG.h +1 -1
  236. package/include/Graphs/ICFGEdge.h +3 -3
  237. package/include/MemoryModel/LocationSet.h +5 -5
  238. package/include/MemoryModel/PAGBuilderFromFile.h +1 -1
  239. package/include/MemoryModel/SVFIR.h +1 -1
  240. package/include/MemoryModel/SVFStatements.h +4 -4
  241. package/include/MemoryModel/SVFVariables.h +2 -2
  242. package/include/MemoryModel/SymbolTableInfo.h +1 -1
  243. package/include/SVF-FE/SVFIRBuilder.h +2 -2
  244. package/include/Util/IRAnnotator.h +2 -2
  245. package/include/Util/SVFBasicTypes.h +1 -1
  246. package/include/WPA/AndersenSFR.h +1 -1
  247. package/include/WPA/CSC.h +1 -1
  248. package/lib/Graphs/ICFG.cpp +1 -1
  249. package/lib/MTA/MHP.cpp +2 -2
  250. package/lib/MemoryModel/LocationSet.cpp +3 -3
  251. package/lib/MemoryModel/PAGBuilderFromFile.cpp +2 -2
  252. package/lib/MemoryModel/SVFIR.cpp +1 -1
  253. package/lib/MemoryModel/SymbolTableInfo.cpp +3 -3
  254. package/lib/SVF-FE/CPPUtil.cpp +6 -6
  255. package/lib/SVF-FE/ICFGBuilder.cpp +1 -1
  256. package/lib/SVF-FE/LLVMUtil.cpp +1 -1
  257. package/lib/SVF-FE/SVFIRBuilder.cpp +17 -10
  258. package/lib/SVF-FE/SymbolTableBuilder.cpp +1 -1
  259. package/lib/Util/Conditions.cpp +1 -1
  260. package/lib/Util/ExtAPI.cpp +13 -0
  261. package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
  262. package/lib/WPA/AndersenSFR.cpp +6 -6
  263. package/lib/WPA/CSC.cpp +5 -5
  264. package/lib/WPA/TypeAnalysis.cpp +3 -3
  265. package/package.json +1 -1
@@ -910,12 +910,12 @@ Additional Inherited Members</h2></td></tr>
910
910
  <p>Statistics of CHA and callgraph. </p>
911
911
 
912
912
  <p class="definition">Definition at line <a class="el" href="TypeAnalysis_8cpp_source.html#l00097">97</a> of file <a class="el" href="TypeAnalysis_8cpp_source.html">TypeAnalysis.cpp</a>.</p>
913
- <div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;{</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a> *<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a> = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a>&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#ae2cc7cd0803dbd90639140e71b06b1b5">getCHGraph</a>());</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (chgraph == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;dumpCHAStats only implemented for standard CHGraph.\n&quot;</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> pure_abstract_class_num = 0,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; multi_inheritance_class_num = 0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it-&gt;second;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;class &quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1CHNode.html#af6e71c1a932464b1b615fc177f5af089">getName</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; pure_abstract_class_num++;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a224a394537fae62e64cf62a0d4fdd430">isMultiInheritance</a>())</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; multi_inheritance_class_num++;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;class_num:\t&quot;</span> &lt;&lt; chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;pure_abstract_class_num:\t&quot;</span> &lt;&lt; pure_abstract_class_num &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;multi_inheritance_class_num:\t&quot;</span> &lt;&lt; multi_inheritance_class_num &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> * count the following info:</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> * vtblnum</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> * total vfunction</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> * vtbl max vfunction</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> * pure abstract class</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> vtblnum = 0,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; vfunc_total = 0,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; vtbl_max = 0,</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; pure_abstract = 0;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; set&lt;const SVFFunction*&gt; allVirtualFunctions;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it-&gt;second;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; pure_abstract++;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> vfuncs_size = 0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> vector&lt;CHNode::FuncVector&gt;&amp; vecs = node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a5df1cf4d51bf3406d188c96bc9aae0af">getVirtualFunctionVectors</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">for</span> (vector&lt;CHNode::FuncVector&gt;::const_iterator vit = vecs.begin(),</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; veit = vecs.end(); vit != veit; ++vit)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; vfuncs_size += (*vit).size();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span> (vector&lt;const SVFFunction*&gt;::const_iterator fit = (*vit).begin(),</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; feit = (*vit).end(); fit != feit; ++fit)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = *fit;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; allVirtualFunctions.insert(func);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (vfuncs_size &gt; 0)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; vtblnum++;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (vfuncs_size &gt; vtbl_max)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; vtbl_max = vfuncs_size;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; vfunc_total = allVirtualFunctions.size();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;vtblnum:\t&quot;</span> &lt;&lt; vtblnum &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;vtbl_average:\t&quot;</span> &lt;&lt; (double)(vfunc_total)/vtblnum &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;vtbl_max:\t&quot;</span> &lt;&lt; vtbl_max &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
913
+ <div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;{</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a> *<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a> = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a>&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#ae2cc7cd0803dbd90639140e71b06b1b5">getCHGraph</a>());</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (chgraph == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;dumpCHAStats only implemented for standard CHGraph.\n&quot;</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pure_abstract_class_num = 0,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; multi_inheritance_class_num = 0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it-&gt;second;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;class &quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1CHNode.html#af6e71c1a932464b1b615fc177f5af089">getName</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; pure_abstract_class_num++;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a224a394537fae62e64cf62a0d4fdd430">isMultiInheritance</a>())</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; multi_inheritance_class_num++;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;class_num:\t&quot;</span> &lt;&lt; chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;pure_abstract_class_num:\t&quot;</span> &lt;&lt; pure_abstract_class_num &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;multi_inheritance_class_num:\t&quot;</span> &lt;&lt; multi_inheritance_class_num &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> * count the following info:</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> * vtblnum</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> * total vfunction</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> * vtbl max vfunction</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> * pure abstract class</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vtblnum = 0,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; vfunc_total = 0,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; vtbl_max = 0,</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; pure_abstract = 0;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; set&lt;const SVFFunction*&gt; allVirtualFunctions;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it-&gt;second;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; pure_abstract++;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vfuncs_size = 0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> vector&lt;CHNode::FuncVector&gt;&amp; vecs = node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a5df1cf4d51bf3406d188c96bc9aae0af">getVirtualFunctionVectors</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">for</span> (vector&lt;CHNode::FuncVector&gt;::const_iterator vit = vecs.begin(),</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; veit = vecs.end(); vit != veit; ++vit)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; vfuncs_size += (*vit).size();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span> (vector&lt;const SVFFunction*&gt;::const_iterator fit = (*vit).begin(),</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; feit = (*vit).end(); fit != feit; ++fit)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = *fit;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; allVirtualFunctions.insert(func);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (vfuncs_size &gt; 0)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; vtblnum++;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (vfuncs_size &gt; vtbl_max)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; vtbl_max = vfuncs_size;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; vfunc_total = allVirtualFunctions.size();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;vtblnum:\t&quot;</span> &lt;&lt; vtblnum &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;vtbl_average:\t&quot;</span> &lt;&lt; (double)(vfunc_total)/vtblnum &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;vtbl_max:\t&quot;</span> &lt;&lt; vtbl_max &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
914
914
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00414">GenericGraph.h:414</a></div></div>
915
915
  <div class="ttc" id="classSVF_1_1CHNode_html"><div class="ttname"><a href="classSVF_1_1CHNode.html">SVF::CHNode</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00104">CHG.h:104</a></div></div>
916
916
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00219">BasicTypes.h:219</a></div></div>
917
917
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00339">GenericGraph.h:339</a></div></div>
918
- <div class="ttc" id="namespaceSVF_html_abe09d99af006554a5c00803e9a89f9a6"><div class="ttname"><a href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">SVF::s64_t</a></div><div class="ttdeci">signed s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00080">SVFBasicTypes.h:80</a></div></div>
918
+ <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#l00077">SVFBasicTypes.h:77</a></div></div>
919
919
  <div class="ttc" id="classSVF_1_1CHGraph_html"><div class="ttname"><a href="classSVF_1_1CHGraph.html">SVF::CHGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00208">CHG.h:208</a></div></div>
920
920
  <div class="ttc" id="classSVF_1_1CHNode_html_a224a394537fae62e64cf62a0d4fdd430"><div class="ttname"><a href="classSVF_1_1CHNode.html#a224a394537fae62e64cf62a0d4fdd430">SVF::CHNode::isMultiInheritance</a></div><div class="ttdeci">bool isMultiInheritance() const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00157">CHG.h:157</a></div></div>
921
921
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
@@ -818,21 +818,21 @@ Private Attributes</h2></td></tr>
818
818
  <p>Returns the GEP object node(s) of base for ls. This may include clones. If there are no GEP objects, then getGepObjVar is called on the <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> (through base's getGepObjVar) which will create one. </p>
819
819
 
820
820
  <p class="definition">Definition at line <a class="el" href="TypeBasedHeapCloning_8cpp_source.html#l00142">142</a> of file <a class="el" href="TypeBasedHeapCloning_8cpp_source.html">TypeBasedHeapCloning.cpp</a>.</p>
821
- <div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">dchg</a> &amp;&amp; <span class="stringliteral">&quot;TBHC: DCHG not set!&quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// Set of GEP objects we will return.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> geps;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *node = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(base);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(node &amp;&amp; <span class="stringliteral">&quot;TBHC: base object node does not exist.&quot;</span>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *baseNode = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>&gt;(node);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(baseNode &amp;&amp; <span class="stringliteral">&quot;TBHC: base \&quot;object\&quot; node is not an object.&quot;</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="comment">// totalOffset is the offset from the real base (i.e. base of base),</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// offset is the offset into base, whether it is a field itself or not.</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> totalOffset = offset;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *baseGep = SVFUtil::dyn_cast&lt;GepObjVar&gt;(baseNode))</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; totalOffset += baseGep-&gt;getConstantFieldIdx();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *baseType = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">getType</a>(base);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="comment">// First field? Just return the whole object; same thing.</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="comment">// For arrays, we want things to work as normal because an array *object* is more</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">// like a pointer than a struct object.</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span> (offset == 0 &amp;&amp; baseType-&gt;getTag() != dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="comment">// The base object is the 0 gep object.</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ad07fb204258fccda89053514338e3804">addGepToObj</a>(base, base, 0);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; geps.set(base);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> geps;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (baseNode-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>()-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">// If it&#39;s field-insensitive, the base represents everything.</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; geps.set(base);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> geps;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="comment">// Caching on offset would improve performance but it seems minimal.</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;gepObjs = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#afe416f9ec57923f34ef1db3890a3f9e1">getGepObjs</a>(base);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gep : gepObjs)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *node = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(gep);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(node &amp;&amp; <span class="stringliteral">&quot;TBHC: expected gep node doesn&#39;t exist.&quot;</span>);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((SVFUtil::isa&lt;GepObjVar&gt;(node) || SVFUtil::isa&lt;FIObjVar&gt;(node))</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; &amp;&amp; <span class="stringliteral">&quot;TBHC: expected a GEP or FI object.&quot;</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gepNode = SVFUtil::dyn_cast&lt;GepObjVar&gt;(node))</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (gepNode-&gt;getConstantFieldIdx() == totalOffset)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; geps.set(gep);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// Definitely a FIObj (asserted), but we don&#39;t want to add it if</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// the object is field-sensitive because in that case it actually</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="comment">// represents the 0th field, not the whole object.</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (baseNode-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>()-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</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; geps.set(gep);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span> (geps.empty())</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// No gep node has even be created, so create one.</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newGep;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> newLS;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// fldIdx is what is returned by getConstantFieldIdx.</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; newLS.<a class="code" href="classSVF_1_1LocationSet.html#a15f6175372a785205c5f959b370c83b5">setFldIdx</a>(totalOffset);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#abce2ba326af69312c5971246cc4c10dc">isClone</a>(base))</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// Don&#39;t use ppag-&gt;getGepObjVar because base and it&#39;s original object</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// have the same memory object which is the key SVFIR uses.</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; newGep = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a16ad9c601a044731b982305a177dbda3">addCloneGepObjNode</a>(baseNode-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>(), newLS);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; newGep = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(base, newLS);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gep = SVFUtil::dyn_cast&lt;GepObjVar&gt;(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(newGep)))</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; gep-&gt;setBaseNode(base);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ad07fb204258fccda89053514338e3804">addGepToObj</a>(newGep, base, totalOffset);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *newGepType = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (baseType-&gt;getTag() == dwarf::DW_TAG_array_type || baseType-&gt;getTag() == dwarf::DW_TAG_pointer_type)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *arrayType = SVFUtil::dyn_cast&lt;DICompositeType&gt;(baseType))</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// Array access.</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; newGepType = arrayType-&gt;getBaseType();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *ptrType = SVFUtil::dyn_cast&lt;DIDerivedType&gt;(baseType))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">// Pointer access.</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; newGepType = ptrType-&gt;getBaseType();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(newGepType &amp;&amp; <span class="stringliteral">&quot;TBHC: newGepType is neither DIComposite nor DIDerived&quot;</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">// Get the canonical type because we got the type from the DIType infrastructure directly.</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; newGepType = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">dchg</a>-&gt;<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(newGepType);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="comment">// Must be a struct/class.</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="comment">// Don&#39;t use totalOffset because we&#39;re operating on the Gep object which is our parent</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// (i.e. field of some base, not the base itself).</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; newGepType = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">dchg</a>-&gt;<a class="code" href="classSVF_1_1DCHGraph.html#acaff636e6a9cf59363d6ee00435c04ff">getFieldType</a>(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">getType</a>(base), offset);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ac51cd735739a2499196a87323172a6a6">setType</a>(newGep, newGepType);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">// We call the object created in the non-TBHC analysis the original object.</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a14027d92c4f8e33d7487fe81acce6a85">setOriginalObj</a>(newGep, <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(baseNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), offset));</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a006243a1416f4950de254d0d62ba40b0">setAllocationSite</a>(newGep, 0);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; geps.set(newGep);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> geps;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;}</div><div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a14027d92c4f8e33d7487fe81acce6a85"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a14027d92c4f8e33d7487fe81acce6a85">SVF::TypeBasedHeapCloning::setOriginalObj</a></div><div class="ttdeci">void setOriginalObj(NodeID c, NodeID o)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00096">TypeBasedHeapCloning.cpp:96</a></div></div>
821
+ <div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">dchg</a> &amp;&amp; <span class="stringliteral">&quot;TBHC: DCHG not set!&quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// Set of GEP objects we will return.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> geps;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *node = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(base);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(node &amp;&amp; <span class="stringliteral">&quot;TBHC: base object node does not exist.&quot;</span>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *baseNode = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>&gt;(node);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(baseNode &amp;&amp; <span class="stringliteral">&quot;TBHC: base \&quot;object\&quot; node is not an object.&quot;</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="comment">// totalOffset is the offset from the real base (i.e. base of base),</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// offset is the offset into base, whether it is a field itself or not.</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> totalOffset = offset;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *baseGep = SVFUtil::dyn_cast&lt;GepObjVar&gt;(baseNode))</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; totalOffset += baseGep-&gt;getConstantFieldIdx();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *baseType = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">getType</a>(base);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="comment">// First field? Just return the whole object; same thing.</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="comment">// For arrays, we want things to work as normal because an array *object* is more</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">// like a pointer than a struct object.</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span> (offset == 0 &amp;&amp; baseType-&gt;getTag() != dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="comment">// The base object is the 0 gep object.</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ad07fb204258fccda89053514338e3804">addGepToObj</a>(base, base, 0);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; geps.set(base);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> geps;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (baseNode-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>()-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">// If it&#39;s field-insensitive, the base represents everything.</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; geps.set(base);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> geps;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="comment">// Caching on offset would improve performance but it seems minimal.</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;gepObjs = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#afe416f9ec57923f34ef1db3890a3f9e1">getGepObjs</a>(base);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gep : gepObjs)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *node = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(gep);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(node &amp;&amp; <span class="stringliteral">&quot;TBHC: expected gep node doesn&#39;t exist.&quot;</span>);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((SVFUtil::isa&lt;GepObjVar&gt;(node) || SVFUtil::isa&lt;FIObjVar&gt;(node))</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; &amp;&amp; <span class="stringliteral">&quot;TBHC: expected a GEP or FI object.&quot;</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gepNode = SVFUtil::dyn_cast&lt;GepObjVar&gt;(node))</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (gepNode-&gt;getConstantFieldIdx() == totalOffset)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; geps.set(gep);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// Definitely a FIObj (asserted), but we don&#39;t want to add it if</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// the object is field-sensitive because in that case it actually</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="comment">// represents the 0th field, not the whole object.</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (baseNode-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>()-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</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; geps.set(gep);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span> (geps.empty())</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// No gep node has even be created, so create one.</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newGep;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> newLS;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// fldIdx is what is returned by getConstantFieldIdx.</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; newLS.<a class="code" href="classSVF_1_1LocationSet.html#abe990543374ebd8c1b3ee0d37c83eb8f">setFldIdx</a>(totalOffset);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#abce2ba326af69312c5971246cc4c10dc">isClone</a>(base))</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// Don&#39;t use ppag-&gt;getGepObjVar because base and it&#39;s original object</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// have the same memory object which is the key SVFIR uses.</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; newGep = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a16ad9c601a044731b982305a177dbda3">addCloneGepObjNode</a>(baseNode-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>(), newLS);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; newGep = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(base, newLS);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gep = SVFUtil::dyn_cast&lt;GepObjVar&gt;(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(newGep)))</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; gep-&gt;setBaseNode(base);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ad07fb204258fccda89053514338e3804">addGepToObj</a>(newGep, base, totalOffset);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *newGepType = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (baseType-&gt;getTag() == dwarf::DW_TAG_array_type || baseType-&gt;getTag() == dwarf::DW_TAG_pointer_type)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *arrayType = SVFUtil::dyn_cast&lt;DICompositeType&gt;(baseType))</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// Array access.</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; newGepType = arrayType-&gt;getBaseType();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *ptrType = SVFUtil::dyn_cast&lt;DIDerivedType&gt;(baseType))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">// Pointer access.</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; newGepType = ptrType-&gt;getBaseType();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(newGepType &amp;&amp; <span class="stringliteral">&quot;TBHC: newGepType is neither DIComposite nor DIDerived&quot;</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">// Get the canonical type because we got the type from the DIType infrastructure directly.</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; newGepType = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">dchg</a>-&gt;<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(newGepType);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="comment">// Must be a struct/class.</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="comment">// Don&#39;t use totalOffset because we&#39;re operating on the Gep object which is our parent</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// (i.e. field of some base, not the base itself).</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; newGepType = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">dchg</a>-&gt;<a class="code" href="classSVF_1_1DCHGraph.html#acaff636e6a9cf59363d6ee00435c04ff">getFieldType</a>(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">getType</a>(base), offset);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ac51cd735739a2499196a87323172a6a6">setType</a>(newGep, newGepType);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">// We call the object created in the non-TBHC analysis the original object.</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a14027d92c4f8e33d7487fe81acce6a85">setOriginalObj</a>(newGep, <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(baseNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), offset));</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a006243a1416f4950de254d0d62ba40b0">setAllocationSite</a>(newGep, 0);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; geps.set(newGep);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> geps;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;}</div><div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a14027d92c4f8e33d7487fe81acce6a85"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a14027d92c4f8e33d7487fe81acce6a85">SVF::TypeBasedHeapCloning::setOriginalObj</a></div><div class="ttdeci">void setOriginalObj(NodeID c, NodeID o)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00096">TypeBasedHeapCloning.cpp:96</a></div></div>
822
822
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a629ad3cef8929865b7319fb9e389f7bf"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">SVF::TypeBasedHeapCloning::ppag</a></div><div class="ttdeci">SVFIR * ppag</div><div class="ttdoc">SVFIR the PTA uses. Just a shortcut for getPAG(). </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00149">TypeBasedHeapCloning.h:149</a></div></div>
823
823
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
824
824
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_afe416f9ec57923f34ef1db3890a3f9e1"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#afe416f9ec57923f34ef1db3890a3f9e1">SVF::TypeBasedHeapCloning::getGepObjs</a></div><div class="ttdeci">const NodeBS &amp; getGepObjs(NodeID base)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00137">TypeBasedHeapCloning.cpp:137</a></div></div>
825
825
  <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>
826
826
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ac51cd735739a2499196a87323172a6a6"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ac51cd735739a2499196a87323172a6a6">SVF::TypeBasedHeapCloning::setType</a></div><div class="ttdeci">void setType(NodeID o, const DIType *t)</div><div class="ttdoc">Sets the type (in objToType) of o. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00053">TypeBasedHeapCloning.cpp:53</a></div></div>
827
+ <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
827
828
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
828
829
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a16ad9c601a044731b982305a177dbda3"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a16ad9c601a044731b982305a177dbda3">SVF::TypeBasedHeapCloning::addCloneGepObjNode</a></div><div class="ttdeci">NodeID addCloneGepObjNode(const MemObj *mem, const LocationSet &amp;l)</div><div class="ttdoc">Add clone GEP object node to SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00507">TypeBasedHeapCloning.cpp:507</a></div></div>
829
830
  <div class="ttc" id="classSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00314">SVFVariables.h:314</a></div></div>
830
831
  <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00209">BasicTypes.h:209</a></div></div>
831
832
  <div class="ttc" id="classSVF_1_1ObjVar_html_a6a4feb73b54e602407e35eeb09f55930"><div class="ttname"><a href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">SVF::ObjVar::getMemObj</a></div><div class="ttdeci">const MemObj * getMemObj() const</div><div class="ttdoc">Return memory object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00354">SVFVariables.h:354</a></div></div>
832
- <div class="ttc" id="namespaceSVF_html_abe09d99af006554a5c00803e9a89f9a6"><div class="ttname"><a href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">SVF::s64_t</a></div><div class="ttdeci">signed s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00080">SVFBasicTypes.h:80</a></div></div>
833
833
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a465e67781977e83526df7e36d576e539"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">SVF::TypeBasedHeapCloning::dchg</a></div><div class="ttdeci">DCHGraph * dchg</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00047">TypeBasedHeapCloning.h:47</a></div></div>
834
- <div class="ttc" id="classSVF_1_1LocationSet_html_a15f6175372a785205c5f959b370c83b5"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a15f6175372a785205c5f959b370c83b5">SVF::LocationSet::setFldIdx</a></div><div class="ttdeci">void setFldIdx(s64_t idx)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00094">LocationSet.h:94</a></div></div>
835
834
  <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00210">BasicTypes.h:210</a></div></div>
835
+ <div class="ttc" id="classSVF_1_1LocationSet_html_abe990543374ebd8c1b3ee0d37c83eb8f"><div class="ttname"><a href="classSVF_1_1LocationSet.html#abe990543374ebd8c1b3ee0d37c83eb8f">SVF::LocationSet::setFldIdx</a></div><div class="ttdeci">void setFldIdx(s32_t idx)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00094">LocationSet.h:94</a></div></div>
836
836
  <div class="ttc" id="classSVF_1_1GepObjVar_html"><div class="ttname"><a href="classSVF_1_1GepObjVar.html">SVF::GepObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00442">SVFVariables.h:442</a></div></div>
837
837
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a219edef6c013a953ed12ee3c56bde6de"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">SVF::TypeBasedHeapCloning::getType</a></div><div class="ttdeci">const DIType * getType(NodeID o) const</div><div class="ttdoc">Returns the type (from objToType) of o. Asserts existence. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00058">TypeBasedHeapCloning.cpp:58</a></div></div>
838
838
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a006243a1416f4950de254d0d62ba40b0"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a006243a1416f4950de254d0d62ba40b0">SVF::TypeBasedHeapCloning::setAllocationSite</a></div><div class="ttdeci">void setAllocationSite(NodeID o, NodeID site)</div><div class="ttdoc">Sets the allocation site (in objToAllocation) of o. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00064">TypeBasedHeapCloning.cpp:64</a></div></div>
@@ -243,7 +243,7 @@ Additional Inherited Members</h2></td></tr>
243
243
  <tr class="separator:aff95460d4b859e657a9198b7c5e5c736 inherit pub_types_classSVF_1_1GenericEdge"><td class="memSeparator" colspan="2">&#160;</td></tr>
244
244
  <tr class="memitem:aab8892b73370c32b48621cd1d0cce614 inherit pub_types_classSVF_1_1GenericEdge"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a></td></tr>
245
245
  <tr class="separator:aab8892b73370c32b48621cd1d0cce614 inherit pub_types_classSVF_1_1GenericEdge"><td class="memSeparator" colspan="2">&#160;</td></tr>
246
- <tr class="memitem:a5aceeb48929f54264807b36569019a8a inherit pub_types_classSVF_1_1GenericEdge"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a></td></tr>
246
+ <tr class="memitem:a5aceeb48929f54264807b36569019a8a inherit pub_types_classSVF_1_1GenericEdge"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a></td></tr>
247
247
  <tr class="separator:a5aceeb48929f54264807b36569019a8a inherit pub_types_classSVF_1_1GenericEdge"><td class="memSeparator" colspan="2">&#160;</td></tr>
248
248
  <tr class="memitem:a69accb303ee67733e065350e4452cbca inherit pub_types_classSVF_1_1GenericEdge"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structSVF_1_1GenericEdge_1_1equalGEdge.html">SVF::GenericEdge::equalGEdge</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericEdge.html#a69accb303ee67733e065350e4452cbca">equalGEdge</a></td></tr>
249
249
  <tr class="memdesc:a69accb303ee67733e065350e4452cbca inherit pub_types_classSVF_1_1GenericEdge"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add the hash function for std::set (we also can overload operator&lt; to implement this) <a href="classSVF_1_1GenericEdge.html#a69accb303ee67733e065350e4452cbca">More...</a><br /></td></tr>
@@ -139,7 +139,7 @@ Public Types</h2></td></tr>
139
139
  <tr class="separator:ad63e862eb1d1369bd69318fe698e4a22 inherit pub_types_classSVF_1_1GenericNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
140
140
  <tr class="memitem:a458c626543431b4314f5f4f532eb51de inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef EdgeTy&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a458c626543431b4314f5f4f532eb51de">EdgeType</a></td></tr>
141
141
  <tr class="separator:a458c626543431b4314f5f4f532eb51de inherit pub_types_classSVF_1_1GenericNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
142
- <tr class="memitem:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">GNodeK</a></td></tr>
142
+ <tr class="memitem:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">GNodeK</a></td></tr>
143
143
  <tr class="memdesc:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">Edge kind. <a href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">More...</a><br /></td></tr>
144
144
  <tr class="separator:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
145
145
  <tr class="memitem:a03c6da4a73c47f84f5c5b47252bc339a inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet</a>&lt; <a class="el" href="classSVF_1_1GenericNode.html#a458c626543431b4314f5f4f532eb51de">EdgeType</a> *, typename EdgeType::equalGEdge &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GEdgeSetTy</a></td></tr>
@@ -118,7 +118,7 @@ Public Types</h2></td></tr>
118
118
  <tr class="separator:aff95460d4b859e657a9198b7c5e5c736 inherit pub_types_classSVF_1_1GenericEdge"><td class="memSeparator" colspan="2">&#160;</td></tr>
119
119
  <tr class="memitem:aab8892b73370c32b48621cd1d0cce614 inherit pub_types_classSVF_1_1GenericEdge"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a></td></tr>
120
120
  <tr class="separator:aab8892b73370c32b48621cd1d0cce614 inherit pub_types_classSVF_1_1GenericEdge"><td class="memSeparator" colspan="2">&#160;</td></tr>
121
- <tr class="memitem:a5aceeb48929f54264807b36569019a8a inherit pub_types_classSVF_1_1GenericEdge"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a></td></tr>
121
+ <tr class="memitem:a5aceeb48929f54264807b36569019a8a inherit pub_types_classSVF_1_1GenericEdge"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a></td></tr>
122
122
  <tr class="separator:a5aceeb48929f54264807b36569019a8a inherit pub_types_classSVF_1_1GenericEdge"><td class="memSeparator" colspan="2">&#160;</td></tr>
123
123
  <tr class="memitem:a69accb303ee67733e065350e4452cbca inherit pub_types_classSVF_1_1GenericEdge"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structSVF_1_1GenericEdge_1_1equalGEdge.html">SVF::GenericEdge::equalGEdge</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericEdge.html#a69accb303ee67733e065350e4452cbca">equalGEdge</a></td></tr>
124
124
  <tr class="memdesc:a69accb303ee67733e065350e4452cbca inherit pub_types_classSVF_1_1GenericEdge"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add the hash function for std::set (we also can overload operator&lt; to implement this) <a href="classSVF_1_1GenericEdge.html#a69accb303ee67733e065350e4452cbca">More...</a><br /></td></tr>
@@ -144,7 +144,7 @@ Public Types</h2></td></tr>
144
144
  <tr class="separator:ad63e862eb1d1369bd69318fe698e4a22 inherit pub_types_classSVF_1_1GenericNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
145
145
  <tr class="memitem:a458c626543431b4314f5f4f532eb51de inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef EdgeTy&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a458c626543431b4314f5f4f532eb51de">EdgeType</a></td></tr>
146
146
  <tr class="separator:a458c626543431b4314f5f4f532eb51de inherit pub_types_classSVF_1_1GenericNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
147
- <tr class="memitem:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">GNodeK</a></td></tr>
147
+ <tr class="memitem:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">GNodeK</a></td></tr>
148
148
  <tr class="memdesc:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">Edge kind. <a href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">More...</a><br /></td></tr>
149
149
  <tr class="separator:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
150
150
  <tr class="memitem:a03c6da4a73c47f84f5c5b47252bc339a inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet</a>&lt; <a class="el" href="classSVF_1_1GenericNode.html#a458c626543431b4314f5f4f532eb51de">EdgeType</a> *, typename EdgeType::equalGEdge &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GEdgeSetTy</a></td></tr>
@@ -257,7 +257,7 @@ Additional Inherited Members</h2></td></tr>
257
257
  <tr class="separator:ad63e862eb1d1369bd69318fe698e4a22 inherit pub_types_classSVF_1_1GenericNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
258
258
  <tr class="memitem:a458c626543431b4314f5f4f532eb51de inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef EdgeTy&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a458c626543431b4314f5f4f532eb51de">EdgeType</a></td></tr>
259
259
  <tr class="separator:a458c626543431b4314f5f4f532eb51de inherit pub_types_classSVF_1_1GenericNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
260
- <tr class="memitem:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">GNodeK</a></td></tr>
260
+ <tr class="memitem:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">GNodeK</a></td></tr>
261
261
  <tr class="memdesc:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">Edge kind. <a href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">More...</a><br /></td></tr>
262
262
  <tr class="separator:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
263
263
  <tr class="memitem:a03c6da4a73c47f84f5c5b47252bc339a inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet</a>&lt; <a class="el" href="classSVF_1_1GenericNode.html#a458c626543431b4314f5f4f532eb51de">EdgeType</a> *, typename EdgeType::equalGEdge &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GEdgeSetTy</a></td></tr>
@@ -267,7 +267,7 @@ Additional Inherited Members</h2></td></tr>
267
267
  <tr class="separator:ad63e862eb1d1369bd69318fe698e4a22 inherit pub_types_classSVF_1_1GenericNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
268
268
  <tr class="memitem:a458c626543431b4314f5f4f532eb51de inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef EdgeTy&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a458c626543431b4314f5f4f532eb51de">EdgeType</a></td></tr>
269
269
  <tr class="separator:a458c626543431b4314f5f4f532eb51de inherit pub_types_classSVF_1_1GenericNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
270
- <tr class="memitem:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">GNodeK</a></td></tr>
270
+ <tr class="memitem:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">GNodeK</a></td></tr>
271
271
  <tr class="memdesc:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">Edge kind. <a href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">More...</a><br /></td></tr>
272
272
  <tr class="separator:a3f20339b5295e11beb0f9adb95c7aa5b inherit pub_types_classSVF_1_1GenericNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
273
273
  <tr class="memitem:a03c6da4a73c47f84f5c5b47252bc339a inherit pub_types_classSVF_1_1GenericNode"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet</a>&lt; <a class="el" href="classSVF_1_1GenericNode.html#a458c626543431b4314f5f4f532eb51de">EdgeType</a> *, typename EdgeType::equalGEdge &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GEdgeSetTy</a></td></tr>
@@ -180,7 +180,7 @@ Additional Inherited Members</h2></td></tr>
180
180
  <tr class="separator:aff95460d4b859e657a9198b7c5e5c736 inherit pub_types_classSVF_1_1GenericEdge"><td class="memSeparator" colspan="2">&#160;</td></tr>
181
181
  <tr class="memitem:aab8892b73370c32b48621cd1d0cce614 inherit pub_types_classSVF_1_1GenericEdge"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a></td></tr>
182
182
  <tr class="separator:aab8892b73370c32b48621cd1d0cce614 inherit pub_types_classSVF_1_1GenericEdge"><td class="memSeparator" colspan="2">&#160;</td></tr>
183
- <tr class="memitem:a5aceeb48929f54264807b36569019a8a inherit pub_types_classSVF_1_1GenericEdge"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a></td></tr>
183
+ <tr class="memitem:a5aceeb48929f54264807b36569019a8a inherit pub_types_classSVF_1_1GenericEdge"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a></td></tr>
184
184
  <tr class="separator:a5aceeb48929f54264807b36569019a8a inherit pub_types_classSVF_1_1GenericEdge"><td class="memSeparator" colspan="2">&#160;</td></tr>
185
185
  <tr class="memitem:a69accb303ee67733e065350e4452cbca inherit pub_types_classSVF_1_1GenericEdge"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structSVF_1_1GenericEdge_1_1equalGEdge.html">SVF::GenericEdge::equalGEdge</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GenericEdge.html#a69accb303ee67733e065350e4452cbca">equalGEdge</a></td></tr>
186
186
  <tr class="memdesc:a69accb303ee67733e065350e4452cbca inherit pub_types_classSVF_1_1GenericEdge"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add the hash function for std::set (we also can overload operator&lt; to implement this) <a href="classSVF_1_1GenericEdge.html#a69accb303ee67733e065350e4452cbca">More...</a><br /></td></tr>
@@ -74,11 +74,11 @@ $(function() {
74
74
  : <a class="el" href="classSVF_1_1RaceResultValidator.html#a8436ecde1e34bca7cef86a320ad42162">SVF::RaceResultValidator</a>
75
75
  </li>
76
76
  <li>accumulateConstantFieldIdx()
77
- : <a class="el" href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">SVF::LocationSet</a>
77
+ : <a class="el" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">SVF::LocationSet</a>
78
78
  </li>
79
79
  <li>accumulateConstantOffset()
80
- : <a class="el" href="classSVF_1_1GepStmt.html#a33b3b9ef0cf7e2ea6400aef74a399adf">SVF::GepStmt</a>
81
- , <a class="el" href="classSVF_1_1LocationSet.html#a216afe1a2481c57b278549732d5e185e">SVF::LocationSet</a>
80
+ : <a class="el" href="classSVF_1_1GepStmt.html#a6ededc6dab6691afd1b355dd5d0ffdae">SVF::GepStmt</a>
81
+ , <a class="el" href="classSVF_1_1LocationSet.html#ad8e250859aa1cf6ce18c6c0b7bbb2710">SVF::LocationSet</a>
82
82
  </li>
83
83
  <li>actualInOfIndCS()
84
84
  : <a class="el" href="classSVF_1_1SVFGOPT.html#af6fa424cd7518b330a6017839a789bf6">SVF::SVFGOPT</a>
@@ -265,7 +265,7 @@ $(function() {
265
265
  : <a class="el" href="classSVF_1_1LockAnalysis.html#a0cc6e4b4ab78f3c54b68fe35adb02957">SVF::LockAnalysis</a>
266
266
  </li>
267
267
  <li>addConditionalIntraEdge()
268
- : <a class="el" href="classSVF_1_1ICFG.html#a6436c2e6ab117007db80b9936fd4b5fe">SVF::ICFG</a>
268
+ : <a class="el" href="classSVF_1_1ICFG.html#aa4517b497891823eccbad2e790e2a440">SVF::ICFG</a>
269
269
  </li>
270
270
  <li>addConstantObjNode()
271
271
  : <a class="el" href="classSVF_1_1SVFIR.html#aff3f3ff198e7511576484dfda7bf051b">SVF::SVFIR</a>
@@ -348,9 +348,9 @@ $(function() {
348
348
  : <a class="el" href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">SVF::CHGraph</a>
349
349
  , <a class="el" href="classSVF_1_1DCHGraph.html#a294a2075c97e1db8003393fb472c1def">SVF::DCHGraph</a>
350
350
  , <a class="el" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph</a>
351
- , <a class="el" href="classSVF_1_1PAGBuilderFromFile.html#ac34cd4f9426da0325e67bc1b3d7bcecd">SVF::PAGBuilderFromFile</a>
351
+ , <a class="el" href="classSVF_1_1PAGBuilderFromFile.html#afe42e4086de6688002afd144507b0b62">SVF::PAGBuilderFromFile</a>
352
352
  , <a class="el" href="classSVF_1_1PTACallGraph.html#a3154bbc421fc85649e786ed67ca03750">SVF::PTACallGraph</a>
353
- , <a class="el" href="classSVF_1_1SVFIRBuilder.html#abd980f840b613171e879eb03f6089eeb">SVF::SVFIRBuilder</a>
353
+ , <a class="el" href="classSVF_1_1SVFIRBuilder.html#ae07ab1c2549151d95114a9600399ffc3">SVF::SVFIRBuilder</a>
354
354
  </li>
355
355
  <li>ADDEDGE_ALLOPT
356
356
  : <a class="el" href="classSVF_1_1MTASVFGBuilder.html#a80ce025ef719088c7aea9f2459a781d5">SVF::MTASVFGBuilder</a>
@@ -297,7 +297,7 @@ $(function() {
297
297
  : <a class="el" href="classSVF_1_1CondManager.html#af2cf8e42c15d6a0640f13c55050f616f">SVF::CondManager</a>
298
298
  </li>
299
299
  <li>branchCondVal
300
- : <a class="el" href="classSVF_1_1IntraCFGEdge.html#a8ba42f12f31c5f7ff633f60856f973b3">SVF::IntraCFGEdge</a>
300
+ : <a class="el" href="classSVF_1_1IntraCFGEdge.html#aa1c91aad3dec610100b1f2f4b9826d10">SVF::IntraCFGEdge</a>
301
301
  </li>
302
302
  <li>BranchK
303
303
  : <a class="el" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6ab2a0481a51dd867e2d2f196556c24521">SVF::CondExpr</a>
@@ -72,7 +72,7 @@ $(function() {
72
72
  : <a class="el" href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#ae78d2b60035350c634f6f58d7a043c22">SVF::NodeIDAllocator::Clusterer</a>
73
73
  </li>
74
74
  <li>fieldExpand()
75
- : <a class="el" href="classSVF_1_1AndersenSFR.html#a7995774ea0e6434a8f4f2b243c0064c2">SVF::AndersenSFR</a>
75
+ : <a class="el" href="classSVF_1_1AndersenSFR.html#aa768e5cd0a762d17e2ec2baaad0486bf">SVF::AndersenSFR</a>
76
76
  </li>
77
77
  <li>FieldReps
78
78
  : <a class="el" href="classSVF_1_1AndersenSFR.html#a52aa0c2a02a0db6700c4a7a8819d0a5d">SVF::AndersenSFR</a>
@@ -176,7 +176,7 @@ $(function() {
176
176
  : <a class="el" href="classSVF_1_1StInfo.html#a8b24c6a35701a719cd5f1deef62421cd">SVF::StInfo</a>
177
177
  </li>
178
178
  <li>fldIdx
179
- : <a class="el" href="classSVF_1_1LocationSet.html#a1937e1b9513135cb46c7f3f02fbe7d03">SVF::LocationSet</a>
179
+ : <a class="el" href="classSVF_1_1LocationSet.html#a5c2c1baa17a70b997824002e4c159cbd">SVF::LocationSet</a>
180
180
  </li>
181
181
  <li>fldIdx2TypeMap
182
182
  : <a class="el" href="classSVF_1_1StInfo.html#a3da859dcf2a5fe7078b1257dd5f1e479">SVF::StInfo</a>
@@ -68,11 +68,11 @@ $(function() {
68
68
  : <a class="el" href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a7dd2f8afab59ee4d107a6bfdb6c151ea">SVF::RaceResultValidator::AccessPair</a>
69
69
  </li>
70
70
  <li>accumulateConstantFieldIdx()
71
- : <a class="el" href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">SVF::LocationSet</a>
71
+ : <a class="el" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">SVF::LocationSet</a>
72
72
  </li>
73
73
  <li>accumulateConstantOffset()
74
- : <a class="el" href="classSVF_1_1GepStmt.html#a33b3b9ef0cf7e2ea6400aef74a399adf">SVF::GepStmt</a>
75
- , <a class="el" href="classSVF_1_1LocationSet.html#a216afe1a2481c57b278549732d5e185e">SVF::LocationSet</a>
74
+ : <a class="el" href="classSVF_1_1GepStmt.html#a6ededc6dab6691afd1b355dd5d0ffdae">SVF::GepStmt</a>
75
+ , <a class="el" href="classSVF_1_1LocationSet.html#ad8e250859aa1cf6ce18c6c0b7bbb2710">SVF::LocationSet</a>
76
76
  </li>
77
77
  <li>actualInOfIndCS()
78
78
  : <a class="el" href="classSVF_1_1SVFGOPT.html#af6fa424cd7518b330a6017839a789bf6">SVF::SVFGOPT</a>
@@ -232,7 +232,7 @@ $(function() {
232
232
  : <a class="el" href="classSVF_1_1LockAnalysis.html#a0cc6e4b4ab78f3c54b68fe35adb02957">SVF::LockAnalysis</a>
233
233
  </li>
234
234
  <li>addConditionalIntraEdge()
235
- : <a class="el" href="classSVF_1_1ICFG.html#a6436c2e6ab117007db80b9936fd4b5fe">SVF::ICFG</a>
235
+ : <a class="el" href="classSVF_1_1ICFG.html#aa4517b497891823eccbad2e790e2a440">SVF::ICFG</a>
236
236
  </li>
237
237
  <li>addConstantObjNode()
238
238
  : <a class="el" href="classSVF_1_1SVFIR.html#aff3f3ff198e7511576484dfda7bf051b">SVF::SVFIR</a>
@@ -315,9 +315,9 @@ $(function() {
315
315
  : <a class="el" href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">SVF::CHGraph</a>
316
316
  , <a class="el" href="classSVF_1_1DCHGraph.html#a294a2075c97e1db8003393fb472c1def">SVF::DCHGraph</a>
317
317
  , <a class="el" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph</a>
318
- , <a class="el" href="classSVF_1_1PAGBuilderFromFile.html#ac34cd4f9426da0325e67bc1b3d7bcecd">SVF::PAGBuilderFromFile</a>
318
+ , <a class="el" href="classSVF_1_1PAGBuilderFromFile.html#afe42e4086de6688002afd144507b0b62">SVF::PAGBuilderFromFile</a>
319
319
  , <a class="el" href="classSVF_1_1PTACallGraph.html#a3154bbc421fc85649e786ed67ca03750">SVF::PTACallGraph</a>
320
- , <a class="el" href="classSVF_1_1SVFIRBuilder.html#abd980f840b613171e879eb03f6089eeb">SVF::SVFIRBuilder</a>
320
+ , <a class="el" href="classSVF_1_1SVFIRBuilder.html#ae07ab1c2549151d95114a9600399ffc3">SVF::SVFIRBuilder</a>
321
321
  </li>
322
322
  <li>AddExtActualParmSVFGNodes()
323
323
  : <a class="el" href="classSVF_1_1SaberSVFGBuilder.html#ab6870d6f6f5abc5417dcea771eaa31f7">SVF::SaberSVFGBuilder</a>
@@ -62,7 +62,7 @@ $(function() {
62
62
 
63
63
  <h3><a id="index_f"></a>- f -</h3><ul>
64
64
  <li>fieldExpand()
65
- : <a class="el" href="classSVF_1_1AndersenSFR.html#a7995774ea0e6434a8f4f2b243c0064c2">SVF::AndersenSFR</a>
65
+ : <a class="el" href="classSVF_1_1AndersenSFR.html#aa768e5cd0a762d17e2ec2baaad0486bf">SVF::AndersenSFR</a>
66
66
  </li>
67
67
  <li>FIFOWorkList()
68
68
  : <a class="el" href="classSVF_1_1FIFOWorkList.html#a1d3ab8bea4d8f94b935d1bef3cf0c4ac">SVF::FIFOWorkList&lt; Data &gt;</a>