svf-tools 1.0.322 → 1.0.323

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 (335) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -7
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +8 -8
  5. package/SVF-doxygen/html/html/ConsG_8h_source.html +13 -13
  6. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  7. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +2 -2
  8. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  10. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +3 -3
  12. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
  13. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  14. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  16. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
  17. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +3 -3
  18. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
  19. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
  20. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +4 -4
  21. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  22. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
  24. package/SVF-doxygen/html/html/IRGraph_8h_source.html +7 -7
  25. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +6 -6
  26. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  27. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
  28. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +21 -21
  29. package/SVF-doxygen/html/html/MemRegion_8h_source.html +5 -5
  30. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +7 -7
  31. package/SVF-doxygen/html/html/MemSSA_8h_source.html +5 -5
  32. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
  34. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +7 -7
  35. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +7 -7
  36. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  37. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +5 -5
  38. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +15 -15
  39. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  40. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +16 -16
  41. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  42. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -5
  43. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +32 -32
  44. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +51 -51
  45. package/SVF-doxygen/html/html/SVFIR_8h_source.html +146 -147
  46. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +8 -8
  47. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +133 -132
  48. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +11 -11
  49. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
  50. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  52. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  53. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +6 -6
  54. package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
  55. package/SVF-doxygen/html/html/VFG_8cpp_source.html +37 -37
  56. package/SVF-doxygen/html/html/VFG_8h_source.html +26 -26
  57. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  58. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  59. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
  61. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +20 -19
  62. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +17 -15
  63. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  64. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +3 -3
  65. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +29 -29
  66. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +3 -3
  67. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +10 -10
  68. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +3 -3
  69. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +6 -6
  70. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +3 -3
  71. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +6 -6
  72. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +3 -3
  73. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +6 -6
  74. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +3 -3
  75. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +6 -6
  76. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +3 -3
  77. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +9 -9
  78. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +8 -8
  79. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +3 -3
  80. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +6 -6
  81. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +3 -3
  82. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +21 -21
  83. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +26 -25
  84. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +23 -21
  85. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +20 -19
  86. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +33 -31
  87. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  88. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode-members.html +8 -8
  89. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +6 -6
  90. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +20 -19
  91. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +23 -21
  92. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +8 -8
  93. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +22 -22
  94. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +8 -8
  95. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +22 -22
  96. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +8 -8
  97. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +22 -22
  98. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +26 -25
  99. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +23 -21
  100. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +3 -3
  101. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +8 -8
  102. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +4 -4
  103. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +40 -40
  104. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +3 -3
  105. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +14 -14
  106. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +20 -19
  107. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +17 -15
  108. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
  110. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +10 -10
  111. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +13 -13
  112. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +9 -9
  113. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +8 -8
  114. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +22 -22
  115. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +8 -8
  116. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +22 -22
  117. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +8 -8
  118. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +22 -22
  119. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +3 -3
  120. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +6 -6
  121. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +3 -3
  122. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +13 -13
  123. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +3 -3
  124. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +17 -17
  125. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +7 -7
  126. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +7 -7
  127. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +12 -12
  128. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode-members.html +6 -6
  129. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +6 -6
  130. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode-members.html +6 -6
  131. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +6 -6
  132. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN-members.html +8 -8
  134. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +22 -22
  135. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +20 -19
  136. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +17 -15
  137. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +8 -8
  138. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +22 -22
  139. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode-members.html +6 -6
  140. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +6 -6
  141. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +6 -6
  142. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +22 -22
  143. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
  144. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +8 -8
  146. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +43 -43
  147. package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode-members.html +6 -6
  148. package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode.html +6 -6
  149. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +14 -14
  150. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +9 -9
  151. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode-members.html +6 -6
  152. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +6 -6
  153. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +14 -14
  154. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +9 -9
  155. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +6 -6
  156. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +23 -22
  157. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +17 -15
  158. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +17 -17
  159. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +92 -92
  160. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +5 -5
  161. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +18 -18
  162. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +41 -41
  163. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +24 -23
  164. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +33 -31
  165. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +24 -23
  166. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +24 -22
  167. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +8 -8
  168. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +22 -22
  169. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +4 -4
  170. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +11 -11
  171. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +15 -15
  172. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +7 -7
  173. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +25 -24
  174. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +22 -20
  175. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +3 -3
  176. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +38 -38
  177. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode-members.html +7 -7
  178. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +6 -6
  179. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +20 -19
  180. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +23 -21
  181. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +8 -8
  182. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +22 -22
  183. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +47 -47
  184. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +28 -28
  185. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +59 -59
  186. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +10 -10
  187. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +136 -137
  188. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +684 -702
  189. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +2 -2
  190. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +78 -78
  191. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +23 -22
  192. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +49 -31
  193. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +8 -8
  194. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +62 -62
  195. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +8 -8
  196. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  197. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +3 -3
  198. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +6 -6
  199. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +20 -19
  200. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +17 -15
  201. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +23 -22
  202. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +17 -15
  203. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +23 -22
  204. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +17 -15
  205. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  206. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +3 -3
  207. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +8 -8
  208. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +9 -9
  209. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +24 -23
  210. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +27 -25
  211. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +33 -33
  212. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +81 -81
  213. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +8 -8
  214. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +22 -22
  215. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +8 -8
  216. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +22 -22
  217. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +23 -22
  218. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +19 -17
  219. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +3 -3
  220. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +11 -11
  221. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  222. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +3 -3
  223. package/SVF-doxygen/html/html/functions_a.html +28 -28
  224. package/SVF-doxygen/html/html/functions_c.html +25 -30
  225. package/SVF-doxygen/html/html/functions_f.html +2 -2
  226. package/SVF-doxygen/html/html/functions_func.html +28 -28
  227. package/SVF-doxygen/html/html/functions_func_g.html +50 -50
  228. package/SVF-doxygen/html/html/functions_func_h.html +6 -6
  229. package/SVF-doxygen/html/html/functions_g.html +67 -67
  230. package/SVF-doxygen/html/html/functions_h.html +6 -6
  231. package/SVF-doxygen/html/html/functions_i.html +7 -7
  232. package/SVF-doxygen/html/html/functions_k.html +9 -0
  233. package/SVF-doxygen/html/html/functions_l.html +3 -3
  234. package/SVF-doxygen/html/html/functions_o.html +4 -4
  235. package/SVF-doxygen/html/html/functions_p.html +20 -40
  236. package/SVF-doxygen/html/html/functions_r.html +1 -1
  237. package/SVF-doxygen/html/html/functions_s.html +23 -7
  238. package/SVF-doxygen/html/html/functions_t.html +5 -7
  239. package/SVF-doxygen/html/html/functions_type_c.html +1 -4
  240. package/SVF-doxygen/html/html/functions_type_f.html +2 -2
  241. package/SVF-doxygen/html/html/functions_type_g.html +2 -2
  242. package/SVF-doxygen/html/html/functions_type_i.html +1 -1
  243. package/SVF-doxygen/html/html/functions_type_k.html +3 -0
  244. package/SVF-doxygen/html/html/functions_type_p.html +2 -18
  245. package/SVF-doxygen/html/html/functions_type_s.html +16 -0
  246. package/SVF-doxygen/html/html/functions_type_v.html +1 -1
  247. package/SVF-doxygen/html/html/functions_v.html +1 -1
  248. package/SVF-doxygen/html/html/functions_vars_g.html +7 -7
  249. package/SVF-doxygen/html/html/functions_vars_i.html +5 -5
  250. package/SVF-doxygen/html/html/functions_vars_k.html +6 -0
  251. package/SVF-doxygen/html/html/functions_vars_o.html +1 -1
  252. package/SVF-doxygen/html/html/functions_vars_p.html +1 -7
  253. package/SVF-doxygen/html/html/functions_w.html +9 -5
  254. package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
  255. package/SVF-doxygen/html/html/search/all_1.js +13 -13
  256. package/SVF-doxygen/html/html/search/all_10.js +7 -13
  257. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  258. package/SVF-doxygen/html/html/search/all_13.js +7 -3
  259. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  260. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  261. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  262. package/SVF-doxygen/html/html/search/all_3.js +1 -2
  263. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  264. package/SVF-doxygen/html/html/search/all_7.js +26 -26
  265. package/SVF-doxygen/html/html/search/all_8.js +2 -2
  266. package/SVF-doxygen/html/html/search/all_9.js +4 -3
  267. package/SVF-doxygen/html/html/search/all_b.js +3 -0
  268. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  269. package/SVF-doxygen/html/html/search/all_e.js +1 -1
  270. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  271. package/SVF-doxygen/html/html/search/functions_0.js +13 -13
  272. package/SVF-doxygen/html/html/search/functions_6.js +22 -22
  273. package/SVF-doxygen/html/html/search/functions_7.js +2 -2
  274. package/SVF-doxygen/html/html/search/typedefs_11.js +4 -0
  275. package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
  276. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -2
  277. package/SVF-doxygen/html/html/search/typedefs_5.js +2 -2
  278. package/SVF-doxygen/html/html/search/typedefs_6.js +1 -1
  279. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  280. package/SVF-doxygen/html/html/search/typedefs_a.js +2 -1
  281. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -6
  282. package/SVF-doxygen/html/html/search/variables_10.js +1 -3
  283. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  284. package/SVF-doxygen/html/html/search/variables_7.js +3 -3
  285. package/SVF-doxygen/html/html/search/variables_9.js +3 -3
  286. package/SVF-doxygen/html/html/search/variables_b.js +3 -1
  287. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  288. package/SVF-doxygen/html/html/search/variables_f.js +1 -1
  289. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  290. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  291. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  292. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  293. package/include/DDA/ContextDDA.h +1 -1
  294. package/include/DDA/FlowDDA.h +1 -1
  295. package/include/Graphs/ConsG.h +8 -8
  296. package/include/Graphs/ICFGNode.h +3 -3
  297. package/include/Graphs/IRGraph.h +7 -7
  298. package/include/Graphs/VFG.h +4 -4
  299. package/include/MSSA/MemRegion.h +3 -3
  300. package/include/MSSA/MemSSA.h +1 -1
  301. package/include/MemoryModel/PointerAnalysis.h +6 -6
  302. package/include/MemoryModel/PointerAnalysisImpl.h +1 -1
  303. package/include/MemoryModel/SVFIR.h +64 -65
  304. package/include/MemoryModel/SVFStatements.h +4 -3
  305. package/include/MemoryModel/SVFVariables.h +15 -15
  306. package/include/SVF-FE/SVFIRBuilder.h +14 -14
  307. package/include/Util/IRAnnotator.h +1 -1
  308. package/include/Util/TypeBasedHeapCloning.h +2 -2
  309. package/lib/DDA/ContextDDA.cpp +2 -2
  310. package/lib/DDA/DDAClient.cpp +6 -6
  311. package/lib/DDA/DDAStat.cpp +1 -1
  312. package/lib/DDA/FlowDDA.cpp +2 -2
  313. package/lib/Graphs/ConsG.cpp +22 -22
  314. package/lib/Graphs/ICFG.cpp +4 -4
  315. package/lib/Graphs/IRGraph.cpp +6 -6
  316. package/lib/Graphs/SVFG.cpp +6 -6
  317. package/lib/Graphs/VFG.cpp +37 -37
  318. package/lib/MSSA/MemRegion.cpp +17 -17
  319. package/lib/MSSA/MemSSA.cpp +9 -9
  320. package/lib/MTA/MTAAnnotator.cpp +4 -4
  321. package/lib/MemoryModel/PAGBuilderFromFile.cpp +10 -10
  322. package/lib/MemoryModel/PointerAnalysisImpl.cpp +10 -10
  323. package/lib/MemoryModel/SVFIR.cpp +58 -58
  324. package/lib/SABER/LeakChecker.cpp +2 -2
  325. package/lib/SABER/SaberSVFGBuilder.cpp +3 -3
  326. package/lib/SVF-FE/Graph2Json.cpp +2 -2
  327. package/lib/SVF-FE/SVFIRBuilder.cpp +16 -16
  328. package/lib/Util/PTAStat.cpp +7 -7
  329. package/lib/Util/TypeBasedHeapCloning.cpp +3 -3
  330. package/lib/WPA/Andersen.cpp +12 -12
  331. package/lib/WPA/AndersenSFR.cpp +1 -1
  332. package/lib/WPA/AndersenStat.cpp +3 -3
  333. package/lib/WPA/FlowSensitive.cpp +3 -3
  334. package/lib/WPA/FlowSensitiveStat.cpp +2 -2
  335. package/package.json +1 -1
@@ -387,7 +387,7 @@ Private Attributes</h2></td></tr>
387
387
  <div class="fragment"><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;{</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">allocateObjectId</a>();</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(<span class="keyword">nullptr</span>, <span class="keyword">new</span> <a class="code" href="classSVF_1_1CloneDummyObjVar.html">CloneDummyObjVar</a>(<span class="keywordtype">id</span>, mem), <span class="keywordtype">id</span>);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;}</div><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>
388
388
  <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>
389
389
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a6ce6b40b8291c6378dda07d943d66e53"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">SVF::NodeIDAllocator::allocateObjectId</a></div><div class="ttdeci">NodeID allocateObjectId(void)</div><div class="ttdoc">Allocate an object ID as determined by the strategy. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00048">NodeIDAllocator.cpp:48</a></div></div>
390
- <div class="ttc" id="classSVF_1_1SVFIR_html_a83bc8ecf4c5d10af10af3c8c44b9882d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const Value *val, NodeID i)</div><div class="ttdoc">Add a memory obj node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00537">SVFIR.h:537</a></div></div>
390
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a83bc8ecf4c5d10af10af3c8c44b9882d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const Value *val, NodeID i)</div><div class="ttdoc">Add a memory obj node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00536">SVFIR.h:536</a></div></div>
391
391
  <div class="ttc" id="classSVF_1_1CloneDummyObjVar_html"><div class="ttname"><a href="classSVF_1_1CloneDummyObjVar.html">SVF::CloneDummyObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00733">SVFVariables.h:733</a></div></div>
392
392
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
393
393
  </div><!-- fragment -->
@@ -424,7 +424,7 @@ Private Attributes</h2></td></tr>
424
424
  <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>
425
425
  <div class="ttc" id="classSVF_1_1CloneFIObjVar_html"><div class="ttname"><a href="classSVF_1_1CloneFIObjVar.html">SVF::CloneFIObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00805">SVFVariables.h:805</a></div></div>
426
426
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a6ce6b40b8291c6378dda07d943d66e53"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">SVF::NodeIDAllocator::allocateObjectId</a></div><div class="ttdeci">NodeID allocateObjectId(void)</div><div class="ttdoc">Allocate an object ID as determined by the strategy. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00048">NodeIDAllocator.cpp:48</a></div></div>
427
- <div class="ttc" id="classSVF_1_1SVFIR_html_a83bc8ecf4c5d10af10af3c8c44b9882d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const Value *val, NodeID i)</div><div class="ttdoc">Add a memory obj node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00537">SVFIR.h:537</a></div></div>
427
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a83bc8ecf4c5d10af10af3c8c44b9882d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const Value *val, NodeID i)</div><div class="ttdoc">Add a memory obj node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00536">SVFIR.h:536</a></div></div>
428
428
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
429
429
  <div class="ttc" id="classSVF_1_1MemObj_html_a4da54ef60231d2e6c26669226b99d2f3"><div class="ttname"><a href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">SVF::MemObj::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get the reference value to this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00445">SymbolTableInfo.h:445</a></div></div>
430
430
  </div><!-- fragment -->
@@ -470,7 +470,7 @@ Private Attributes</h2></td></tr>
470
470
  <div class="fragment"><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;{</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">allocateObjectId</a>();</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>(), <span class="keyword">new</span> <a class="code" href="classSVF_1_1CloneGepObjVar.html">CloneGepObjVar</a>(mem, <span class="keywordtype">id</span>, l), id);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;}</div><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>
471
471
  <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>
472
472
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a6ce6b40b8291c6378dda07d943d66e53"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">SVF::NodeIDAllocator::allocateObjectId</a></div><div class="ttdeci">NodeID allocateObjectId(void)</div><div class="ttdoc">Allocate an object ID as determined by the strategy. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00048">NodeIDAllocator.cpp:48</a></div></div>
473
- <div class="ttc" id="classSVF_1_1SVFIR_html_a83bc8ecf4c5d10af10af3c8c44b9882d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const Value *val, NodeID i)</div><div class="ttdoc">Add a memory obj node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00537">SVFIR.h:537</a></div></div>
473
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a83bc8ecf4c5d10af10af3c8c44b9882d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const Value *val, NodeID i)</div><div class="ttdoc">Add a memory obj node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00536">SVFIR.h:536</a></div></div>
474
474
  <div class="ttc" id="classSVF_1_1CloneGepObjVar_html"><div class="ttname"><a href="classSVF_1_1CloneGepObjVar.html">SVF::CloneGepObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00769">SVFVariables.h:769</a></div></div>
475
475
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
476
476
  <div class="ttc" id="classSVF_1_1MemObj_html_a4da54ef60231d2e6c26669226b99d2f3"><div class="ttname"><a href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">SVF::MemObj::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get the reference value to this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00445">SymbolTableInfo.h:445</a></div></div>
@@ -664,7 +664,7 @@ Private Attributes</h2></td></tr>
664
664
  <div class="fragment"><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;{</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; std::string <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a> = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;@@@@@@@@@ TBHC STATISTICS @@@@@@@@@\n&quot;</span>;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; indent = <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="comment">// Print clones with their types.</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;=== Original objects to clones ===\n&quot;</span>;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; indent = <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordtype">unsigned</span> totalClones = 0;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> objs = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ad1c67da3aac128ca8a69907fdad53fcd">getObjsWithClones</a>();</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : objs)</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; {</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;clones = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#af127bed600087b1ace26088a76ca8998">getClones</a>(o);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">if</span> (clones.count() == 0) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; totalClones += clones.count();</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; o &lt;&lt; <span class="stringliteral">&quot; : &quot;</span></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; &lt;&lt; <span class="stringliteral">&quot;(&quot;</span> &lt;&lt; clones.count() &lt;&lt; <span class="stringliteral">&quot;)&quot;</span></div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; &lt;&lt; <span class="stringliteral">&quot;[ &quot;</span>;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordtype">bool</span> first = <span class="keyword">true</span>;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> c : clones)</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; {</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">if</span> (!first)</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; }</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; c</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; &lt;&lt; <span class="stringliteral">&quot;{&quot;</span></div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">dchg</a>-&gt;<a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">getType</a>(c))</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; first = <span class="keyword">false</span>;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; }</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot; ]\n&quot;</span>;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; indent = <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; &lt;&lt; <span class="stringliteral">&quot;Total: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a8e9b2e37b36433c01e90d54a4edbf7f3">getObjectNodeNum</a>() + <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af7a98a5eb789178594063140c85cd21f">getFieldObjNodeNum</a>() + totalClones</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; totalClones &lt;&lt; <span class="stringliteral">&quot; clones)\n&quot;</span>;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;==================================\n&quot;</span>;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;INITIALISE : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a4c658be1ade99ad1e848cd80332e38ce">numInit</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;TBWU : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ad971bec1a044bbb979b96b0d91278afd">numTBWU</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;TBSSU : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#af5cf059dea30a0b422321e3a792ea447">numTBSSU</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;TBSU : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ab3fa2223ad8d8b23d78aa02892f0be2c">numTBSU</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;REUSE : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a0b14eb60ddc73654bec24cd8142e447b">numReuse</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;AGG CASE : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a891a5873205bb98ad494a1c07231dc8a">numAgg</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;STACK/GLOBAL OBJECTS\n&quot;</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; indent = <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;INITIALISE : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a4d6fc7852fc4bfe1d7ba3c0b8602bc8a">numSGInit</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;TBWU : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#afca6afa06a1072e7a452ed42bcd666d3">numSGTBWU</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;TBSSU : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a86a51362c35c4a67fc1d4af655504493">numSGTBSSU</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;TBSU : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a51d2baff54d05cba59fa270c32cce87c">numSGTBSU</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;REUSE : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ac44c7746d774af420ff2bc5ce98f5add">numSGReuse</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; indent &lt;&lt; <span class="stringliteral">&quot;AGG CASE : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a28653c7757fc31c4b8c1b31ace17eb50">numSGAgg</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n&quot;</span>;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;}</div><div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a4d6fc7852fc4bfe1d7ba3c0b8602bc8a"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a4d6fc7852fc4bfe1d7ba3c0b8602bc8a">SVF::TypeBasedHeapCloning::numSGInit</a></div><div class="ttdeci">unsigned numSGInit</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00180">TypeBasedHeapCloning.h:180</a></div></div>
665
665
  <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>
666
666
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a2dc488345cc3a5f37079952f638d8c2b"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">SVF::DCHGraph::diTypeToStr</a></div><div class="ttdeci">static std::string diTypeToStr(const DIType *)</div><div class="ttdoc">Returns a human-readable version of the DIType. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00958">DCHG.cpp:958</a></div></div>
667
- <div class="ttc" id="classSVF_1_1SVFIR_html_af7a98a5eb789178594063140c85cd21f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af7a98a5eb789178594063140c85cd21f">SVF::SVFIR::getFieldObjNodeNum</a></div><div class="ttdeci">Size_t getFieldObjNodeNum() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00289">SVFIR.h:289</a></div></div>
667
+ <div class="ttc" id="classSVF_1_1SVFIR_html_af7a98a5eb789178594063140c85cd21f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af7a98a5eb789178594063140c85cd21f">SVF::SVFIR::getFieldObjNodeNum</a></div><div class="ttdeci">Size_t getFieldObjNodeNum() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00288">SVFIR.h:288</a></div></div>
668
668
  <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>
669
669
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a28653c7757fc31c4b8c1b31ace17eb50"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a28653c7757fc31c4b8c1b31ace17eb50">SVF::TypeBasedHeapCloning::numSGAgg</a></div><div class="ttdeci">unsigned numSGAgg</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00185">TypeBasedHeapCloning.h:185</a></div></div>
670
670
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ab3fa2223ad8d8b23d78aa02892f0be2c"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ab3fa2223ad8d8b23d78aa02892f0be2c">SVF::TypeBasedHeapCloning::numTBSU</a></div><div class="ttdeci">unsigned numTBSU</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00175">TypeBasedHeapCloning.h:175</a></div></div>
@@ -815,10 +815,10 @@ Private Attributes</h2></td></tr>
815
815
  </tr>
816
816
  </table>
817
817
  </div><div class="memdoc">
818
- <p>Returns the GEP object node(s) of base for ls. This may include clones. If there are no GEP objects, then getGepObjNode is called on the <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> (through base's getGepObjNode) which will create one. </p>
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; <span class="keywordtype">unsigned</span> 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_1GepObjPN.html">GepObjPN</a> *baseGep = SVFUtil::dyn_cast&lt;GepObjPN&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;getLocationSet().getOffset();</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;GepObjPN&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_1GepObjPN.html">GepObjPN</a> *gepNode = SVFUtil::dyn_cast&lt;GepObjPN&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;getLocationSet().getOffset() == 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 getOffset.</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; newLS.<a class="code" href="classSVF_1_1LocationSet.html#acc8d400f4715e05d8d4174d7bf722346">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;getGepObjNode 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#a2b80cf884eedb51f77a5e84def7d8793">getGepObjNode</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_1GepObjPN.html">GepObjPN</a> *gep = SVFUtil::dyn_cast&lt;GepObjPN&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#a2b80cf884eedb51f77a5e84def7d8793">getGepObjNode</a>(baseNode-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</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; <span class="keywordtype">unsigned</span> 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_1GepObjPN.html">GepObjPN</a> *baseGep = SVFUtil::dyn_cast&lt;GepObjPN&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;getLocationSet().getOffset();</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;GepObjPN&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_1GepObjPN.html">GepObjPN</a> *gepNode = SVFUtil::dyn_cast&lt;GepObjPN&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;getLocationSet().getOffset() == 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 getOffset.</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; newLS.<a class="code" href="classSVF_1_1LocationSet.html#acc8d400f4715e05d8d4174d7bf722346">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_1GepObjPN.html">GepObjPN</a> *gep = SVFUtil::dyn_cast&lt;GepObjPN&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_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</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>
@@ -837,13 +837,13 @@ Private Attributes</h2></td></tr>
837
837
  <div class="ttc" id="classSVF_1_1DCHGraph_html_acaff636e6a9cf59363d6ee00435c04ff"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#acaff636e6a9cf59363d6ee00435c04ff">SVF::DCHGraph::getFieldType</a></div><div class="ttdeci">const DIType * getFieldType(const DIType *base, unsigned idx)</div><div class="ttdoc">Returns the type of field number idx (flattened) in base. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00291">DCHG.h:291</a></div></div>
838
838
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00713">DCHG.cpp:713</a></div></div>
839
839
  <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00817">SymbolTableInfo.cpp:817</a></div></div>
840
- <div class="ttc" id="classSVF_1_1SVFIR_html_a2b80cf884eedb51f77a5e84def7d8793"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2b80cf884eedb51f77a5e84def7d8793">SVF::SVFIR::getGepObjNode</a></div><div class="ttdeci">NodeID getGepObjNode(const MemObj *obj, const LocationSet &amp;ls)</div><div class="ttdoc">Get a field SVFIR Object node according to base mem obj and offset. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00405">SVFIR.cpp:405</a></div></div>
841
840
  <div class="ttc" id="classSVF_1_1GepObjPN_html"><div class="ttname"><a href="classSVF_1_1GepObjPN.html">SVF::GepObjPN</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00451">SVFVariables.h:451</a></div></div>
842
841
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_abce2ba326af69312c5971246cc4c10dc"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#abce2ba326af69312c5971246cc4c10dc">SVF::TypeBasedHeapCloning::isClone</a></div><div class="ttdeci">bool isClone(NodeID o) const</div><div class="ttdoc">Returns true if o is a clone. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00048">TypeBasedHeapCloning.cpp:48</a></div></div>
843
842
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00093">LocationSet.h:93</a></div></div>
844
843
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
845
844
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
846
845
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00387">GenericGraph.h:387</a></div></div>
846
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a20c0c65af266ac876cb722aee6e87101"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">SVF::SVFIR::getGepObjVar</a></div><div class="ttdeci">NodeID getGepObjVar(const MemObj *obj, const LocationSet &amp;ls)</div><div class="ttdoc">Get a field SVFIR Object node according to base mem obj and offset. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00405">SVFIR.cpp:405</a></div></div>
847
847
  <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00221">BasicTypes.h:221</a></div></div>
848
848
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ad07fb204258fccda89053514338e3804"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ad07fb204258fccda89053514338e3804">SVF::TypeBasedHeapCloning::addGepToObj</a></div><div class="ttdeci">void addGepToObj(NodeID gep, NodeID base, unsigned offset)</div><div class="ttdoc">Associates gep with base (through objToGeps and memObjToGeps). </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00118">TypeBasedHeapCloning.cpp:118</a></div></div>
849
849
  </div><!-- fragment -->
@@ -1255,7 +1255,7 @@ Private Attributes</h2></td></tr>
1255
1255
 
1256
1256
  <p class="definition">Definition at line <a class="el" href="TypeBasedHeapCloning_8cpp_source.html#l00036">36</a> of file <a class="el" href="TypeBasedHeapCloning_8cpp_source.html">TypeBasedHeapCloning.cpp</a>.</p>
1257
1257
  <div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#abce2ba326af69312c5971246cc4c10dc">isClone</a>(o)) o = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#accbf71007be662ee2436ca3d76b903ed">cloneToOriginalObj</a>.at(o);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;ObjVar&gt;(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(o)) &amp;&amp; <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a629ad3cef8929865b7319fb9e389f7bf">ppag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">isBlkObjOrConstantObj</a>(o);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;}</div><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>
1258
- <div class="ttc" id="classSVF_1_1SVFIR_html_ad9895f2d075eb402390e3b01ed68e001"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">SVF::SVFIR::isBlkObjOrConstantObj</a></div><div class="ttdeci">bool isBlkObjOrConstantObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00401">SVFIR.h:401</a></div></div>
1258
+ <div class="ttc" id="classSVF_1_1SVFIR_html_ad9895f2d075eb402390e3b01ed68e001"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">SVF::SVFIR::isBlkObjOrConstantObj</a></div><div class="ttdeci">bool isBlkObjOrConstantObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00400">SVFIR.h:400</a></div></div>
1259
1259
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_accbf71007be662ee2436ca3d76b903ed"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#accbf71007be662ee2436ca3d76b903ed">SVF::TypeBasedHeapCloning::cloneToOriginalObj</a></div><div class="ttdeci">Map&lt; NodeID, NodeID &gt; cloneToOriginalObj</div><div class="ttdoc">(Clone) object -&gt; original object (opposite of objToclones). </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00160">TypeBasedHeapCloning.h:160</a></div></div>
1260
1260
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_abce2ba326af69312c5971246cc4c10dc"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#abce2ba326af69312c5971246cc4c10dc">SVF::TypeBasedHeapCloning::isClone</a></div><div class="ttdeci">bool isClone(NodeID o) const</div><div class="ttdoc">Returns true if o is a clone. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00048">TypeBasedHeapCloning.cpp:48</a></div></div>
1261
1261
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00387">GenericGraph.h:387</a></div></div>
@@ -1554,7 +1554,7 @@ Private Attributes</h2></td></tr>
1554
1554
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a6363466e64eee4405806568d26206d2e"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">SVF::TypeBasedHeapCloning::undefType</a></div><div class="ttdeci">static const DIType * undefType</div><div class="ttdoc">The undefined type (•); void. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00027">TypeBasedHeapCloning.h:27</a></div></div>
1555
1555
  <div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00120">IRGraph.h:120</a></div></div>
1556
1556
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html">SVF::LLVMModuleSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00040">LLVMModule.h:40</a></div></div>
1557
- <div class="ttc" id="classSVF_1_1SVFIR_html_aa530e33657f68fc2e8eae9435ce430cb"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa530e33657f68fc2e8eae9435ce430cb">SVF::SVFIR::getCallSiteSet</a></div><div class="ttdeci">const CallSiteSet &amp; getCallSiteSet() const</div><div class="ttdoc">Get all callsites. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00205">SVFIR.h:205</a></div></div>
1557
+ <div class="ttc" id="classSVF_1_1SVFIR_html_aa530e33657f68fc2e8eae9435ce430cb"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa530e33657f68fc2e8eae9435ce430cb">SVF::SVFIR::getCallSiteSet</a></div><div class="ttdeci">const CallSiteSet &amp; getCallSiteSet() const</div><div class="ttdoc">Get all callsites. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00204">SVFIR.h:204</a></div></div>
1558
1558
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a7d3f7d27c9491b099a623ba03b1c4732"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a7d3f7d27c9491b099a623ba03b1c4732">SVF::TypeBasedHeapCloning::pta</a></div><div class="ttdeci">BVDataPTAImpl * pta</div><div class="ttdoc">PTA extending this class. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00147">TypeBasedHeapCloning.h:147</a></div></div>
1559
1559
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a13ce6b930a35877f17bffd4b89e22654"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a13ce6b930a35877f17bffd4b89e22654">SVF::PointerAnalysis::aliasTestMayAliasMangled</a></div><div class="ttdeci">static const std::string aliasTestMayAliasMangled</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00118">PointerAnalysis.h:118</a></div></div>
1560
1560
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a18347e41bc66b16e3f42c7c52811ad42"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a18347e41bc66b16e3f42c7c52811ad42">SVF::PointerAnalysis::aliasTestFailNoAlias</a></div><div class="ttdeci">static const std::string aliasTestFailNoAlias</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00127">PointerAnalysis.h:127</a></div></div>
@@ -104,18 +104,18 @@ $(function() {
104
104
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::SVFStmt::getSrcNode</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
105
105
  <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a65ee8b43a3a4999eb112a197d1a9f882">getValue</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
106
106
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
107
- <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">Load</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
108
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a3b20523aed66ac8943d7d00ff777137b">makeEdgeFlagWithAddionalOpnd</a>(GEdgeKind k, const SVFVar *var)</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
109
- <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(GEdgeKind k, const ICFGNode *cs)</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
110
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">makeEdgeFlagWithStoreInst</a>(GEdgeKind k, const ICFGNode *store)</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
111
- <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#aff95460d4b859e657a9198b7c5e5c736">NodeType</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"></td></tr>
112
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ac2089ffeab3f27354b2094758c805746">NormalGep</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
113
- <tr><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html#a099df135a83d28a2e6f344e008fe1cc6">opcode</a></td><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
114
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html#a58a341847b24cfaf98ab7e82008bc018">operator=</a>(const UnaryOPStmt &amp;)</td><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
115
- <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a0e461644bf9a4e50099b38f09222e858">operator==</a>(const GenericEdge&lt; NodeType &gt; *rhs) const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
116
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdgeSetTy</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
117
- <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a79ef5ff6adebbbc13e5c8db6e622bc03">PAGEdgeToSetMapTy</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
118
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a47a67e8aaae7059e353841a40b89e936">PAGKindToEdgeSetMapTy</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
107
+ <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66">KindToSVFStmtMapTy</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
108
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">Load</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
109
+ <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a3b20523aed66ac8943d7d00ff777137b">makeEdgeFlagWithAddionalOpnd</a>(GEdgeKind k, const SVFVar *var)</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
110
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(GEdgeKind k, const ICFGNode *cs)</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
111
+ <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">makeEdgeFlagWithStoreInst</a>(GEdgeKind k, const ICFGNode *store)</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
112
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#aff95460d4b859e657a9198b7c5e5c736">NodeType</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"></td></tr>
113
+ <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ac2089ffeab3f27354b2094758c805746">NormalGep</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
114
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html#a099df135a83d28a2e6f344e008fe1cc6">opcode</a></td><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
115
+ <tr><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html#a58a341847b24cfaf98ab7e82008bc018">operator=</a>(const UnaryOPStmt &amp;)</td><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
116
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a0e461644bf9a4e50099b38f09222e858">operator==</a>(const GenericEdge&lt; NodeType &gt; *rhs) const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
117
+ <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a2bdfa37167b5496629e5cae62705d5f2">PAGEdgeSetTy</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
118
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a229c78147511f2a581c761552179b6fa">PAGEdgeToSetMapTy</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
119
119
  <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">PEDGEK</a> enum name</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
120
120
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
121
121
  <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">Ret</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
@@ -124,17 +124,18 @@ $(function() {
124
124
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0">setValue</a>(const Value *val)</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
125
125
  <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">Store</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
126
126
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a47102f72115d41bff899b1b2ffec75b1">SVFStmt</a>(SVFVar *s, SVFVar *d, GEdgeFlag k)</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
127
- <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">ThreadFork</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
128
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">ThreadJoin</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
129
- <tr><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html#a1d5eced1a537eeab82d24f451d6b7f65">toString</a>() const override</td><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
130
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#aa306e817648ab5def47e83473e99b3d3">totalEdgeNum</a></td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
131
- <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">UnaryOp</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
132
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html#a033d3ba05ce96e04b63f2cf455518582">UnaryOPStmt</a>()</td><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
133
- <tr><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html#aaad7785c0e6ea468cf7df8eb39cfe327">UnaryOPStmt</a>(const UnaryOPStmt &amp;)</td><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
134
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html#a2b91333ac3d4b5e1099590aeb15d38ba">UnaryOPStmt</a>(SVFVar *s, SVFVar *d, u32_t oc)</td><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
135
- <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3a8902fc2aa68428e271012861a2a2">VariantGep</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
136
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a548daea0cac6491de91d4840b7297741">~GenericEdge</a>()</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
137
- <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#aac79c7e8d390f297002782afb0ba3ff0">~SVFStmt</a>()</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
127
+ <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmtSetTy</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
128
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">ThreadFork</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
129
+ <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">ThreadJoin</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
130
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html#a1d5eced1a537eeab82d24f451d6b7f65">toString</a>() const override</td><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
131
+ <tr><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#aa306e817648ab5def47e83473e99b3d3">totalEdgeNum</a></td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
132
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">UnaryOp</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
133
+ <tr><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html#a033d3ba05ce96e04b63f2cf455518582">UnaryOPStmt</a>()</td><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
134
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html#aaad7785c0e6ea468cf7df8eb39cfe327">UnaryOPStmt</a>(const UnaryOPStmt &amp;)</td><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
135
+ <tr><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html#a2b91333ac3d4b5e1099590aeb15d38ba">UnaryOPStmt</a>(SVFVar *s, SVFVar *d, u32_t oc)</td><td class="entry"><a class="el" href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
136
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3a8902fc2aa68428e271012861a2a2">VariantGep</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"></td></tr>
137
+ <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a548daea0cac6491de91d4840b7297741">~GenericEdge</a>()</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
138
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html#aac79c7e8d390f297002782afb0ba3ff0">~SVFStmt</a>()</td><td class="entry"><a class="el" href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
138
139
  </table></div><!-- contents -->
139
140
  <!-- start footer part -->
140
141
  <hr class="footer"/><address class="footer"><small>