svf-tools 1.0.321 → 1.0.325

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 (487) 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/Andersen_8h_source.html +2 -2
  5. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  6. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +13 -12
  7. package/SVF-doxygen/html/html/ConsG_8h_source.html +15 -15
  8. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  9. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  10. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  12. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +3 -3
  14. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
  15. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  17. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +3 -3
  18. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
  19. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +5 -5
  20. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
  22. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
  23. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +4 -4
  24. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  25. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
  26. package/SVF-doxygen/html/html/IRGraph_8cpp.html +1 -0
  27. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -18
  28. package/SVF-doxygen/html/html/IRGraph_8h_source.html +13 -13
  29. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +6 -6
  30. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +9 -9
  31. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
  32. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +24 -24
  33. package/SVF-doxygen/html/html/MemRegion_8h_source.html +13 -13
  34. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +13 -13
  35. package/SVF-doxygen/html/html/MemSSA_8h_source.html +13 -13
  36. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  37. package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -1
  38. package/SVF-doxygen/html/html/Options_8h_source.html +2 -1
  39. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
  40. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -8
  41. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +8 -8
  42. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +3 -3
  43. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +8 -8
  44. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
  45. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  47. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  49. package/SVF-doxygen/html/html/SVFG_8cpp.html +1 -0
  50. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +63 -61
  51. package/SVF-doxygen/html/html/SVFG_8h_source.html +20 -20
  52. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -5
  53. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +42 -42
  54. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +61 -61
  55. package/SVF-doxygen/html/html/SVFIR_8h_source.html +153 -154
  56. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +22 -22
  57. package/SVF-doxygen/html/html/SVFStatements_8h.html +11 -11
  58. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +133 -132
  59. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +9 -9
  60. package/SVF-doxygen/html/html/SVFVariables_8h.html +9 -9
  61. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +78 -78
  62. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
  63. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  64. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
  65. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  66. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +13 -13
  67. package/SVF-doxygen/html/html/VFGNode_8h_source.html +17 -17
  68. package/SVF-doxygen/html/html/VFG_8cpp_source.html +48 -48
  69. package/SVF-doxygen/html/html/VFG_8h_source.html +35 -35
  70. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
  71. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +7 -7
  72. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  73. package/SVF-doxygen/html/html/annotated.html +21 -21
  74. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  75. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  76. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  77. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +137 -0
  78. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +500 -0
  79. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.png +0 -0
  80. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +1 -1
  81. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +7 -7
  82. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  83. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +4 -4
  84. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +34 -34
  85. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +4 -4
  86. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +12 -12
  87. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +4 -4
  88. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +8 -8
  89. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +4 -4
  90. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +8 -8
  91. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +4 -4
  92. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +8 -8
  93. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +4 -4
  94. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +8 -8
  95. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +4 -4
  96. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +11 -11
  97. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +9 -9
  98. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +4 -4
  99. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +8 -8
  100. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +4 -4
  101. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +26 -26
  102. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +155 -0
  103. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +756 -0
  104. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.png +0 -0
  105. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +20 -19
  106. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +33 -31
  107. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  108. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode-members.html +8 -8
  109. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +6 -6
  110. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  111. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +20 -19
  112. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +24 -22
  113. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +169 -0
  114. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +537 -0
  115. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.png +0 -0
  116. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +169 -0
  117. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +547 -0
  118. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.png +0 -0
  119. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +172 -0
  120. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +556 -0
  121. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.png +0 -0
  122. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +75 -22
  123. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +479 -93
  124. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.png +0 -0
  125. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +4 -4
  126. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +11 -11
  127. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +5 -5
  128. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +46 -46
  129. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  130. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  131. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +4 -4
  132. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +18 -18
  133. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +57 -21
  134. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +253 -89
  135. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.png +0 -0
  136. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +7 -7
  138. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
  139. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
  140. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +10 -10
  141. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +19 -19
  142. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +27 -27
  143. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +167 -0
  144. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +531 -0
  145. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.png +0 -0
  146. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +165 -0
  147. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +502 -0
  148. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.png +0 -0
  149. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +167 -0
  150. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +577 -0
  151. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.png +0 -0
  152. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +4 -4
  153. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +8 -8
  154. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +4 -4
  155. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +16 -16
  156. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +4 -4
  157. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +27 -27
  158. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +8 -8
  159. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +8 -8
  160. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +26 -26
  161. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  162. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +4 -4
  163. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode-members.html +6 -6
  164. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +6 -6
  165. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode-members.html +6 -6
  166. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +6 -6
  167. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  168. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +6 -6
  169. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
  170. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +23 -22
  171. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  172. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN-members.html +12 -12
  173. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +61 -61
  174. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.png +0 -0
  175. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +57 -22
  176. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +259 -118
  177. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
  178. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +7 -7
  180. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +170 -0
  181. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +752 -0
  182. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.png +0 -0
  183. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode-members.html +6 -6
  184. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +6 -6
  185. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +6 -6
  186. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +22 -22
  187. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
  188. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +8 -8
  190. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +54 -54
  191. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
  192. package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode-members.html +6 -6
  193. package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode.html +6 -6
  194. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +20 -20
  195. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +27 -27
  196. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +3 -3
  197. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode-members.html +6 -6
  198. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +6 -6
  199. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +20 -20
  200. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +27 -27
  201. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +3 -3
  203. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +6 -6
  204. package/SVF-doxygen/html/html/classSVF_1_1LoadMU-members.html +3 -3
  205. package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +20 -20
  206. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +57 -21
  207. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +253 -89
  208. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.png +0 -0
  209. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +1 -1
  210. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +7 -7
  211. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +23 -23
  212. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +147 -147
  213. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +2 -2
  214. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  215. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
  216. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +2 -2
  217. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +25 -25
  218. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +102 -102
  219. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +24 -23
  220. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +36 -34
  221. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.png +0 -0
  222. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +142 -0
  223. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +649 -0
  224. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.png +0 -0
  225. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +165 -0
  226. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +644 -0
  227. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.png +0 -0
  228. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +5 -5
  229. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +13 -13
  230. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +21 -20
  231. package/SVF-doxygen/html/html/classSVF_1_1Options.html +26 -0
  232. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +16 -16
  233. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +8 -8
  234. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +74 -22
  235. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +447 -98
  236. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.png +0 -0
  237. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +4 -4
  238. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +55 -55
  239. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode-members.html +7 -7
  240. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +6 -6
  241. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  242. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +20 -19
  243. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +24 -22
  244. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +8 -8
  245. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +24 -24
  246. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +56 -56
  247. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +103 -103
  248. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
  249. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +68 -68
  250. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +45 -45
  251. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +132 -133
  252. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +759 -777
  253. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +12 -12
  254. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +180 -180
  255. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +23 -22
  256. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +57 -39
  257. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
  258. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +8 -8
  259. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +82 -82
  260. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
  261. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +11 -11
  262. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  263. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +4 -4
  264. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +8 -8
  265. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI-members.html +3 -3
  266. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +20 -20
  267. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +57 -21
  268. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +260 -89
  269. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.png +0 -0
  270. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +1 -1
  271. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +7 -7
  272. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +23 -22
  273. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +18 -16
  274. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +23 -22
  275. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +18 -16
  276. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  277. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  278. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +4 -4
  279. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +10 -10
  280. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +28 -28
  281. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +147 -0
  282. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +794 -0
  283. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.png +0 -0
  284. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +42 -42
  285. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +145 -145
  286. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +163 -0
  287. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +521 -0
  288. package/SVF-doxygen/html/html/classSVF_1_1ValVar.png +0 -0
  289. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +8 -8
  290. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +24 -24
  291. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +139 -0
  292. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +544 -0
  293. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.png +0 -0
  294. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +4 -4
  295. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +18 -18
  296. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +4 -4
  297. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +3 -3
  298. package/SVF-doxygen/html/html/classes.html +18 -18
  299. package/SVF-doxygen/html/html/functions_a.html +55 -55
  300. package/SVF-doxygen/html/html/functions_b.html +2 -2
  301. package/SVF-doxygen/html/html/functions_c.html +54 -59
  302. package/SVF-doxygen/html/html/functions_d.html +4 -4
  303. package/SVF-doxygen/html/html/functions_f.html +5 -5
  304. package/SVF-doxygen/html/html/functions_func.html +54 -54
  305. package/SVF-doxygen/html/html/functions_func_b.html +2 -2
  306. package/SVF-doxygen/html/html/functions_func_c.html +30 -30
  307. package/SVF-doxygen/html/html/functions_func_d.html +4 -4
  308. package/SVF-doxygen/html/html/functions_func_f.html +2 -2
  309. package/SVF-doxygen/html/html/functions_func_g.html +107 -105
  310. package/SVF-doxygen/html/html/functions_func_h.html +6 -6
  311. package/SVF-doxygen/html/html/functions_func_l.html +3 -3
  312. package/SVF-doxygen/html/html/functions_func_n.html +2 -2
  313. package/SVF-doxygen/html/html/functions_func_o.html +15 -15
  314. package/SVF-doxygen/html/html/functions_func_p.html +2 -2
  315. package/SVF-doxygen/html/html/functions_func_s.html +4 -4
  316. package/SVF-doxygen/html/html/functions_func_t.html +20 -20
  317. package/SVF-doxygen/html/html/functions_func_u.html +2 -2
  318. package/SVF-doxygen/html/html/functions_func_v.html +5 -5
  319. package/SVF-doxygen/html/html/functions_g.html +123 -121
  320. package/SVF-doxygen/html/html/functions_h.html +6 -6
  321. package/SVF-doxygen/html/html/functions_i.html +15 -15
  322. package/SVF-doxygen/html/html/functions_k.html +9 -0
  323. package/SVF-doxygen/html/html/functions_l.html +12 -12
  324. package/SVF-doxygen/html/html/functions_m.html +1 -1
  325. package/SVF-doxygen/html/html/functions_n.html +6 -6
  326. package/SVF-doxygen/html/html/functions_o.html +32 -35
  327. package/SVF-doxygen/html/html/functions_p.html +32 -49
  328. package/SVF-doxygen/html/html/functions_r.html +1 -1
  329. package/SVF-doxygen/html/html/functions_s.html +33 -14
  330. package/SVF-doxygen/html/html/functions_t.html +24 -24
  331. package/SVF-doxygen/html/html/functions_type_c.html +1 -4
  332. package/SVF-doxygen/html/html/functions_type_f.html +2 -2
  333. package/SVF-doxygen/html/html/functions_type_g.html +2 -2
  334. package/SVF-doxygen/html/html/functions_type_i.html +3 -3
  335. package/SVF-doxygen/html/html/functions_type_k.html +3 -0
  336. package/SVF-doxygen/html/html/functions_type_l.html +3 -3
  337. package/SVF-doxygen/html/html/functions_type_p.html +3 -19
  338. package/SVF-doxygen/html/html/functions_type_s.html +19 -3
  339. package/SVF-doxygen/html/html/functions_type_v.html +1 -1
  340. package/SVF-doxygen/html/html/functions_u.html +2 -2
  341. package/SVF-doxygen/html/html/functions_v.html +8 -8
  342. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  343. package/SVF-doxygen/html/html/functions_vars_g.html +8 -8
  344. package/SVF-doxygen/html/html/functions_vars_i.html +9 -9
  345. package/SVF-doxygen/html/html/functions_vars_k.html +6 -0
  346. package/SVF-doxygen/html/html/functions_vars_l.html +2 -2
  347. package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
  348. package/SVF-doxygen/html/html/functions_vars_o.html +3 -4
  349. package/SVF-doxygen/html/html/functions_vars_p.html +4 -7
  350. package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
  351. package/SVF-doxygen/html/html/functions_w.html +5 -9
  352. package/SVF-doxygen/html/html/hierarchy.html +65 -65
  353. package/SVF-doxygen/html/html/namespaceSVF.html +24 -24
  354. package/SVF-doxygen/html/html/search/all_1.js +39 -39
  355. package/SVF-doxygen/html/html/search/all_10.js +12 -17
  356. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  357. package/SVF-doxygen/html/html/search/all_13.js +17 -12
  358. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  359. package/SVF-doxygen/html/html/search/all_15.js +2 -2
  360. package/SVF-doxygen/html/html/search/all_16.js +5 -5
  361. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  362. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  363. package/SVF-doxygen/html/html/search/all_3.js +9 -10
  364. package/SVF-doxygen/html/html/search/all_4.js +2 -2
  365. package/SVF-doxygen/html/html/search/all_6.js +4 -4
  366. package/SVF-doxygen/html/html/search/all_7.js +54 -53
  367. package/SVF-doxygen/html/html/search/all_8.js +2 -2
  368. package/SVF-doxygen/html/html/search/all_9.js +4 -4
  369. package/SVF-doxygen/html/html/search/all_b.js +3 -0
  370. package/SVF-doxygen/html/html/search/all_c.js +7 -7
  371. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  372. package/SVF-doxygen/html/html/search/all_e.js +5 -5
  373. package/SVF-doxygen/html/html/search/all_f.js +5 -5
  374. package/SVF-doxygen/html/html/search/classes_0.js +1 -1
  375. package/SVF-doxygen/html/html/search/classes_1.js +1 -1
  376. package/SVF-doxygen/html/html/search/classes_11.js +1 -1
  377. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  378. package/SVF-doxygen/html/html/search/classes_2.js +5 -5
  379. package/SVF-doxygen/html/html/search/classes_3.js +2 -2
  380. package/SVF-doxygen/html/html/search/classes_5.js +1 -1
  381. package/SVF-doxygen/html/html/search/classes_6.js +2 -2
  382. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  383. package/SVF-doxygen/html/html/search/classes_b.js +1 -1
  384. package/SVF-doxygen/html/html/search/classes_c.js +1 -1
  385. package/SVF-doxygen/html/html/search/classes_d.js +1 -1
  386. package/SVF-doxygen/html/html/search/classes_f.js +1 -1
  387. package/SVF-doxygen/html/html/search/functions_0.js +39 -39
  388. package/SVF-doxygen/html/html/search/functions_1.js +1 -1
  389. package/SVF-doxygen/html/html/search/functions_10.js +4 -4
  390. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  391. package/SVF-doxygen/html/html/search/functions_12.js +1 -1
  392. package/SVF-doxygen/html/html/search/functions_13.js +2 -2
  393. package/SVF-doxygen/html/html/search/functions_2.js +7 -7
  394. package/SVF-doxygen/html/html/search/functions_3.js +2 -2
  395. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  396. package/SVF-doxygen/html/html/search/functions_6.js +49 -48
  397. package/SVF-doxygen/html/html/search/functions_7.js +2 -2
  398. package/SVF-doxygen/html/html/search/functions_a.js +3 -3
  399. package/SVF-doxygen/html/html/search/functions_c.js +1 -1
  400. package/SVF-doxygen/html/html/search/functions_d.js +2 -2
  401. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  402. package/SVF-doxygen/html/html/search/typedefs_11.js +7 -3
  403. package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
  404. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -2
  405. package/SVF-doxygen/html/html/search/typedefs_5.js +2 -2
  406. package/SVF-doxygen/html/html/search/typedefs_6.js +1 -1
  407. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  408. package/SVF-doxygen/html/html/search/typedefs_a.js +2 -1
  409. package/SVF-doxygen/html/html/search/typedefs_b.js +3 -3
  410. package/SVF-doxygen/html/html/search/typedefs_f.js +3 -7
  411. package/SVF-doxygen/html/html/search/variables_10.js +2 -3
  412. package/SVF-doxygen/html/html/search/variables_13.js +1 -0
  413. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  414. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  415. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  416. package/SVF-doxygen/html/html/search/variables_7.js +4 -4
  417. package/SVF-doxygen/html/html/search/variables_9.js +4 -4
  418. package/SVF-doxygen/html/html/search/variables_b.js +3 -1
  419. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  420. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  421. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  422. package/SVF-doxygen/html/html/search/variables_f.js +2 -2
  423. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +9 -9
  424. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  425. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +18 -18
  426. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +2 -2
  427. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +20 -20
  428. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +1 -1
  429. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  430. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  431. package/include/DDA/ContextDDA.h +1 -1
  432. package/include/DDA/FlowDDA.h +1 -1
  433. package/include/Graphs/ConsG.h +10 -10
  434. package/include/Graphs/ICFGNode.h +4 -4
  435. package/include/Graphs/IRGraph.h +7 -7
  436. package/include/Graphs/VFG.h +13 -13
  437. package/include/Graphs/VFGNode.h +6 -6
  438. package/include/MSSA/MSSAMuChi.h +6 -6
  439. package/include/MSSA/MemRegion.h +11 -11
  440. package/include/MSSA/MemSSA.h +11 -11
  441. package/include/MemoryModel/PointerAnalysis.h +9 -9
  442. package/include/MemoryModel/PointerAnalysisImpl.h +4 -4
  443. package/include/MemoryModel/SVFIR.h +82 -83
  444. package/include/MemoryModel/SVFStatements.h +97 -92
  445. package/include/MemoryModel/SVFVariables.h +71 -71
  446. package/include/SVF-FE/SVFIRBuilder.h +24 -24
  447. package/include/Util/IRAnnotator.h +1 -1
  448. package/include/Util/Options.h +3 -1
  449. package/include/Util/TypeBasedHeapCloning.h +2 -2
  450. package/include/WPA/Andersen.h +1 -1
  451. package/include/WPA/FlowSensitiveTBHC.h +1 -1
  452. package/lib/DDA/ContextDDA.cpp +6 -6
  453. package/lib/DDA/DDAClient.cpp +6 -6
  454. package/lib/DDA/DDAStat.cpp +2 -2
  455. package/lib/DDA/FlowDDA.cpp +4 -4
  456. package/lib/Graphs/ConsG.cpp +37 -36
  457. package/lib/Graphs/ICFG.cpp +4 -4
  458. package/lib/Graphs/IRGraph.cpp +27 -24
  459. package/lib/Graphs/OfflineConsG.cpp +8 -8
  460. package/lib/Graphs/SVFG.cpp +18 -16
  461. package/lib/Graphs/ThreadCallGraph.cpp +2 -2
  462. package/lib/Graphs/VFG.cpp +52 -52
  463. package/lib/MSSA/MemRegion.cpp +23 -23
  464. package/lib/MSSA/MemSSA.cpp +15 -15
  465. package/lib/MTA/MTAAnnotator.cpp +5 -5
  466. package/lib/MemoryModel/PAGBuilderFromFile.cpp +13 -13
  467. package/lib/MemoryModel/PointerAnalysis.cpp +9 -9
  468. package/lib/MemoryModel/PointerAnalysisImpl.cpp +14 -14
  469. package/lib/MemoryModel/SVFIR.cpp +95 -95
  470. package/lib/MemoryModel/SVFStatements.cpp +24 -24
  471. package/lib/MemoryModel/SVFVariables.cpp +19 -19
  472. package/lib/SABER/LeakChecker.cpp +2 -2
  473. package/lib/SABER/SaberSVFGBuilder.cpp +5 -5
  474. package/lib/SVF-FE/Graph2Json.cpp +3 -3
  475. package/lib/SVF-FE/SVFIRBuilder.cpp +22 -22
  476. package/lib/Util/Options.cpp +6 -0
  477. package/lib/Util/PTAStat.cpp +8 -8
  478. package/lib/Util/TypeBasedHeapCloning.cpp +22 -22
  479. package/lib/WPA/Andersen.cpp +13 -13
  480. package/lib/WPA/AndersenSFR.cpp +2 -2
  481. package/lib/WPA/AndersenStat.cpp +6 -6
  482. package/lib/WPA/FlowSensitive.cpp +8 -8
  483. package/lib/WPA/FlowSensitiveStat.cpp +4 -4
  484. package/lib/WPA/FlowSensitiveTBHC.cpp +9 -9
  485. package/lib/WPA/VersionedFlowSensitive.cpp +2 -2
  486. package/lib/WPA/VersionedFlowSensitiveStat.cpp +1 -1
  487. package/package.json +1 -1
@@ -66,16 +66,17 @@ $(function() {
66
66
  <div class="title">VFG.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="VFG_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- VFG.cpp -- Sparse value-flow graph-----------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2018&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * VFG.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Sep 11, 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="SVFGNode_8h.html">Graphs/SVFGNode.h</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="VFG_8h.html">Graphs/VFG.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFModule_8h.html">Util/SVFModule.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-FE/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1VFGNode.html#a0342b5a6f270f4ff0e8e2a9b0082c6c5"> 40</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1VFGNode.html#a0342b5a6f270f4ff0e8e2a9b0082c6c5">VFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; std::string str;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;VFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1StmtVFGNode.html#aa5011ff12de490146ab106e90d0b6ad8"> 47</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1StmtVFGNode.html#aa5011ff12de490146ab106e90d0b6ad8">StmtVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; std::string str;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;StmtVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; rawstr &lt;&lt; getPAGEdge()-&gt;toString();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadVFGNode.html#aad3591f38e30c5168d4accb76ac8dc04"> 55</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1LoadVFGNode.html#aad3591f38e30c5168d4accb76ac8dc04">LoadVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; std::string str;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;LoadVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; rawstr &lt;&lt; getPAGEdge()-&gt;toString();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreVFGNode.html#aba7e8b8329caf412a55f5880f68414fe"> 64</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1StoreVFGNode.html#aba7e8b8329caf412a55f5880f68414fe">StoreVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::string str;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;StoreVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; rawstr &lt;&lt; getPAGEdge()-&gt;toString();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyVFGNode.html#ad86bbc5ec4a9ea226364a84e04724b37"> 72</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CopyVFGNode.html#ad86bbc5ec4a9ea226364a84e04724b37">CopyVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; std::string str;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CopyVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; rawstr &lt;&lt; getPAGEdge()-&gt;toString();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpVFGNode.html#aa08c4475c47beb0d026acab859d68117"> 80</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CmpVFGNode.html#aa08c4475c47beb0d026acab859d68117">CmpVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; std::string str;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CmpVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGEdge: [&quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; = cmp(&quot;</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">for</span>(CmpVFGNode::OPVers::const_iterator it = opVerBegin(), eit = opVerEnd();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; it != eit; it++)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; rawstr &lt;&lt; it-&gt;second-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;)]\n&quot;</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span>(res-&gt;hasValue()){</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPVFGNode.html#aa743cf19c5dc91dbb0c7b8981fecc6c4"> 95</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1BinaryOPVFGNode.html#aa743cf19c5dc91dbb0c7b8981fecc6c4">BinaryOPVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; std::string str;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BinaryOPVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGEdge: [&quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; = Binary(&quot;</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span>(BinaryOPVFGNode::OPVers::const_iterator it = opVerBegin(), eit = opVerEnd();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; it != eit; it++)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; rawstr &lt;&lt; it-&gt;second-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;)]\t&quot;</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span>(res-&gt;hasValue()){</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;}</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPVFGNode.html#ab748bb83004550944c6abca7150aec14"> 110</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1UnaryOPVFGNode.html#ab748bb83004550944c6abca7150aec14">UnaryOPVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; std::string str;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;UnaryOPVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGEdge: [&quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; = Unary(&quot;</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span>(UnaryOPVFGNode::OPVers::const_iterator it = opVerBegin(), eit = opVerEnd();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; it != eit; it++)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; rawstr &lt;&lt; it-&gt;second-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;)]\t&quot;</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(res-&gt;hasValue()){</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchVFGNode.html#a131fe96308f67b307ea08e645b019e13"> 125</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1BranchVFGNode.html#a131fe96308f67b307ea08e645b019e13">BranchVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; std::string str;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BranchVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGEdge: [&quot;</span> &lt;&lt; brstmt-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1GepVFGNode.html#ad27376633c939952878d5d73621ec638"> 134</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1GepVFGNode.html#ad27376633c939952878d5d73621ec638">GepVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; std::string str;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;GepVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; rawstr &lt;&lt; getPAGEdge()-&gt;toString();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;}</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1PHIVFGNode.html#a7fb9cbed3718922cd81b18d069c79aea"> 143</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PHIVFGNode.html#a7fb9cbed3718922cd81b18d069c79aea">PHIVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; std::string str;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PHIVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGNode: [&quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; = PHI(&quot;</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span>(PHIVFGNode::OPVers::const_iterator it = opVerBegin(), eit = opVerEnd();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; it != eit; it++)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; rawstr &lt;&lt; it-&gt;second-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;)]\t&quot;</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span>(res-&gt;hasValue()){</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraPHIVFGNode.html#a145413d87e9174b5eb70b871b9dfa13e"> 159</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1IntraPHIVFGNode.html#a145413d87e9174b5eb70b871b9dfa13e">IntraPHIVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; std::string str;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;IntraPHIVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGNode: [&quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; = PHI(&quot;</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span>(PHIVFGNode::OPVers::const_iterator it = opVerBegin(), eit = opVerEnd();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; it != eit; it++)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; rawstr &lt;&lt; it-&gt;second-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;)]\t&quot;</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">if</span>(res-&gt;hasValue()){</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrVFGNode.html#ac26fbce400355f43fdc22ad88a8d9067"> 175</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1AddrVFGNode.html#ac26fbce400355f43fdc22ad88a8d9067">AddrVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; std::string str;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;AddrVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; rawstr &lt;&lt; getPAGEdge()-&gt;toString();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;}</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1ArgumentVFGNode.html#a3c10cd63e18f79ccc66f4687d05cb8c5"> 184</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ArgumentVFGNode.html#a3c10cd63e18f79ccc66f4687d05cb8c5">ArgumentVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; std::string str;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ArgumentVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; rawstr &lt;&lt; param-&gt;toString();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;}</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;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1ActualParmVFGNode.html#a60d6ce4c4fe2cf54be45e58b2b93c9f6"> 193</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ActualParmVFGNode.html#a60d6ce4c4fe2cf54be45e58b2b93c9f6">ActualParmVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; std::string str;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ActualParmVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CS[&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(getCallSite()-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; rawstr &lt;&lt; param-&gt;toString();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;}</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1FormalParmVFGNode.html#ac4e695d6ee7bb7c5ed4e273567e7c1cc"> 203</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1FormalParmVFGNode.html#ac4e695d6ee7bb7c5ed4e273567e7c1cc">FormalParmVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; std::string str;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;FormalParmVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Fun[&quot;</span> &lt;&lt; getFun()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; rawstr &lt;&lt; param-&gt;toString();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1ActualRetVFGNode.html#a4d1e7df32604becd2e2b60fe2e5cfbfa"> 212</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ActualRetVFGNode.html#a4d1e7df32604becd2e2b60fe2e5cfbfa">ActualRetVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; std::string str;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ActualRetVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CS[&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(getCallSite()-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; rawstr &lt;&lt; param-&gt;toString();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;}</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1FormalRetVFGNode.html#ab1ae2339d7408d9156cdfe5ab4559e66"> 222</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1FormalRetVFGNode.html#ab1ae2339d7408d9156cdfe5ab4559e66">FormalRetVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; std::string str;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;FormalRetVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Fun[&quot;</span> &lt;&lt; getFun()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; rawstr &lt;&lt; param-&gt;toString();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</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"><a class="line" href="classSVF_1_1InterPHIVFGNode.html#aff35aebdc8d955df160e51da7b666a7e"> 232</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1InterPHIVFGNode.html#aff35aebdc8d955df160e51da7b666a7e">InterPHIVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; std::string str;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span>(isFormalParmPHI())</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;FormalParmPHI ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; PAGNode ID: &quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ActualRetPHI ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; PAGNode ID: &quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</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"><a class="line" href="classSVF_1_1NullPtrVFGNode.html#a75c8b89a34bfd89a4af2c699cdb626b9"> 242</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1NullPtrVFGNode.html#a75c8b89a34bfd89a4af2c699cdb626b9">NullPtrVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; std::string str;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;NullPtrVFGNode ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; PAGNode ID: &quot;</span> &lt;&lt; node-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1VFGEdge.html#a8f4bec008af7cd1a89870715eaa91a7b"> 251</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1VFGEdge.html#a8f4bec008af7cd1a89870715eaa91a7b">VFGEdge::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; std::string str;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;VFGEdge: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="classSVF_1_1DirectSVFGEdge.html#aa8d70214eb0242c3f2baaa506c12852c"> 258</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1DirectSVFGEdge.html#aa8d70214eb0242c3f2baaa506c12852c">DirectSVFGEdge::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; std::string str;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;DirectVFGEdge: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;}</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"><a class="line" href="classSVF_1_1IntraDirSVFGEdge.html#a1c8dc17717409aa42749181aafd155aa"> 265</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1IntraDirSVFGEdge.html#a1c8dc17717409aa42749181aafd155aa">IntraDirSVFGEdge::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; std::string str;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;IntraDirSVFGEdge: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;}</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1CallDirSVFGEdge.html#af07decd05375f56baa4a1c4fe70bc3f1"> 272</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CallDirSVFGEdge.html#af07decd05375f56baa4a1c4fe70bc3f1">CallDirSVFGEdge::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; std::string str;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CallDirSVFGEdge CallSite ID: &quot;</span> &lt;&lt; getCallSiteId() &lt;&lt; <span class="stringliteral">&quot; [&quot;</span>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; rawstr &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;}</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1RetDirSVFGEdge.html#a6282c2619d843cf90575886a0ef81edf"> 280</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1RetDirSVFGEdge.html#a6282c2619d843cf90575886a0ef81edf">RetDirSVFGEdge::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; std::string str;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;RetDirSVFGEdge CallSite ID: &quot;</span> &lt;&lt; getCallSiteId() &lt;&lt; <span class="stringliteral">&quot; [&quot;</span>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; rawstr &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;}</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1FormalRetVFGNode.html#a732fe0036d307a1dace2631219de38ef"> 290</a></span>&#160;<a class="code" href="classSVF_1_1FormalRetVFGNode.html#a0155a71f08dfb1fb43f054084b2380c6">FormalRetVFGNode::FormalRetVFGNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* n, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f) :</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="classSVF_1_1ArgumentVFGNode.html">ArgumentVFGNode</a>(id, n, FRet), fun(f)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;{</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;}</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1PHIVFGNode.html#add1ed5dfc7fbb095e2bdb7ff1e2658ef"> 295</a></span>&#160;<a class="code" href="classSVF_1_1PHIVFGNode.html#add1ed5dfc7fbb095e2bdb7ff1e2658ef">PHIVFGNode::PHIVFGNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* r,<a class="code" href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75">VFGNodeK</a> k): <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>(id, k), res(r)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;{</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;}</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc"> 308</a></span>&#160;<a class="code" href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">VFG::VFG</a>(<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* cg, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> k): totalVFGNode(0), callgraph(cg), pag(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>::getPAG()), kind(k)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;{</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tCreate VFG Top Level Node\n&quot;</span>));</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3544cc0380964f238c964a0e7b417862">addVFGNodes</a>();</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tCreate SVFG Direct Edge\n&quot;</span>));</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="classSVF_1_1VFG.html#adedaba0713164e10ce6273b2947535e0">connectDirectVFGEdges</a>();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;}</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69"> 321</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69">VFG::destroy</a>()</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;{</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a3544cc0380964f238c964a0e7b417862"> 330</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a3544cc0380964f238c964a0e7b417862">VFG::addVFGNodes</a>()</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;{</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">// initialize dummy definition null pointers in order to uniform the construction</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="comment">// to be noted for black hole pointer it has already has address edge connected,</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="comment">// and its definition will be set when processing addr SVFIR edge.</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a59bc855eb8591d88e0898e14d4f4b607">addNullPtrVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>()));</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="comment">// initialize address nodes</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; addrs = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">PAGEdge::Addr</a>);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = addrs.begin(), eiter =</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; addrs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a7b0d533f3ccce8fc64deae6077f3d959">addAddrVFGNode</a>(SVFUtil::cast&lt;AddrPE&gt;(*iter));</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// initialize copy nodes</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; copys = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">PAGEdge::Copy</a>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = copys.begin(), eiter =</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; copys.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyPE.html">CopyPE</a>* edge = SVFUtil::cast&lt;CopyPE&gt;(*iter);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1VFG.html#a8ddf15d89a1b11a7f7720b671f4f0295">isPhiCopyEdge</a>(edge) &amp;&amp; <span class="stringliteral">&quot;Copy edges can not be a PhiNode (or from PhiNode)&quot;</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classSVF_1_1VFG.html#afd664fad8aec173f4ed6c4aa588e5c46">addCopyVFGNode</a>(edge);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="comment">// initialize gep nodes</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; ngeps = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ac2089ffeab3f27354b2094758c805746">PAGEdge::NormalGep</a>);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = ngeps.begin(), eiter =</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; ngeps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a51b3b232ddda0656bfe0c7d9527b4a84">addGepVFGNode</a>(SVFUtil::cast&lt;NormalGepPE&gt;(*iter));</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; vgeps = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3a8902fc2aa68428e271012861a2a2">PAGEdge::VariantGep</a>);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = vgeps.begin(), eiter =</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; vgeps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a51b3b232ddda0656bfe0c7d9527b4a84">addGepVFGNode</a>(SVFUtil::cast&lt;VariantGepPE&gt;(*iter));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="comment">// initialize load nodes</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; loads = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">PAGEdge::Load</a>);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = loads.begin(), eiter =</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; loads.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="classSVF_1_1VFG.html#adbd7966d18ab50da5a485ba6e043ba61">addLoadVFGNode</a>(SVFUtil::cast&lt;LoadPE&gt;(*iter));</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="comment">// initialize store nodes</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">PAGEdge::Store</a>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; stores.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="classSVF_1_1VFG.html#aa21ad616306c111b77fb3ec8f16b19be">addStoreVFGNode</a>(SVFUtil::cast&lt;StorePE&gt;(*iter));</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; forks = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">PAGEdge::ThreadFork</a>);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = forks.begin(), eiter =</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; forks.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* forkedge = SVFUtil::cast&lt;TDForkPE&gt;(*iter);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a0fabca3c0f9bebe23f66a914dbb99e39">addActualParmVFGNode</a>(forkedge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(),forkedge-&gt;<a class="code" href="classSVF_1_1CallPE.html#a6a7a917cd6f1235b9453c9672f38c0ef">getCallSite</a>());</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="comment">// initialize actual parameter nodes</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">for</span>(SVFIR::CSToArgsListMap::iterator it = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">getCallSiteArgsMap</a>().begin(), eit = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">getCallSiteArgsMap</a>().end(); it !=eit; ++it)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">for</span>(SVFIR::PAGNodeList::iterator pit = it-&gt;second.begin(), epit = it-&gt;second.end(); pit!=epit; ++pit)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = *pit;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(pagNode))</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a0fabca3c0f9bebe23f66a914dbb99e39">addActualParmVFGNode</a>(pagNode,it-&gt;first);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="comment">// initialize actual return nodes (callsite return)</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">for</span>(SVFIR::CSToRetMap::iterator it = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">getCallSiteRets</a>().begin(), eit = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">getCallSiteRets</a>().end(); it !=eit; ++it)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(it-&gt;second) == <span class="keyword">false</span> || <a class="code" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">hasDef</a>(it-&gt;second))</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a71022c8953e89e21b017936286f12251">addActualRetVFGNode</a>(it-&gt;second,it-&gt;first-&gt;getCallBlockNode());</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">// initialize formal parameter nodes</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">for</span>(SVFIR::FunToArgsListMap::iterator it = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c">getFunArgsMap</a>().begin(), eit = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c">getFunArgsMap</a>().end(); it !=eit; ++it)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = it-&gt;first;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">for</span>(SVFIR::PAGNodeList::iterator pit = it-&gt;second.begin(), epit = it-&gt;second.end(); pit!=epit; ++pit)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* param = *pit;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(param) == <span class="keyword">false</span> || <a class="code" href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50">hasBlackHoleConstObjAddrAsDef</a>(param))</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874">CallPESet</a> callPEs;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span> (param-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">PAGEdge::Call</a>))</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::const_iterator cit = param-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ab137b1def56c6539b5048c84dfd92c7b">getIncomingEdgesBegin</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">PAGEdge::Call</a>), ecit =</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; param-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ab6cfd409bdb445cc1a7e50ed958b7d25">getIncomingEdgesEnd</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">PAGEdge::Call</a>); cit != ecit; ++cit)</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = SVFUtil::cast&lt;CallPE&gt;(*cit);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(callPE-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()))</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; callPEs.insert(callPE);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <a class="code" href="classSVF_1_1VFG.html#afdb1560eecf692fb646d412dc760088d">addFormalParmVFGNode</a>(param,func,callPEs);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span> (func-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;getFunctionType()-&gt;isVarArg())</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* varParam = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">getVarargNode</a>(func));</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(varParam) == <span class="keyword">false</span> || <a class="code" href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50">hasBlackHoleConstObjAddrAsDef</a>(varParam))</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874">CallPESet</a> callPEs;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">if</span> (varParam-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">PAGEdge::Call</a>))</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">for</span>(PAGEdge::PAGEdgeSetTy::const_iterator cit = varParam-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ab137b1def56c6539b5048c84dfd92c7b">getIncomingEdgesBegin</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">PAGEdge::Call</a>),</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; ecit = varParam-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ab6cfd409bdb445cc1a7e50ed958b7d25">getIncomingEdgesEnd</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">PAGEdge::Call</a>); cit!=ecit; ++cit)</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = SVFUtil::cast&lt;CallPE&gt;(*cit);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(callPE-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()))</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; callPEs.insert(callPE);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="classSVF_1_1VFG.html#afdb1560eecf692fb646d412dc760088d">addFormalParmVFGNode</a>(varParam,func,callPEs);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="comment">// initialize formal return nodes (callee return)</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">for</span> (SVFIR::FunToRetMap::iterator it = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958">getFunRets</a>().begin(), eit = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958">getFunRets</a>().end(); it != eit; ++it)</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = it-&gt;first;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* uniqueFunRetNode = it-&gt;second;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="classSVF_1_1VFG.html#abf966182c28f0521dcd161aa299e453d">RetPESet</a> retPEs;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span> (uniqueFunRetNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a9b00f9b5f8ad2422162f4396e2d8fa42">hasOutgoingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">PAGEdge::Ret</a>))</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::const_iterator cit = uniqueFunRetNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#adb1f35a6f8db19c48cf7fd6c8f4a8ff3">getOutgoingEdgesBegin</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">PAGEdge::Ret</a>),</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; ecit = uniqueFunRetNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#adec782d2f9d055b0dbcb56f511e75c24">getOutgoingEdgesEnd</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">PAGEdge::Ret</a>);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; cit != ecit; ++cit)</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retPE = SVFUtil::cast&lt;RetPE&gt;(*cit);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(retPE-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()))</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; retPEs.insert(retPE);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(uniqueFunRetNode))</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="classSVF_1_1VFG.html#aae3bddc73e39d96fcc97d56ea3dec373">addFormalRetVFGNode</a>(uniqueFunRetNode, func, retPEs);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="comment">// initialize llvm phi nodes (phi of top level pointers)</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; phis = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">PAGEdge::Phi</a>);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = phis.begin(), eiter =</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; phis.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiPE.html">PhiPE</a>* edge = SVFUtil::cast&lt;PhiPE&gt;(*iter);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()))</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="classSVF_1_1VFG.html#aba0389fbcac1efab08339b53d149bf84">addIntraPHIVFGNode</a>(edge);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// initialize llvm binary nodes (binary operators)</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; binaryops = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">PAGEdge::BinaryOp</a>);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = binaryops.begin(), eiter =</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; binaryops.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPPE.html">BinaryOPPE</a>* edge = SVFUtil::cast&lt;BinaryOPPE&gt;(*iter);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()))</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="classSVF_1_1VFG.html#afb440e02353766c2a2541005dd29fb24">addBinaryOPVFGNode</a>(edge);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="comment">// initialize llvm unary nodes (unary operators)</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; unaryops = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">PAGEdge::UnaryOp</a>);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = unaryops.begin(), eiter =</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; unaryops.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPPE.html">UnaryOPPE</a>* edge = SVFUtil::cast&lt;UnaryOPPE&gt;(*iter);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(edge-&gt;<a class="code" href="classSVF_1_1UnaryOPPE.html#a80eb6a6681caf7407d7e16b36d7cb658">getRes</a>()))</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <a class="code" href="classSVF_1_1VFG.html#ae746db691e5c96dff1d590b109bffb7f">addUnaryOPVFGNode</a>(edge);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="comment">// initialize llvm unary nodes (unary operators)</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; brs = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">PAGEdge::Branch</a>);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = brs.begin(), eiter =</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; brs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>* edge = SVFUtil::cast&lt;BranchStmt&gt;(*iter);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(edge-&gt;<a class="code" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">getBranchInst</a>()))</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a18afc4baf33eb700e0510928016019f5">addBranchVFGNode</a>(edge);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="comment">// initialize llvm cmp nodes (comparision)</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; cmps = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">PAGEdge::Cmp</a>);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = cmps.begin(), eiter =</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; cmps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpPE.html">CmpPE</a>* edge = SVFUtil::cast&lt;CmpPE&gt;(*iter);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()))</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="classSVF_1_1VFG.html#ab4166804d4612c1cf194d1d8710c09a6">addCmpVFGNode</a>(edge);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;}</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;</div><div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2"> 540</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">VFG::addIntraDirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId)</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;{</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* srcNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(srcId);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dstNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(dstId);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96">checkIntraEdgeParents</a>(srcNode, dstNode);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">hasIntraVFGEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">VFGEdge::IntraDirectVF</a>))</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge-&gt;isDirectVFGEdge() &amp;&amp; <span class="stringliteral">&quot;this should be a direct value flow edge!&quot;</span>);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">if</span>(srcNode!=dstNode){</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="classSVF_1_1IntraDirSVFGEdge.html">IntraDirSVFGEdge</a>* directEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraDirSVFGEdge.html">IntraDirSVFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">addVFGEdge</a>(directEdge) ? directEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;}</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div><div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea"> 564</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">VFG::addCallEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;{</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* srcNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(srcId);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dstNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(dstId);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a">VFGEdge::CallDirVF</a>,csId))</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge-&gt;isCallDirectVFGEdge() &amp;&amp; <span class="stringliteral">&quot;this should be a direct value flow edge!&quot;</span>);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>* callEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>(srcNode,dstNode,csId);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">addVFGEdge</a>(callEdge) ? callEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;}</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;</div><div class="line"><a name="l00583"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2"> 583</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">VFG::addRetEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;{</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* srcNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(srcId);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dstNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(dstId);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191">VFGEdge::RetDirVF</a>,csId))</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge-&gt;isRetDirectVFGEdge() &amp;&amp; <span class="stringliteral">&quot;this should be a direct value flow edge!&quot;</span>);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>* retEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>(srcNode,dstNode,csId);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">addVFGEdge</a>(retEdge) ? retEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;}</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#adedaba0713164e10ce6273b2947535e0"> 603</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#adedaba0713164e10ce6273b2947535e0">VFG::connectDirectVFGEdges</a>()</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;{</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">iterator</a> it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast&lt;StmtVFGNode&gt;(node))</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;AddrVFGNode&gt;(stmtNode))</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">if</span> (stmtNode-&gt;getPAGSrcNode()-&gt;isConstantData() == <span class="keyword">false</span>)</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(stmtNode-&gt;getPAGSrcNode()), nodeId);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;StoreVFGNode&gt;(stmtNode) &amp;&amp; (stmtNode-&gt;getPAGDstNode()-&gt;isConstantData() == <span class="keyword">false</span>))</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(stmtNode-&gt;getPAGDstNode()), nodeId);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a>* phiNode = SVFUtil::dyn_cast&lt;PHIVFGNode&gt;(node))</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">for</span> (PHIVFGNode::OPVers::const_iterator it = phiNode-&gt;opVerBegin(), eit = phiNode-&gt;opVerEnd(); it != eit; it++)</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">if</span> (it-&gt;second-&gt;isConstantData() == <span class="keyword">false</span>)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(it-&gt;second), nodeId);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* binaryNode = SVFUtil::dyn_cast&lt;BinaryOPVFGNode&gt;(node))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; {</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">for</span> (BinaryOPVFGNode::OPVers::const_iterator it = binaryNode-&gt;opVerBegin(), eit = binaryNode-&gt;opVerEnd(); it != eit; it++)</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; {</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span> (it-&gt;second-&gt;isConstantData() == <span class="keyword">false</span>)</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(it-&gt;second), nodeId);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; }</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* unaryNode = SVFUtil::dyn_cast&lt;UnaryOPVFGNode&gt;(node))</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">for</span> (UnaryOPVFGNode::OPVers::const_iterator it = unaryNode-&gt;opVerBegin(), eit = unaryNode-&gt;opVerEnd(); it != eit; it++)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; {</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">if</span> (it-&gt;second-&gt;isConstantData() == <span class="keyword">false</span>)</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(it-&gt;second), nodeId);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; }</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; }</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* cmpNode = SVFUtil::dyn_cast&lt;CmpVFGNode&gt;(node))</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">for</span> (CmpVFGNode::OPVers::const_iterator it = cmpNode-&gt;opVerBegin(), eit = cmpNode-&gt;opVerEnd(); it != eit; it++)</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">if</span> (it-&gt;second-&gt;isConstantData() == <span class="keyword">false</span>)</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(it-&gt;second), nodeId);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* actualParm = SVFUtil::dyn_cast&lt;ActualParmVFGNode&gt;(node))</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (actualParm-&gt;getParam()-&gt;isConstantData() == <span class="keyword">false</span>)</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(actualParm-&gt;getParam()), nodeId);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* formalParm = SVFUtil::dyn_cast&lt;FormalParmVFGNode&gt;(node))</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">for</span>(CallPESet::const_iterator it = formalParm-&gt;callPEBegin(), eit = formalParm-&gt;callPEEnd();</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = (*it)-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>();</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* acutalParm = <a class="code" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">getActualParmVFGNode</a>((*it)-&gt;getSrcNode(),cs);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">addInterEdgeFromAPToFP</a>(acutalParm,formalParm,<a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(cs, formalParm-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* calleeRet = SVFUtil::dyn_cast&lt;FormalRetVFGNode&gt;(node))</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(calleeRet-&gt;getRet()), nodeId);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">for</span>(RetPESet::const_iterator it = calleeRet-&gt;retPEBegin(), eit = calleeRet-&gt;retPEEnd(); it!=eit; ++it)</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* callsiteRev = <a class="code" href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38">getActualRetVFGNode</a>((*it)-&gt;getDstNode());</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* retBlockNode = (*it)-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>();</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* callBlockNode = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(retBlockNode-&gt;getCallSite());</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <a class="code" href="classSVF_1_1VFG.html#abd05b599b383c759455aff99963b7b41">addInterEdgeFromFRToAR</a>(calleeRet,callsiteRev, <a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(callBlockNode, calleeRet-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; }</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a153d42a480ef1763ad59fd7258ac3ac5">Options::EnableThreadCallGraph</a>){</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; forks = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">PAGEdge::ThreadFork</a>);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = forks.begin(), eiter =</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; forks.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; {</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* forkedge = SVFUtil::cast&lt;TDForkPE&gt;(*iter);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* acutalParm = <a class="code" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">getActualParmVFGNode</a>(forkedge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(),forkedge-&gt;<a class="code" href="classSVF_1_1CallPE.html#a6a7a917cd6f1235b9453c9672f38c0ef">getCallSite</a>());</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* formalParm = <a class="code" href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6">getFormalParmVFGNode</a>(forkedge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>());</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">addInterEdgeFromAPToFP</a>(acutalParm,formalParm,<a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(forkedge-&gt;<a class="code" href="classSVF_1_1CallPE.html#a6a7a917cd6f1235b9453c9672f38c0ef">getCallSite</a>(), formalParm-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>&amp; joins = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">PAGEdge::ThreadJoin</a>);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = joins.begin(), eiter =</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; joins.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* joinedge = SVFUtil::cast&lt;TDJoinPE&gt;(*iter);</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> callsiteRev = <a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(joinedge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>());</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* calleeRet = <a class="code" href="classSVF_1_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8">getFormalRetVFGNode</a>(joinedge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>());</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(calleeRet-&gt;getId(),callsiteRev, <a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(joinedge-&gt;<a class="code" href="classSVF_1_1RetPE.html#a1495bfc171fa21980712f1d729a6b175">getCallSite</a>(), calleeRet-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; }</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;}</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;</div><div class="line"><a name="l00720"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f"> 720</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">VFG::hasIntraVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>)</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;{</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a> edge(src,dst,kind);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">return</span> outEdge;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; }</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><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;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;</div><div class="line"><a name="l00738"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba"> 738</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba">VFG::hasThreadVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>)</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;{</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a> edge(src,dst,kind);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">return</span> outEdge;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;}</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;</div><div class="line"><a name="l00755"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9"> 755</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">VFG::hasInterVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>,<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</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="classSVF_1_1VFGEdge.html">VFGEdge</a> edge(src,dst,<a class="code" href="classSVF_1_1VFGEdge.html#a30c07e8afb0853d4b46cfa722d912650">VFGEdge::makeEdgeFlagWithInvokeID</a>(kind,csId));</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; {</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">return</span> outEdge;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; }</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;}</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="l00773"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50"> 773</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">VFG::getIntraVFGEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>)</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;{</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">hasIntraVFGEdge</a>(const_cast&lt;VFGNode*&gt;(src),const_cast&lt;VFGNode*&gt;(dst),kind);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;}</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div><div class="line"><a name="l00782"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aee3d0c4ed32bde425f33281f248b7dd2"> 782</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aee3d0c4ed32bde425f33281f248b7dd2">VFG::dump</a>(<span class="keyword">const</span> std::string&amp; file, <span class="keywordtype">bool</span> simple)</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;{</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="classllvm_1_1GraphPrinter.html#a53b3809728c30389a594076097884b82">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>(), file, <span class="keyword">this</span>, simple);</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;}</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div><div class="line"><a name="l00790"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ae4350f68e960bfef87f44587628b1929"> 790</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ae4350f68e960bfef87f44587628b1929">VFG::view</a>()</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;{</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; llvm::ViewGraph(<span class="keyword">this</span>, <span class="stringliteral">&quot;Value Flow Graph&quot;</span>);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;}</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;</div><div class="line"><a name="l00796"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0c0a7c8f0bd27bc9e88ce54c0809b11b"> 796</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a0c0a7c8f0bd27bc9e88ce54c0809b11b">VFG::updateCallGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta)</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;{</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f">VFGEdgeSetTy</a> vfEdgesAtIndCallSite;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; PointerAnalysis::CallEdgeMap::const_iterator iter = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>().begin();</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; PointerAnalysis::CallEdgeMap::const_iterator eiter = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>().end();</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">for</span> (; iter != eiter; iter++)</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* newcs = iter-&gt;first;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(newcs-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#a285c517dfd7fee5467606663a0fdd035">isIndirectCall</a>() &amp;&amp; <span class="stringliteral">&quot;this is not an indirect call?&quot;</span>);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">PointerAnalysis::FunctionSet</a> &amp; functions = iter-&gt;second;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">for</span> (PointerAnalysis::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; {</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = *func_iter;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <a class="code" href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab">connectCallerAndCallee</a>(newcs, func, vfEdgesAtIndCallSite);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; }</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;}</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;</div><div class="line"><a name="l00818"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab"> 818</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab">VFG::connectCallerAndCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* callBlockNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f">VFGEdgeSetTy</a>&amp; edges)</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;{</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> * <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a> = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>();</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a> * icfg = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(callBlockNode, callee);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* retBlockNode = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a6d66c83cb1656d0f8ec8b8b65a9e9c41">getRetBlockNode</a>(callBlockNode-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>());</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="comment">// connect actual and formal param</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">if</span> (pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2a4185af81e7e10f0db74c39ee220101">hasCallSiteArgsMap</a>(callBlockNode) &amp;&amp; pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">hasFunArgsList</a>(callee))</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a64cee36354a14aae6b64f8b9d3edbd96">SVFIR::PAGNodeList</a>&amp; csArgList = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a432e99757dfe844fd8450f2ab4ff4093">getCallSiteArgsList</a>(callBlockNode);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a64cee36354a14aae6b64f8b9d3edbd96">SVFIR::PAGNodeList</a>&amp; funArgList = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a1cac93c15fcbf15798c4fe374380f8ae">getFunArgsList</a>(callee);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; SVFIR::PAGNodeList::const_iterator csArgIt = csArgList.begin(), csArgEit = csArgList.end();</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; SVFIR::PAGNodeList::const_iterator funArgIt = funArgList.begin(), funArgEit = funArgList.end();</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">for</span> (; funArgIt != funArgEit &amp;&amp; csArgIt != csArgEit; funArgIt++, csArgIt++)</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *fun_arg = *funArgIt;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">if</span> (fun_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <a class="code" href="classSVF_1_1VFG.html#acbc1f5ae3b9016b1ce97314a2b8b54c0">connectAParamAndFParam</a>(cs_arg, fun_arg, callBlockNode, csId, edges);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; }</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(funArgIt == funArgEit &amp;&amp; <span class="stringliteral">&quot;function has more arguments than call site&quot;</span>);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">if</span> (callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;isVarArg())</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; {</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> varFunArg = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">getVarargNode</a>(callee);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* varFunArgNode = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(varFunArg);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span> (varFunArgNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">for</span> (; csArgIt != csArgEit; csArgIt++)</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; {</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">if</span> (cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <a class="code" href="classSVF_1_1VFG.html#acbc1f5ae3b9016b1ce97314a2b8b54c0">connectAParamAndFParam</a>(cs_arg, varFunArgNode, callBlockNode, csId, edges);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; }</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; }</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="comment">// connect actual return and formal return</span></div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">if</span> (pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046">funHasRet</a>(callee) &amp;&amp; pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a170bef1e9a07ce0449faf66706ae6e61">callsiteHasRet</a>(retBlockNode))</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; {</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_return = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a70aa4d730ef1d38ef9c46f5014465bdd">getCallSiteRet</a>(retBlockNode);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_return = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">getFunRet</a>(callee);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span> (cs_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; fun_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <a class="code" href="classSVF_1_1VFG.html#ab4e8ab307ad6beb46812a60ebd31ae3b">connectFRetAndARet</a>(fun_return, cs_return, csId, edges);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;}</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;</div><div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a1fff5a365e5aa2d99f07f7f64cc35fac"> 868</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a1fff5a365e5aa2d99f07f7f64cc35fac">VFG::getLHSTopLevPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a>* addr = SVFUtil::dyn_cast&lt;AddrVFGNode&gt;(node))</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">return</span> addr-&gt;getPAGDstNode();</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a>* copy = SVFUtil::dyn_cast&lt;CopyVFGNode&gt;(node))</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">return</span> copy-&gt;getPAGDstNode();</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepVFGNode.html">GepVFGNode</a>* gep = SVFUtil::dyn_cast&lt;GepVFGNode&gt;(node))</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">return</span> gep-&gt;getPAGDstNode();</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadVFGNode</a>* load = SVFUtil::dyn_cast&lt;LoadVFGNode&gt;(node))</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordflow">return</span> load-&gt;getPAGDstNode();</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a>* phi = SVFUtil::dyn_cast&lt;PHIVFGNode&gt;(node))</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordflow">return</span> phi-&gt;getRes();</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* cmp = SVFUtil::dyn_cast&lt;CmpVFGNode&gt;(node))</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordflow">return</span> cmp-&gt;getRes();</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* bop = SVFUtil::dyn_cast&lt;BinaryOPVFGNode&gt;(node))</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">return</span> bop-&gt;getRes();</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* uop = SVFUtil::dyn_cast&lt;UnaryOPVFGNode&gt;(node))</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">return</span> uop-&gt;getRes();</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* ap = SVFUtil::dyn_cast&lt;ActualParmVFGNode&gt;(node))</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="keywordflow">return</span> ap-&gt;getParam();</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>*fp = SVFUtil::dyn_cast&lt;FormalParmVFGNode&gt;(node))</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">return</span> fp-&gt;getParam();</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* ar = SVFUtil::dyn_cast&lt;ActualRetVFGNode&gt;(node))</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">return</span> ar-&gt;getRev();</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* fr = SVFUtil::dyn_cast&lt;FormalRetVFGNode&gt;(node))</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">return</span> fr-&gt;getRet();</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a>* nullVFG = SVFUtil::dyn_cast&lt;NullPtrVFGNode&gt;(node))</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">return</span> nullVFG-&gt;getPAGNode();</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unexpected node kind!&quot;</span>);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;}</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;</div><div class="line"><a name="l00905"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a8994194bca2edfd9528880390de795ab"> 905</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1VFG.html#a8994194bca2edfd9528880390de795ab">VFG::isFunEntryVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* fp = SVFUtil::dyn_cast&lt;FormalParmVFGNode&gt;(node))</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">return</span> fp-&gt;getFun();</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; }</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHIVFGNode</a>* phi = SVFUtil::dyn_cast&lt;InterPHIVFGNode&gt;(node))</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; {</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">if</span>(phi-&gt;isFormalParmPHI())</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">return</span> phi-&gt;getFun();</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; }</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;}</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;</div><div class="line"><a name="l00920"></a><span class="lineno"><a class="line" href="classSVF_1_1StmtVFGNode.html#ab51f462a26bc03cd5e2379be98a4dd3b"> 920</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1StmtVFGNode.html#ab51f462a26bc03cd5e2379be98a4dd3b">StmtVFGNode::getValue</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">return</span> getPAGEdge()-&gt;getValue();</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;}</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;</div><div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpVFGNode.html#a166ac2df82ebfcb77d50b71ce573e1eb"> 924</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1CmpVFGNode.html#a166ac2df82ebfcb77d50b71ce573e1eb">CmpVFGNode::getValue</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">return</span> getRes()-&gt;getValue();</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;}</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;</div><div class="line"><a name="l00928"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPVFGNode.html#ad4c45bbfd044502106c41ba70f568463"> 928</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1BinaryOPVFGNode.html#ad4c45bbfd044502106c41ba70f568463">BinaryOPVFGNode::getValue</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">return</span> getRes()-&gt;getValue();</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;}</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160;</div><div class="line"><a name="l00932"></a><span class="lineno"><a class="line" href="classSVF_1_1PHIVFGNode.html#a188a4d3ae95fe01dc59784d076f28aef"> 932</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1PHIVFGNode.html#a188a4d3ae95fe01dc59784d076f28aef">PHIVFGNode::getValue</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">return</span> getRes()-&gt;getValue();</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160;}</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;</div><div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="classSVF_1_1ArgumentVFGNode.html#aaf6a78630b0365d50dd7b4394215d3a1"> 936</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1ArgumentVFGNode.html#aaf6a78630b0365d50dd7b4394215d3a1">ArgumentVFGNode::getValue</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">return</span> param-&gt;getValue();</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;}</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacellvm.html">llvm</a></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;{</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00946"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html"> 946</a></span>&#160;<span class="keyword">struct </span>DOTGraphTraits&lt;<a class="code" href="classSVF_1_1VFG.html">VFG</a>*&gt; : <span class="keyword">public</span> DOTGraphTraits&lt;SVFIR*&gt;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;{</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;</div><div class="line"><a name="l00949"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#afd7d2c80916a68b53814e6de593bf520"> 949</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#afd7d2c80916a68b53814e6de593bf520">NodeType</a>;</div><div class="line"><a name="l00950"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a0ae94170a4f95bfc7e89d0149ff67882"> 950</a></span>&#160; <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a0ae94170a4f95bfc7e89d0149ff67882">DOTGraphTraits</a>(<span class="keywordtype">bool</span> isSimple = <span class="keyword">false</span>) :</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; DOTGraphTraits&lt;<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>*&gt;(isSimple)</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; {</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; }</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;</div><div class="line"><a name="l00956"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#aaedec44d41a6e36c9e5db804e4a005dd"> 956</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#aaedec44d41a6e36c9e5db804e4a005dd">getGraphName</a>(<a class="code" href="classSVF_1_1VFG.html">VFG</a>*)</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;VFG&quot;</span>;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; }</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160;</div><div class="line"><a name="l00961"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a6470ed90c2a601b01715d02cffd90918"> 961</a></span>&#160; std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a6470ed90c2a601b01715d02cffd90918">getNodeLabel</a>(NodeType *node, <a class="code" href="classSVF_1_1VFG.html">VFG</a> *graph)</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; {</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">if</span> (isSimple())</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">return</span> getSimpleNodeLabel(node, graph);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">return</span> getCompleteNodeLabel(node, graph);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; }</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;</div><div class="line"><a name="l00970"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a0159404d5c5a7816a4b679c0f35a546e"> 970</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a0159404d5c5a7816a4b679c0f35a546e">getSimpleNodeLabel</a>(NodeType *node, <a class="code" href="classSVF_1_1VFG.html">VFG</a>*)</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; {</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; std::string str;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast&lt;StmtVFGNode&gt;(node))</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; {</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; rawstr &lt;&lt; stmtNode-&gt;toString();</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; }</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a>* tphi = SVFUtil::dyn_cast&lt;PHIVFGNode&gt;(node))</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; {</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; rawstr &lt;&lt; tphi-&gt;toString();</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; }</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* fp = SVFUtil::dyn_cast&lt;FormalParmVFGNode&gt;(node))</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; {</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; rawstr &lt;&lt; fp-&gt;toString();</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; }</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* ap = SVFUtil::dyn_cast&lt;ActualParmVFGNode&gt;(node))</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; {</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; rawstr &lt;&lt; ap-&gt;toString();</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; }</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* ar = SVFUtil::dyn_cast&lt;ActualRetVFGNode&gt;(node))</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; rawstr &lt;&lt; ar-&gt;toString();</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* fr = SVFUtil::dyn_cast&lt;FormalRetVFGNode&gt;(node))</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; {</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; rawstr &lt;&lt; fr-&gt;toString();</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; }</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;NullPtrVFGNode&gt;(node))</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; {</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;NullPtr&quot;</span>;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; }</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* bop = SVFUtil::dyn_cast&lt;BinaryOPVFGNode&gt;(node))</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; {</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; rawstr &lt;&lt; bop-&gt;toString();</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; }</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* uop = SVFUtil::dyn_cast&lt;UnaryOPVFGNode&gt;(node))</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; {</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; rawstr &lt;&lt; uop-&gt;toString();</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; }</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* cmp = SVFUtil::dyn_cast&lt;CmpVFGNode&gt;(node))</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; {</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; rawstr &lt;&lt; cmp-&gt;toString();;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; }</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else kinds of nodes do we have??&quot;</span>);</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; }</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;</div><div class="line"><a name="l01021"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a6ced6b5b50d920fb47c4334693fea86c"> 1021</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a6ced6b5b50d920fb47c4334693fea86c">getCompleteNodeLabel</a>(NodeType *node, <a class="code" href="classSVF_1_1VFG.html">VFG</a>*)</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; {</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; std::string str;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast&lt;StmtVFGNode&gt;(node))</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; {</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; rawstr &lt;&lt; stmtNode-&gt;toString();</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; }</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* bop = SVFUtil::dyn_cast&lt;BinaryOPVFGNode&gt;(node))</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; {</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; rawstr &lt;&lt; bop-&gt;toString();</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; }</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* uop = SVFUtil::dyn_cast&lt;UnaryOPVFGNode&gt;(node))</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; {</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; rawstr &lt;&lt; uop-&gt;toString();</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; }</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* cmp = SVFUtil::dyn_cast&lt;CmpVFGNode&gt;(node))</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; {</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; rawstr &lt;&lt; cmp-&gt;toString();</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; }</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a>* phi = SVFUtil::dyn_cast&lt;PHIVFGNode&gt;(node))</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; {</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; rawstr &lt;&lt; phi-&gt;toString();</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; }</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* fp = SVFUtil::dyn_cast&lt;FormalParmVFGNode&gt;(node))</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; {</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; rawstr &lt;&lt; fp-&gt;toString();</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; }</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* ap = SVFUtil::dyn_cast&lt;ActualParmVFGNode&gt;(node))</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; {</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; rawstr &lt;&lt; ap-&gt;toString();</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; }</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a>* nptr = SVFUtil::dyn_cast&lt;NullPtrVFGNode&gt;(node))</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; {</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; rawstr &lt;&lt; nptr-&gt;toString();</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; }</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* ar = SVFUtil::dyn_cast&lt;ActualRetVFGNode&gt;(node))</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; {</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; rawstr &lt;&lt; ar-&gt;toString();</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* fr = SVFUtil::dyn_cast&lt;FormalRetVFGNode&gt;(node))</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; {</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; rawstr &lt;&lt; fr-&gt;toString();</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; }</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MRSVFGNode.html">MRSVFGNode</a>* mr = SVFUtil::dyn_cast&lt;MRSVFGNode&gt;(node))</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; {</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; rawstr &lt;&lt; mr-&gt;toString();</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; }</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else kinds of nodes do we have??&quot;</span>);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; }</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;</div><div class="line"><a name="l01076"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a57d4a186a0319b73d69752564bf25b2a"> 1076</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a57d4a186a0319b73d69752564bf25b2a">getNodeAttributes</a>(NodeType *node, <a class="code" href="classSVF_1_1VFG.html">VFG</a>*)</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; {</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; std::string str;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast&lt;StmtVFGNode&gt;(node))</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; {</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = stmtNode-&gt;getPAGEdge();</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AddrPE&gt;(edge))</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; {</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=green&quot;</span>;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; }</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;CopyPE&gt;(edge))</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; {</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=black&quot;</span>;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; }</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPE&gt;(edge))</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=black,style=dotted&quot;</span>;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; }</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepPE&gt;(edge))</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; {</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=purple&quot;</span>;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; }</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StorePE&gt;(edge))</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=blue&quot;</span>;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; }</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadPE&gt;(edge))</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; {</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=red&quot;</span>;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; {</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 &amp;&amp; <span class="stringliteral">&quot;No such kind edge!!&quot;</span>);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; }</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; }</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;CmpVFGNode&gt;(node))</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; {</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; }</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;BinaryOPVFGNode&gt;(node))</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; {</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; }</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UnaryOPVFGNode&gt;(node))</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; {</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; }</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;PHIVFGNode&gt;(node))</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; {</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=black&quot;</span>;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; }</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;NullPtrVFGNode&gt;(node))</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; {</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; }</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FormalParmVFGNode&gt;(node))</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; {</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=yellow,penwidth=2&quot;</span>;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; }</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ActualParmVFGNode&gt;(node))</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=yellow,penwidth=2&quot;</span>;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; }</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualRetVFGNode&gt;(node))</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; {</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=yellow,penwidth=2&quot;</span>;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; }</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;FormalRetVFGNode&gt;(node))</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; {</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=yellow,penwidth=2&quot;</span>;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; }</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;MRSVFGNode&gt;(node))</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; {</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=orange,penwidth=2&quot;</span>;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; }</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such kind of node!!&quot;</span>);</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; }</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l01163"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a646a1023dab5169a73c8ea54e860c78b"> 1163</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a646a1023dab5169a73c8ea54e860c78b">getEdgeAttributes</a>(NodeType*, EdgeIter EI, <a class="code" href="classSVF_1_1VFG.html">VFG</a>*)</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; {</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;DirectSVFGEdge&gt;(edge))</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; {</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallDirSVFGEdge&gt;(edge))</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid,color=red&quot;</span>;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetDirSVFGEdge&gt;(edge))</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid,color=blue&quot;</span>;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid&quot;</span>;</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; }</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge))</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; {</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallIndSVFGEdge&gt;(edge))</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=dashed,color=red&quot;</span>;</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetIndSVFGEdge&gt;(edge))</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=dashed,color=blue&quot;</span>;</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=dashed&quot;</span>;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; }</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; {</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else edge we have?&quot;</span>);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; }</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; }</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l01193"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#af794115d33a8ea6f7f2e2c7ac5dd4c80"> 1193</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#af794115d33a8ea6f7f2e2c7ac5dd4c80">getEdgeSourceLabel</a>(NodeType*, EdgeIter EI)</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; {</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; std::string str;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>* dirCall = SVFUtil::dyn_cast&lt;CallDirSVFGEdge&gt;(edge))</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; rawstr &lt;&lt; dirCall-&gt;getCallSiteId();</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>* dirRet = SVFUtil::dyn_cast&lt;RetDirSVFGEdge&gt;(edge))</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; rawstr &lt;&lt; dirRet-&gt;getCallSiteId();</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; }</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;};</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;} <span class="comment">// End namespace llvm</span></div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
69
+ <a href="VFG_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- VFG.cpp -- Sparse value-flow graph-----------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2018&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * VFG.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Sep 11, 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="SVFGNode_8h.html">Graphs/SVFGNode.h</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="VFG_8h.html">Graphs/VFG.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFModule_8h.html">Util/SVFModule.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-FE/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1VFGNode.html#a0342b5a6f270f4ff0e8e2a9b0082c6c5"> 40</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1VFGNode.html#a0342b5a6f270f4ff0e8e2a9b0082c6c5">VFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; std::string str;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;VFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1StmtVFGNode.html#aa5011ff12de490146ab106e90d0b6ad8"> 47</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1StmtVFGNode.html#aa5011ff12de490146ab106e90d0b6ad8">StmtVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; std::string str;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;StmtVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; rawstr &lt;&lt; getPAGEdge()-&gt;toString();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadVFGNode.html#aad3591f38e30c5168d4accb76ac8dc04"> 55</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1LoadVFGNode.html#aad3591f38e30c5168d4accb76ac8dc04">LoadVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; std::string str;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;LoadVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; rawstr &lt;&lt; getPAGEdge()-&gt;toString();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreVFGNode.html#aba7e8b8329caf412a55f5880f68414fe"> 64</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1StoreVFGNode.html#aba7e8b8329caf412a55f5880f68414fe">StoreVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::string str;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;StoreVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; rawstr &lt;&lt; getPAGEdge()-&gt;toString();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyVFGNode.html#ad86bbc5ec4a9ea226364a84e04724b37"> 72</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CopyVFGNode.html#ad86bbc5ec4a9ea226364a84e04724b37">CopyVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; std::string str;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CopyVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; rawstr &lt;&lt; getPAGEdge()-&gt;toString();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpVFGNode.html#aa08c4475c47beb0d026acab859d68117"> 80</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CmpVFGNode.html#aa08c4475c47beb0d026acab859d68117">CmpVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; std::string str;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CmpVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGEdge: [&quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; = cmp(&quot;</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">for</span>(CmpVFGNode::OPVers::const_iterator it = opVerBegin(), eit = opVerEnd();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; it != eit; it++)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; rawstr &lt;&lt; it-&gt;second-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;)]\n&quot;</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span>(res-&gt;hasValue()){</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPVFGNode.html#aa743cf19c5dc91dbb0c7b8981fecc6c4"> 95</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1BinaryOPVFGNode.html#aa743cf19c5dc91dbb0c7b8981fecc6c4">BinaryOPVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; std::string str;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BinaryOPVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGEdge: [&quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; = Binary(&quot;</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span>(BinaryOPVFGNode::OPVers::const_iterator it = opVerBegin(), eit = opVerEnd();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; it != eit; it++)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; rawstr &lt;&lt; it-&gt;second-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;)]\t&quot;</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span>(res-&gt;hasValue()){</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;}</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPVFGNode.html#ab748bb83004550944c6abca7150aec14"> 110</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1UnaryOPVFGNode.html#ab748bb83004550944c6abca7150aec14">UnaryOPVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; std::string str;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;UnaryOPVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGEdge: [&quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; = Unary(&quot;</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span>(UnaryOPVFGNode::OPVers::const_iterator it = opVerBegin(), eit = opVerEnd();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; it != eit; it++)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; rawstr &lt;&lt; it-&gt;second-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;)]\t&quot;</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(res-&gt;hasValue()){</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchVFGNode.html#a131fe96308f67b307ea08e645b019e13"> 125</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1BranchVFGNode.html#a131fe96308f67b307ea08e645b019e13">BranchVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; std::string str;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BranchVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGEdge: [&quot;</span> &lt;&lt; brstmt-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1GepVFGNode.html#ad27376633c939952878d5d73621ec638"> 134</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1GepVFGNode.html#ad27376633c939952878d5d73621ec638">GepVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; std::string str;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;GepVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; rawstr &lt;&lt; getPAGEdge()-&gt;toString();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;}</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1PHIVFGNode.html#a7fb9cbed3718922cd81b18d069c79aea"> 143</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PHIVFGNode.html#a7fb9cbed3718922cd81b18d069c79aea">PHIVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; std::string str;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PHIVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGNode: [&quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; = PHI(&quot;</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span>(PHIVFGNode::OPVers::const_iterator it = opVerBegin(), eit = opVerEnd();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; it != eit; it++)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; rawstr &lt;&lt; it-&gt;second-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;)]\t&quot;</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span>(res-&gt;hasValue()){</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraPHIVFGNode.html#a145413d87e9174b5eb70b871b9dfa13e"> 159</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1IntraPHIVFGNode.html#a145413d87e9174b5eb70b871b9dfa13e">IntraPHIVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; std::string str;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;IntraPHIVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGNode: [&quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; = PHI(&quot;</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span>(PHIVFGNode::OPVers::const_iterator it = opVerBegin(), eit = opVerEnd();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; it != eit; it++)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; rawstr &lt;&lt; it-&gt;second-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;)]\t&quot;</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">if</span>(res-&gt;hasValue()){</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrVFGNode.html#ac26fbce400355f43fdc22ad88a8d9067"> 175</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1AddrVFGNode.html#ac26fbce400355f43fdc22ad88a8d9067">AddrVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; std::string str;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;AddrVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; rawstr &lt;&lt; getPAGEdge()-&gt;toString();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;}</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1ArgumentVFGNode.html#a3c10cd63e18f79ccc66f4687d05cb8c5"> 184</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ArgumentVFGNode.html#a3c10cd63e18f79ccc66f4687d05cb8c5">ArgumentVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; std::string str;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ArgumentVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; rawstr &lt;&lt; param-&gt;toString();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;}</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;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1ActualParmVFGNode.html#a60d6ce4c4fe2cf54be45e58b2b93c9f6"> 193</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ActualParmVFGNode.html#a60d6ce4c4fe2cf54be45e58b2b93c9f6">ActualParmVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; std::string str;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ActualParmVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CS[&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(getCallSite()-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; rawstr &lt;&lt; param-&gt;toString();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;}</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1FormalParmVFGNode.html#ac4e695d6ee7bb7c5ed4e273567e7c1cc"> 203</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1FormalParmVFGNode.html#ac4e695d6ee7bb7c5ed4e273567e7c1cc">FormalParmVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; std::string str;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;FormalParmVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Fun[&quot;</span> &lt;&lt; getFun()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; rawstr &lt;&lt; param-&gt;toString();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1ActualRetVFGNode.html#a4d1e7df32604becd2e2b60fe2e5cfbfa"> 212</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ActualRetVFGNode.html#a4d1e7df32604becd2e2b60fe2e5cfbfa">ActualRetVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; std::string str;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ActualRetVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CS[&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(getCallSite()-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; rawstr &lt;&lt; param-&gt;toString();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;}</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1FormalRetVFGNode.html#ab1ae2339d7408d9156cdfe5ab4559e66"> 222</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1FormalRetVFGNode.html#ab1ae2339d7408d9156cdfe5ab4559e66">FormalRetVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; std::string str;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;FormalRetVFGNode ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Fun[&quot;</span> &lt;&lt; getFun()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; rawstr &lt;&lt; param-&gt;toString();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</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"><a class="line" href="classSVF_1_1InterPHIVFGNode.html#aff35aebdc8d955df160e51da7b666a7e"> 232</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1InterPHIVFGNode.html#aff35aebdc8d955df160e51da7b666a7e">InterPHIVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; std::string str;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span>(isFormalParmPHI())</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;FormalParmPHI ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; PAGNode ID: &quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ActualRetPHI ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; PAGNode ID: &quot;</span> &lt;&lt; res-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(res-&gt;getValue());</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</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"><a class="line" href="classSVF_1_1NullPtrVFGNode.html#a75c8b89a34bfd89a4af2c699cdb626b9"> 242</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1NullPtrVFGNode.html#a75c8b89a34bfd89a4af2c699cdb626b9">NullPtrVFGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; std::string str;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;NullPtrVFGNode ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; PAGNode ID: &quot;</span> &lt;&lt; node-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1VFGEdge.html#a8f4bec008af7cd1a89870715eaa91a7b"> 251</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1VFGEdge.html#a8f4bec008af7cd1a89870715eaa91a7b">VFGEdge::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; std::string str;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;VFGEdge: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="classSVF_1_1DirectSVFGEdge.html#aa8d70214eb0242c3f2baaa506c12852c"> 258</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1DirectSVFGEdge.html#aa8d70214eb0242c3f2baaa506c12852c">DirectSVFGEdge::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; std::string str;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;DirectVFGEdge: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;}</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"><a class="line" href="classSVF_1_1IntraDirSVFGEdge.html#a1c8dc17717409aa42749181aafd155aa"> 265</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1IntraDirSVFGEdge.html#a1c8dc17717409aa42749181aafd155aa">IntraDirSVFGEdge::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; std::string str;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;IntraDirSVFGEdge: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;}</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1CallDirSVFGEdge.html#af07decd05375f56baa4a1c4fe70bc3f1"> 272</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CallDirSVFGEdge.html#af07decd05375f56baa4a1c4fe70bc3f1">CallDirSVFGEdge::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; std::string str;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CallDirSVFGEdge CallSite ID: &quot;</span> &lt;&lt; getCallSiteId() &lt;&lt; <span class="stringliteral">&quot; [&quot;</span>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; rawstr &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;}</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1RetDirSVFGEdge.html#a6282c2619d843cf90575886a0ef81edf"> 280</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1RetDirSVFGEdge.html#a6282c2619d843cf90575886a0ef81edf">RetDirSVFGEdge::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; std::string str;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;RetDirSVFGEdge CallSite ID: &quot;</span> &lt;&lt; getCallSiteId() &lt;&lt; <span class="stringliteral">&quot; [&quot;</span>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; rawstr &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;}</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1FormalRetVFGNode.html#a732fe0036d307a1dace2631219de38ef"> 290</a></span>&#160;<a class="code" href="classSVF_1_1FormalRetVFGNode.html#a0155a71f08dfb1fb43f054084b2380c6">FormalRetVFGNode::FormalRetVFGNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* n, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f) :</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="classSVF_1_1ArgumentVFGNode.html">ArgumentVFGNode</a>(id, n, FRet), fun(f)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;{</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;}</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1PHIVFGNode.html#add1ed5dfc7fbb095e2bdb7ff1e2658ef"> 295</a></span>&#160;<a class="code" href="classSVF_1_1PHIVFGNode.html#add1ed5dfc7fbb095e2bdb7ff1e2658ef">PHIVFGNode::PHIVFGNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* r,<a class="code" href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75">VFGNodeK</a> k): <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>(id, k), res(r)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;{</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;}</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc"> 308</a></span>&#160;<a class="code" href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">VFG::VFG</a>(<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* cg, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> k): totalVFGNode(0), callgraph(cg), pag(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>::getPAG()), kind(k)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;{</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tCreate VFG Top Level Node\n&quot;</span>));</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3544cc0380964f238c964a0e7b417862">addVFGNodes</a>();</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tCreate SVFG Direct Edge\n&quot;</span>));</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="classSVF_1_1VFG.html#adedaba0713164e10ce6273b2947535e0">connectDirectVFGEdges</a>();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;}</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69"> 321</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69">VFG::destroy</a>()</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;{</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a3544cc0380964f238c964a0e7b417862"> 330</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a3544cc0380964f238c964a0e7b417862">VFG::addVFGNodes</a>()</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;{</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">// initialize dummy definition null pointers in order to uniform the construction</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="comment">// to be noted for black hole pointer it has already has address edge connected,</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="comment">// and its definition will be set when processing addr SVFIR edge.</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a59bc855eb8591d88e0898e14d4f4b607">addNullPtrVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>()));</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="comment">// initialize address nodes</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; addrs = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">PAGEdge::Addr</a>);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = addrs.begin(), eiter =</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; addrs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="classSVF_1_1VFG.html#aca2b1493bd712bdc6618de995a81e5af">addAddrVFGNode</a>(SVFUtil::cast&lt;AddrStmt&gt;(*iter));</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// initialize copy nodes</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; copys = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">PAGEdge::Copy</a>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = copys.begin(), eiter =</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; copys.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>* edge = SVFUtil::cast&lt;CopyStmt&gt;(*iter);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1VFG.html#a8ddf15d89a1b11a7f7720b671f4f0295">isPhiCopyEdge</a>(edge) &amp;&amp; <span class="stringliteral">&quot;Copy edges can not be a PhiNode (or from PhiNode)&quot;</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a49d35213a281859ca64398760c485a85">addCopyVFGNode</a>(edge);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="comment">// initialize gep nodes</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; ngeps = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ac2089ffeab3f27354b2094758c805746">PAGEdge::NormalGep</a>);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; ngeps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a4fb321fb0ff2a06c1065506552b862aa">addGepVFGNode</a>(SVFUtil::cast&lt;NormalGepStmt&gt;(*iter));</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; vgeps = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3a8902fc2aa68428e271012861a2a2">PAGEdge::VariantGep</a>);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = vgeps.begin(), eiter =</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; vgeps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a4fb321fb0ff2a06c1065506552b862aa">addGepVFGNode</a>(SVFUtil::cast&lt;VariantGepStmt&gt;(*iter));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="comment">// initialize load nodes</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; loads = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">PAGEdge::Load</a>);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = loads.begin(), eiter =</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; loads.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a373e7066630719ffb7c62681f2c2a74e">addLoadVFGNode</a>(SVFUtil::cast&lt;LoadStmt&gt;(*iter));</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="comment">// initialize store nodes</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">PAGEdge::Store</a>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; stores.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a13f7caf44741db3b0e8a44b13d8931f5">addStoreVFGNode</a>(SVFUtil::cast&lt;StoreStmt&gt;(*iter));</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; forks = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">PAGEdge::ThreadFork</a>);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = forks.begin(), eiter =</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; forks.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* forkedge = SVFUtil::cast&lt;TDForkPE&gt;(*iter);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a0fabca3c0f9bebe23f66a914dbb99e39">addActualParmVFGNode</a>(forkedge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(),forkedge-&gt;<a class="code" href="classSVF_1_1CallPE.html#a6a7a917cd6f1235b9453c9672f38c0ef">getCallSite</a>());</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="comment">// initialize actual parameter nodes</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">for</span>(SVFIR::CSToArgsListMap::iterator it = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">getCallSiteArgsMap</a>().begin(), eit = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">getCallSiteArgsMap</a>().end(); it !=eit; ++it)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">for</span>(SVFIR::SVFVarList::iterator pit = it-&gt;second.begin(), epit = it-&gt;second.end(); pit!=epit; ++pit)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = *pit;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(pagNode))</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a0fabca3c0f9bebe23f66a914dbb99e39">addActualParmVFGNode</a>(pagNode,it-&gt;first);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="comment">// initialize actual return nodes (callsite return)</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">for</span>(SVFIR::CSToRetMap::iterator it = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">getCallSiteRets</a>().begin(), eit = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">getCallSiteRets</a>().end(); it !=eit; ++it)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(it-&gt;second) == <span class="keyword">false</span> || <a class="code" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">hasDef</a>(it-&gt;second))</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a71022c8953e89e21b017936286f12251">addActualRetVFGNode</a>(it-&gt;second,it-&gt;first-&gt;getCallBlockNode());</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">// initialize formal parameter nodes</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">for</span>(SVFIR::FunToArgsListMap::iterator it = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c">getFunArgsMap</a>().begin(), eit = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c">getFunArgsMap</a>().end(); it !=eit; ++it)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = it-&gt;first;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">for</span>(SVFIR::SVFVarList::iterator pit = it-&gt;second.begin(), epit = it-&gt;second.end(); pit!=epit; ++pit)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* param = *pit;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(param) == <span class="keyword">false</span> || <a class="code" href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50">hasBlackHoleConstObjAddrAsDef</a>(param))</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874">CallPESet</a> callPEs;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span> (param-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">PAGEdge::Call</a>))</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::const_iterator cit = param-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a893890649ae7d8e275dd823e941aa39b">getIncomingEdgesBegin</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">PAGEdge::Call</a>), ecit =</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; param-&gt;<a class="code" href="classSVF_1_1SVFVar.html#af1cf24ab50e0d86c9d0f9bd5744b4c10">getIncomingEdgesEnd</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">PAGEdge::Call</a>); cit != ecit; ++cit)</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = SVFUtil::cast&lt;CallPE&gt;(*cit);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(callPE-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()))</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; callPEs.insert(callPE);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <a class="code" href="classSVF_1_1VFG.html#afdb1560eecf692fb646d412dc760088d">addFormalParmVFGNode</a>(param,func,callPEs);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span> (func-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;getFunctionType()-&gt;isVarArg())</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* varParam = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">getVarargNode</a>(func));</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(varParam) == <span class="keyword">false</span> || <a class="code" href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50">hasBlackHoleConstObjAddrAsDef</a>(varParam))</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874">CallPESet</a> callPEs;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">if</span> (varParam-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">PAGEdge::Call</a>))</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">for</span>(PAGEdge::SVFStmtSetTy::const_iterator cit = varParam-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a893890649ae7d8e275dd823e941aa39b">getIncomingEdgesBegin</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">PAGEdge::Call</a>),</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; ecit = varParam-&gt;<a class="code" href="classSVF_1_1SVFVar.html#af1cf24ab50e0d86c9d0f9bd5744b4c10">getIncomingEdgesEnd</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">PAGEdge::Call</a>); cit!=ecit; ++cit)</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = SVFUtil::cast&lt;CallPE&gt;(*cit);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(callPE-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()))</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; callPEs.insert(callPE);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="classSVF_1_1VFG.html#afdb1560eecf692fb646d412dc760088d">addFormalParmVFGNode</a>(varParam,func,callPEs);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="comment">// initialize formal return nodes (callee return)</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">for</span> (SVFIR::FunToRetMap::iterator it = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958">getFunRets</a>().begin(), eit = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958">getFunRets</a>().end(); it != eit; ++it)</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = it-&gt;first;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* uniqueFunRetNode = it-&gt;second;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="classSVF_1_1VFG.html#abf966182c28f0521dcd161aa299e453d">RetPESet</a> retPEs;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span> (uniqueFunRetNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a9b00f9b5f8ad2422162f4396e2d8fa42">hasOutgoingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">PAGEdge::Ret</a>))</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::const_iterator cit = uniqueFunRetNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a9e40eafe55a2c1448b830b56ae72e17f">getOutgoingEdgesBegin</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">PAGEdge::Ret</a>),</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; ecit = uniqueFunRetNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#aa5176fce9746bc585d43ebb4c8c824e5">getOutgoingEdgesEnd</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">PAGEdge::Ret</a>);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; cit != ecit; ++cit)</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retPE = SVFUtil::cast&lt;RetPE&gt;(*cit);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(retPE-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()))</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; retPEs.insert(retPE);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(uniqueFunRetNode))</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="classSVF_1_1VFG.html#aae3bddc73e39d96fcc97d56ea3dec373">addFormalRetVFGNode</a>(uniqueFunRetNode, func, retPEs);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="comment">// initialize llvm phi nodes (phi of top level pointers)</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; phis = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">PAGEdge::Phi</a>);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = phis.begin(), eiter =</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; phis.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>* edge = SVFUtil::cast&lt;PhiStmt&gt;(*iter);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()))</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a6a1435f8ac7f74cc81608839fa3da3df">addIntraPHIVFGNode</a>(edge);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// initialize llvm binary nodes (binary operators)</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; binaryops = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">PAGEdge::BinaryOp</a>);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = binaryops.begin(), eiter =</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; binaryops.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>* edge = SVFUtil::cast&lt;BinaryOPStmt&gt;(*iter);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()))</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="classSVF_1_1VFG.html#ac79516fc4d9136241d708f9df5c73262">addBinaryOPVFGNode</a>(edge);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="comment">// initialize llvm unary nodes (unary operators)</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; unaryops = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">PAGEdge::UnaryOp</a>);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = unaryops.begin(), eiter =</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; unaryops.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>* edge = SVFUtil::cast&lt;UnaryOPStmt&gt;(*iter);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(edge-&gt;<a class="code" href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1">getRes</a>()))</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a65c88a6c20380b715ac8b6c31e68afed">addUnaryOPVFGNode</a>(edge);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="comment">// initialize llvm unary nodes (unary operators)</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; brs = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">PAGEdge::Branch</a>);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = brs.begin(), eiter =</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; brs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>* edge = SVFUtil::cast&lt;BranchStmt&gt;(*iter);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(edge-&gt;<a class="code" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">getBranchInst</a>()))</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a18afc4baf33eb700e0510928016019f5">addBranchVFGNode</a>(edge);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="comment">// initialize llvm cmp nodes (comparision)</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; cmps = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">PAGEdge::Cmp</a>);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = cmps.begin(), eiter =</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; cmps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>* edge = SVFUtil::cast&lt;CmpStmt&gt;(*iter);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()))</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a6c2280052b44ff7029cf4b98712c374b">addCmpVFGNode</a>(edge);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;}</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;</div><div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2"> 540</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">VFG::addIntraDirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId)</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;{</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* srcNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(srcId);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dstNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(dstId);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96">checkIntraEdgeParents</a>(srcNode, dstNode);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">hasIntraVFGEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">VFGEdge::IntraDirectVF</a>))</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge-&gt;isDirectVFGEdge() &amp;&amp; <span class="stringliteral">&quot;this should be a direct value flow edge!&quot;</span>);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">if</span>(srcNode!=dstNode){</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="classSVF_1_1IntraDirSVFGEdge.html">IntraDirSVFGEdge</a>* directEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraDirSVFGEdge.html">IntraDirSVFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">addVFGEdge</a>(directEdge) ? directEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;}</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div><div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea"> 564</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">VFG::addCallEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;{</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* srcNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(srcId);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dstNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(dstId);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a">VFGEdge::CallDirVF</a>,csId))</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge-&gt;isCallDirectVFGEdge() &amp;&amp; <span class="stringliteral">&quot;this should be a direct value flow edge!&quot;</span>);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>* callEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>(srcNode,dstNode,csId);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">addVFGEdge</a>(callEdge) ? callEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;}</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;</div><div class="line"><a name="l00583"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2"> 583</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">VFG::addRetEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;{</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* srcNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(srcId);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dstNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(dstId);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191">VFGEdge::RetDirVF</a>,csId))</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge-&gt;isRetDirectVFGEdge() &amp;&amp; <span class="stringliteral">&quot;this should be a direct value flow edge!&quot;</span>);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>* retEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>(srcNode,dstNode,csId);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">addVFGEdge</a>(retEdge) ? retEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;}</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#adedaba0713164e10ce6273b2947535e0"> 603</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#adedaba0713164e10ce6273b2947535e0">VFG::connectDirectVFGEdges</a>()</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;{</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">iterator</a> it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast&lt;StmtVFGNode&gt;(node))</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;AddrVFGNode&gt;(stmtNode))</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">if</span> (stmtNode-&gt;getPAGSrcNode()-&gt;isConstantData() == <span class="keyword">false</span>)</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(stmtNode-&gt;getPAGSrcNode()), nodeId);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;StoreVFGNode&gt;(stmtNode) &amp;&amp; (stmtNode-&gt;getPAGDstNode()-&gt;isConstantData() == <span class="keyword">false</span>))</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(stmtNode-&gt;getPAGDstNode()), nodeId);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a>* phiNode = SVFUtil::dyn_cast&lt;PHIVFGNode&gt;(node))</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">for</span> (PHIVFGNode::OPVers::const_iterator it = phiNode-&gt;opVerBegin(), eit = phiNode-&gt;opVerEnd(); it != eit; it++)</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">if</span> (it-&gt;second-&gt;isConstantData() == <span class="keyword">false</span>)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(it-&gt;second), nodeId);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* binaryNode = SVFUtil::dyn_cast&lt;BinaryOPVFGNode&gt;(node))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; {</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">for</span> (BinaryOPVFGNode::OPVers::const_iterator it = binaryNode-&gt;opVerBegin(), eit = binaryNode-&gt;opVerEnd(); it != eit; it++)</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; {</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span> (it-&gt;second-&gt;isConstantData() == <span class="keyword">false</span>)</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(it-&gt;second), nodeId);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; }</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* unaryNode = SVFUtil::dyn_cast&lt;UnaryOPVFGNode&gt;(node))</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">for</span> (UnaryOPVFGNode::OPVers::const_iterator it = unaryNode-&gt;opVerBegin(), eit = unaryNode-&gt;opVerEnd(); it != eit; it++)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; {</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">if</span> (it-&gt;second-&gt;isConstantData() == <span class="keyword">false</span>)</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(it-&gt;second), nodeId);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; }</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; }</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* cmpNode = SVFUtil::dyn_cast&lt;CmpVFGNode&gt;(node))</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">for</span> (CmpVFGNode::OPVers::const_iterator it = cmpNode-&gt;opVerBegin(), eit = cmpNode-&gt;opVerEnd(); it != eit; it++)</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">if</span> (it-&gt;second-&gt;isConstantData() == <span class="keyword">false</span>)</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(it-&gt;second), nodeId);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* actualParm = SVFUtil::dyn_cast&lt;ActualParmVFGNode&gt;(node))</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (actualParm-&gt;getParam()-&gt;isConstantData() == <span class="keyword">false</span>)</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(actualParm-&gt;getParam()), nodeId);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* formalParm = SVFUtil::dyn_cast&lt;FormalParmVFGNode&gt;(node))</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">for</span>(CallPESet::const_iterator it = formalParm-&gt;callPEBegin(), eit = formalParm-&gt;callPEEnd();</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = (*it)-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>();</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* acutalParm = <a class="code" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">getActualParmVFGNode</a>((*it)-&gt;getSrcNode(),cs);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">addInterEdgeFromAPToFP</a>(acutalParm,formalParm,<a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(cs, formalParm-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* calleeRet = SVFUtil::dyn_cast&lt;FormalRetVFGNode&gt;(node))</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(calleeRet-&gt;getRet()), nodeId);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">for</span>(RetPESet::const_iterator it = calleeRet-&gt;retPEBegin(), eit = calleeRet-&gt;retPEEnd(); it!=eit; ++it)</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* callsiteRev = <a class="code" href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38">getActualRetVFGNode</a>((*it)-&gt;getDstNode());</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* retBlockNode = (*it)-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>();</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* callBlockNode = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(retBlockNode-&gt;getCallSite());</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <a class="code" href="classSVF_1_1VFG.html#abd05b599b383c759455aff99963b7b41">addInterEdgeFromFRToAR</a>(calleeRet,callsiteRev, <a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(callBlockNode, calleeRet-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; }</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a153d42a480ef1763ad59fd7258ac3ac5">Options::EnableThreadCallGraph</a>){</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; forks = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">PAGEdge::ThreadFork</a>);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = forks.begin(), eiter =</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; forks.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; {</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* forkedge = SVFUtil::cast&lt;TDForkPE&gt;(*iter);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* acutalParm = <a class="code" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">getActualParmVFGNode</a>(forkedge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(),forkedge-&gt;<a class="code" href="classSVF_1_1CallPE.html#a6a7a917cd6f1235b9453c9672f38c0ef">getCallSite</a>());</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* formalParm = <a class="code" href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6">getFormalParmVFGNode</a>(forkedge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>());</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">addInterEdgeFromAPToFP</a>(acutalParm,formalParm,<a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(forkedge-&gt;<a class="code" href="classSVF_1_1CallPE.html#a6a7a917cd6f1235b9453c9672f38c0ef">getCallSite</a>(), formalParm-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; joins = <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">PAGEdge::ThreadJoin</a>);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::iterator iter = joins.begin(), eiter =</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; joins.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* joinedge = SVFUtil::cast&lt;TDJoinPE&gt;(*iter);</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> callsiteRev = <a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(joinedge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>());</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* calleeRet = <a class="code" href="classSVF_1_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8">getFormalRetVFGNode</a>(joinedge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>());</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(calleeRet-&gt;getId(),callsiteRev, <a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(joinedge-&gt;<a class="code" href="classSVF_1_1RetPE.html#a1495bfc171fa21980712f1d729a6b175">getCallSite</a>(), calleeRet-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; }</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;}</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;</div><div class="line"><a name="l00720"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f"> 720</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">VFG::hasIntraVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>)</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;{</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a> edge(src,dst,kind);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">return</span> outEdge;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; }</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><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;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;</div><div class="line"><a name="l00738"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba"> 738</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba">VFG::hasThreadVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>)</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;{</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a> edge(src,dst,kind);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">return</span> outEdge;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;}</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;</div><div class="line"><a name="l00755"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9"> 755</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">VFG::hasInterVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>,<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</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="classSVF_1_1VFGEdge.html">VFGEdge</a> edge(src,dst,<a class="code" href="classSVF_1_1VFGEdge.html#a30c07e8afb0853d4b46cfa722d912650">VFGEdge::makeEdgeFlagWithInvokeID</a>(kind,csId));</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; {</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">return</span> outEdge;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; }</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;}</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="l00773"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50"> 773</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">VFG::getIntraVFGEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>)</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;{</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">hasIntraVFGEdge</a>(const_cast&lt;VFGNode*&gt;(src),const_cast&lt;VFGNode*&gt;(dst),kind);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;}</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div><div class="line"><a name="l00782"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aee3d0c4ed32bde425f33281f248b7dd2"> 782</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aee3d0c4ed32bde425f33281f248b7dd2">VFG::dump</a>(<span class="keyword">const</span> std::string&amp; file, <span class="keywordtype">bool</span> simple)</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;{</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="classllvm_1_1GraphPrinter.html#a53b3809728c30389a594076097884b82">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>(), file, <span class="keyword">this</span>, simple);</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;}</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div><div class="line"><a name="l00790"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ae4350f68e960bfef87f44587628b1929"> 790</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ae4350f68e960bfef87f44587628b1929">VFG::view</a>()</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;{</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; llvm::ViewGraph(<span class="keyword">this</span>, <span class="stringliteral">&quot;Value Flow Graph&quot;</span>);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;}</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;</div><div class="line"><a name="l00796"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0c0a7c8f0bd27bc9e88ce54c0809b11b"> 796</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a0c0a7c8f0bd27bc9e88ce54c0809b11b">VFG::updateCallGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta)</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;{</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f">VFGEdgeSetTy</a> vfEdgesAtIndCallSite;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; PointerAnalysis::CallEdgeMap::const_iterator iter = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>().begin();</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; PointerAnalysis::CallEdgeMap::const_iterator eiter = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>().end();</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">for</span> (; iter != eiter; iter++)</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* newcs = iter-&gt;first;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(newcs-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#a285c517dfd7fee5467606663a0fdd035">isIndirectCall</a>() &amp;&amp; <span class="stringliteral">&quot;this is not an indirect call?&quot;</span>);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">PointerAnalysis::FunctionSet</a> &amp; functions = iter-&gt;second;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">for</span> (PointerAnalysis::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; {</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = *func_iter;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <a class="code" href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab">connectCallerAndCallee</a>(newcs, func, vfEdgesAtIndCallSite);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; }</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;}</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;</div><div class="line"><a name="l00818"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab"> 818</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab">VFG::connectCallerAndCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* callBlockNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f">VFGEdgeSetTy</a>&amp; edges)</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;{</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> * <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a> = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>();</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a> * icfg = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(callBlockNode, callee);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* retBlockNode = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a6d66c83cb1656d0f8ec8b8b65a9e9c41">getRetBlockNode</a>(callBlockNode-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>());</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="comment">// connect actual and formal param</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">if</span> (pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2a4185af81e7e10f0db74c39ee220101">hasCallSiteArgsMap</a>(callBlockNode) &amp;&amp; pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">hasFunArgsList</a>(callee))</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFIR::SVFVarList</a>&amp; csArgList = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac7f90610a7b5f456c530a4419393fae5">getCallSiteArgsList</a>(callBlockNode);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFIR::SVFVarList</a>&amp; funArgList = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a">getFunArgsList</a>(callee);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; SVFIR::SVFVarList::const_iterator csArgIt = csArgList.begin(), csArgEit = csArgList.end();</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; SVFIR::SVFVarList::const_iterator funArgIt = funArgList.begin(), funArgEit = funArgList.end();</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">for</span> (; funArgIt != funArgEit &amp;&amp; csArgIt != csArgEit; funArgIt++, csArgIt++)</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *fun_arg = *funArgIt;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">if</span> (fun_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <a class="code" href="classSVF_1_1VFG.html#acbc1f5ae3b9016b1ce97314a2b8b54c0">connectAParamAndFParam</a>(cs_arg, fun_arg, callBlockNode, csId, edges);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; }</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(funArgIt == funArgEit &amp;&amp; <span class="stringliteral">&quot;function has more arguments than call site&quot;</span>);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">if</span> (callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;isVarArg())</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; {</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> varFunArg = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">getVarargNode</a>(callee);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* varFunArgNode = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(varFunArg);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span> (varFunArgNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">for</span> (; csArgIt != csArgEit; csArgIt++)</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; {</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">if</span> (cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <a class="code" href="classSVF_1_1VFG.html#acbc1f5ae3b9016b1ce97314a2b8b54c0">connectAParamAndFParam</a>(cs_arg, varFunArgNode, callBlockNode, csId, edges);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; }</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; }</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="comment">// connect actual return and formal return</span></div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">if</span> (pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046">funHasRet</a>(callee) &amp;&amp; pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a170bef1e9a07ce0449faf66706ae6e61">callsiteHasRet</a>(retBlockNode))</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; {</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_return = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a70aa4d730ef1d38ef9c46f5014465bdd">getCallSiteRet</a>(retBlockNode);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_return = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">getFunRet</a>(callee);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span> (cs_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; fun_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <a class="code" href="classSVF_1_1VFG.html#ab4e8ab307ad6beb46812a60ebd31ae3b">connectFRetAndARet</a>(fun_return, cs_return, csId, edges);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;}</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;</div><div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a1fff5a365e5aa2d99f07f7f64cc35fac"> 868</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a1fff5a365e5aa2d99f07f7f64cc35fac">VFG::getLHSTopLevPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a>* addr = SVFUtil::dyn_cast&lt;AddrVFGNode&gt;(node))</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">return</span> addr-&gt;getPAGDstNode();</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a>* copy = SVFUtil::dyn_cast&lt;CopyVFGNode&gt;(node))</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">return</span> copy-&gt;getPAGDstNode();</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepVFGNode.html">GepVFGNode</a>* gep = SVFUtil::dyn_cast&lt;GepVFGNode&gt;(node))</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">return</span> gep-&gt;getPAGDstNode();</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadVFGNode</a>* load = SVFUtil::dyn_cast&lt;LoadVFGNode&gt;(node))</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordflow">return</span> load-&gt;getPAGDstNode();</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a>* phi = SVFUtil::dyn_cast&lt;PHIVFGNode&gt;(node))</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordflow">return</span> phi-&gt;getRes();</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* cmp = SVFUtil::dyn_cast&lt;CmpVFGNode&gt;(node))</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordflow">return</span> cmp-&gt;getRes();</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* bop = SVFUtil::dyn_cast&lt;BinaryOPVFGNode&gt;(node))</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">return</span> bop-&gt;getRes();</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* uop = SVFUtil::dyn_cast&lt;UnaryOPVFGNode&gt;(node))</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">return</span> uop-&gt;getRes();</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* ap = SVFUtil::dyn_cast&lt;ActualParmVFGNode&gt;(node))</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="keywordflow">return</span> ap-&gt;getParam();</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>*fp = SVFUtil::dyn_cast&lt;FormalParmVFGNode&gt;(node))</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">return</span> fp-&gt;getParam();</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* ar = SVFUtil::dyn_cast&lt;ActualRetVFGNode&gt;(node))</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">return</span> ar-&gt;getRev();</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* fr = SVFUtil::dyn_cast&lt;FormalRetVFGNode&gt;(node))</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">return</span> fr-&gt;getRet();</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a>* nullVFG = SVFUtil::dyn_cast&lt;NullPtrVFGNode&gt;(node))</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">return</span> nullVFG-&gt;getPAGNode();</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unexpected node kind!&quot;</span>);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;}</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;</div><div class="line"><a name="l00905"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a8994194bca2edfd9528880390de795ab"> 905</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1VFG.html#a8994194bca2edfd9528880390de795ab">VFG::isFunEntryVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* fp = SVFUtil::dyn_cast&lt;FormalParmVFGNode&gt;(node))</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">return</span> fp-&gt;getFun();</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; }</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHIVFGNode</a>* phi = SVFUtil::dyn_cast&lt;InterPHIVFGNode&gt;(node))</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; {</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">if</span>(phi-&gt;isFormalParmPHI())</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">return</span> phi-&gt;getFun();</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; }</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;}</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;</div><div class="line"><a name="l00920"></a><span class="lineno"><a class="line" href="classSVF_1_1StmtVFGNode.html#ab51f462a26bc03cd5e2379be98a4dd3b"> 920</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1StmtVFGNode.html#ab51f462a26bc03cd5e2379be98a4dd3b">StmtVFGNode::getValue</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">return</span> getPAGEdge()-&gt;getValue();</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;}</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;</div><div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpVFGNode.html#a166ac2df82ebfcb77d50b71ce573e1eb"> 924</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1CmpVFGNode.html#a166ac2df82ebfcb77d50b71ce573e1eb">CmpVFGNode::getValue</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">return</span> getRes()-&gt;getValue();</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;}</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;</div><div class="line"><a name="l00928"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPVFGNode.html#ad4c45bbfd044502106c41ba70f568463"> 928</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1BinaryOPVFGNode.html#ad4c45bbfd044502106c41ba70f568463">BinaryOPVFGNode::getValue</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">return</span> getRes()-&gt;getValue();</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;}</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160;</div><div class="line"><a name="l00932"></a><span class="lineno"><a class="line" href="classSVF_1_1PHIVFGNode.html#a188a4d3ae95fe01dc59784d076f28aef"> 932</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1PHIVFGNode.html#a188a4d3ae95fe01dc59784d076f28aef">PHIVFGNode::getValue</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">return</span> getRes()-&gt;getValue();</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160;}</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;</div><div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="classSVF_1_1ArgumentVFGNode.html#aaf6a78630b0365d50dd7b4394215d3a1"> 936</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1ArgumentVFGNode.html#aaf6a78630b0365d50dd7b4394215d3a1">ArgumentVFGNode::getValue</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">return</span> param-&gt;getValue();</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;}</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacellvm.html">llvm</a></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;{</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00946"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html"> 946</a></span>&#160;<span class="keyword">struct </span>DOTGraphTraits&lt;<a class="code" href="classSVF_1_1VFG.html">VFG</a>*&gt; : <span class="keyword">public</span> DOTGraphTraits&lt;SVFIR*&gt;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;{</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;</div><div class="line"><a name="l00949"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#afd7d2c80916a68b53814e6de593bf520"> 949</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#afd7d2c80916a68b53814e6de593bf520">NodeType</a>;</div><div class="line"><a name="l00950"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a0ae94170a4f95bfc7e89d0149ff67882"> 950</a></span>&#160; <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a0ae94170a4f95bfc7e89d0149ff67882">DOTGraphTraits</a>(<span class="keywordtype">bool</span> isSimple = <span class="keyword">false</span>) :</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; DOTGraphTraits&lt;<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>*&gt;(isSimple)</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; {</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; }</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;</div><div class="line"><a name="l00956"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#aaedec44d41a6e36c9e5db804e4a005dd"> 956</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#aaedec44d41a6e36c9e5db804e4a005dd">getGraphName</a>(<a class="code" href="classSVF_1_1VFG.html">VFG</a>*)</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;VFG&quot;</span>;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; }</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160;</div><div class="line"><a name="l00961"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a6470ed90c2a601b01715d02cffd90918"> 961</a></span>&#160; std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a6470ed90c2a601b01715d02cffd90918">getNodeLabel</a>(NodeType *node, <a class="code" href="classSVF_1_1VFG.html">VFG</a> *graph)</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; {</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">if</span> (isSimple())</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">return</span> getSimpleNodeLabel(node, graph);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">return</span> getCompleteNodeLabel(node, graph);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; }</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;</div><div class="line"><a name="l00970"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a0159404d5c5a7816a4b679c0f35a546e"> 970</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a0159404d5c5a7816a4b679c0f35a546e">getSimpleNodeLabel</a>(NodeType *node, <a class="code" href="classSVF_1_1VFG.html">VFG</a>*)</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; {</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; std::string str;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast&lt;StmtVFGNode&gt;(node))</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; {</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; rawstr &lt;&lt; stmtNode-&gt;toString();</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; }</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a>* tphi = SVFUtil::dyn_cast&lt;PHIVFGNode&gt;(node))</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; {</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; rawstr &lt;&lt; tphi-&gt;toString();</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; }</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* fp = SVFUtil::dyn_cast&lt;FormalParmVFGNode&gt;(node))</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; {</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; rawstr &lt;&lt; fp-&gt;toString();</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; }</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* ap = SVFUtil::dyn_cast&lt;ActualParmVFGNode&gt;(node))</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; {</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; rawstr &lt;&lt; ap-&gt;toString();</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; }</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* ar = SVFUtil::dyn_cast&lt;ActualRetVFGNode&gt;(node))</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; rawstr &lt;&lt; ar-&gt;toString();</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* fr = SVFUtil::dyn_cast&lt;FormalRetVFGNode&gt;(node))</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; {</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; rawstr &lt;&lt; fr-&gt;toString();</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; }</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;NullPtrVFGNode&gt;(node))</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; {</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;NullPtr&quot;</span>;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; }</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* bop = SVFUtil::dyn_cast&lt;BinaryOPVFGNode&gt;(node))</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; {</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; rawstr &lt;&lt; bop-&gt;toString();</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; }</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* uop = SVFUtil::dyn_cast&lt;UnaryOPVFGNode&gt;(node))</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; {</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; rawstr &lt;&lt; uop-&gt;toString();</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; }</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* cmp = SVFUtil::dyn_cast&lt;CmpVFGNode&gt;(node))</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; {</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; rawstr &lt;&lt; cmp-&gt;toString();;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; }</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else kinds of nodes do we have??&quot;</span>);</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; }</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;</div><div class="line"><a name="l01021"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a6ced6b5b50d920fb47c4334693fea86c"> 1021</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a6ced6b5b50d920fb47c4334693fea86c">getCompleteNodeLabel</a>(NodeType *node, <a class="code" href="classSVF_1_1VFG.html">VFG</a>*)</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; {</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; std::string str;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast&lt;StmtVFGNode&gt;(node))</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; {</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; rawstr &lt;&lt; stmtNode-&gt;toString();</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; }</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* bop = SVFUtil::dyn_cast&lt;BinaryOPVFGNode&gt;(node))</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; {</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; rawstr &lt;&lt; bop-&gt;toString();</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; }</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* uop = SVFUtil::dyn_cast&lt;UnaryOPVFGNode&gt;(node))</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; {</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; rawstr &lt;&lt; uop-&gt;toString();</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; }</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* cmp = SVFUtil::dyn_cast&lt;CmpVFGNode&gt;(node))</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; {</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; rawstr &lt;&lt; cmp-&gt;toString();</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; }</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a>* phi = SVFUtil::dyn_cast&lt;PHIVFGNode&gt;(node))</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; {</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; rawstr &lt;&lt; phi-&gt;toString();</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; }</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* fp = SVFUtil::dyn_cast&lt;FormalParmVFGNode&gt;(node))</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; {</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; rawstr &lt;&lt; fp-&gt;toString();</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; }</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* ap = SVFUtil::dyn_cast&lt;ActualParmVFGNode&gt;(node))</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; {</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; rawstr &lt;&lt; ap-&gt;toString();</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; }</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a>* nptr = SVFUtil::dyn_cast&lt;NullPtrVFGNode&gt;(node))</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; {</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; rawstr &lt;&lt; nptr-&gt;toString();</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; }</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* ar = SVFUtil::dyn_cast&lt;ActualRetVFGNode&gt;(node))</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; {</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; rawstr &lt;&lt; ar-&gt;toString();</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* fr = SVFUtil::dyn_cast&lt;FormalRetVFGNode&gt;(node))</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; {</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; rawstr &lt;&lt; fr-&gt;toString();</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; }</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MRSVFGNode.html">MRSVFGNode</a>* mr = SVFUtil::dyn_cast&lt;MRSVFGNode&gt;(node))</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; {</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; rawstr &lt;&lt; mr-&gt;toString();</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; }</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else kinds of nodes do we have??&quot;</span>);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; }</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;</div><div class="line"><a name="l01076"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a57d4a186a0319b73d69752564bf25b2a"> 1076</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a57d4a186a0319b73d69752564bf25b2a">getNodeAttributes</a>(NodeType *node, <a class="code" href="classSVF_1_1VFG.html">VFG</a>*)</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; {</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; std::string str;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast&lt;StmtVFGNode&gt;(node))</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; {</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = stmtNode-&gt;getPAGEdge();</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AddrStmt&gt;(edge))</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; {</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=green&quot;</span>;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; }</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;CopyStmt&gt;(edge))</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; {</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=black&quot;</span>;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; }</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPE&gt;(edge))</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=black,style=dotted&quot;</span>;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; }</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepStmt&gt;(edge))</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; {</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=purple&quot;</span>;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; }</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StoreStmt&gt;(edge))</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=blue&quot;</span>;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; }</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadStmt&gt;(edge))</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; {</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=red&quot;</span>;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; {</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 &amp;&amp; <span class="stringliteral">&quot;No such kind edge!!&quot;</span>);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; }</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; }</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;CmpVFGNode&gt;(node))</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; {</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; }</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;BinaryOPVFGNode&gt;(node))</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; {</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; }</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UnaryOPVFGNode&gt;(node))</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; {</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; }</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;PHIVFGNode&gt;(node))</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; {</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=black&quot;</span>;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; }</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;NullPtrVFGNode&gt;(node))</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; {</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; }</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FormalParmVFGNode&gt;(node))</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; {</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=yellow,penwidth=2&quot;</span>;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; }</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ActualParmVFGNode&gt;(node))</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=yellow,penwidth=2&quot;</span>;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; }</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualRetVFGNode&gt;(node))</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; {</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=yellow,penwidth=2&quot;</span>;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; }</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;FormalRetVFGNode&gt;(node))</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; {</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=yellow,penwidth=2&quot;</span>;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; }</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;MRSVFGNode&gt;(node))</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; {</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=orange,penwidth=2&quot;</span>;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; }</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such kind of node!!&quot;</span>);</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; }</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l01163"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a646a1023dab5169a73c8ea54e860c78b"> 1163</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a646a1023dab5169a73c8ea54e860c78b">getEdgeAttributes</a>(NodeType*, EdgeIter EI, <a class="code" href="classSVF_1_1VFG.html">VFG</a>*)</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; {</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;DirectSVFGEdge&gt;(edge))</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; {</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallDirSVFGEdge&gt;(edge))</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid,color=red&quot;</span>;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetDirSVFGEdge&gt;(edge))</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid,color=blue&quot;</span>;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid&quot;</span>;</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; }</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge))</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; {</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallIndSVFGEdge&gt;(edge))</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=dashed,color=red&quot;</span>;</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetIndSVFGEdge&gt;(edge))</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=dashed,color=blue&quot;</span>;</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=dashed&quot;</span>;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; }</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; {</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else edge we have?&quot;</span>);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; }</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; }</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l01193"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#af794115d33a8ea6f7f2e2c7ac5dd4c80"> 1193</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#af794115d33a8ea6f7f2e2c7ac5dd4c80">getEdgeSourceLabel</a>(NodeType*, EdgeIter EI)</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; {</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; std::string str;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>* dirCall = SVFUtil::dyn_cast&lt;CallDirSVFGEdge&gt;(edge))</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; rawstr &lt;&lt; dirCall-&gt;getCallSiteId();</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>* dirRet = SVFUtil::dyn_cast&lt;RetDirSVFGEdge&gt;(edge))</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; rawstr &lt;&lt; dirRet-&gt;getCallSiteId();</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; }</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;};</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;} <span class="comment">// End namespace llvm</span></div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1VFG_html_a84cf5facb15e1d598c2527fba0c7634d"><div class="ttname"><a href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">SVF::VFG::addVFGEdge</a></div><div class="ttdeci">bool addVFGEdge(VFGEdge *edge)</div><div class="ttdoc">Add VFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00334">VFG.h:334</a></div></div>
71
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a64939d7ecfd8e2cf862782954a56596b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVF::SVFIR::SVFVarList</a></div><div class="ttdeci">std::vector&lt; const SVFVar * &gt; SVFVarList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
71
72
  <div class="ttc" id="classSVF_1_1VFG_html"><div class="ttname"><a href="classSVF_1_1VFG.html">SVF::VFG</a></div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00050">VFG.h:50</a></div></div>
72
73
  <div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVF::VFGEdge::IntraDirectVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00053">VFGEdge.h:53</a></div></div>
73
74
  <div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00190">GenericGraph.h:190</a></div></div>
74
75
  <div class="ttc" id="classSVF_1_1BinaryOPVFGNode_html"><div class="ttname"><a href="classSVF_1_1BinaryOPVFGNode.html">SVF::BinaryOPVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00387">VFGNode.h:387</a></div></div>
75
76
  <div class="ttc" id="classSVF_1_1ActualParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html">SVF::ActualParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00831">VFGNode.h:831</a></div></div>
76
77
  <div class="ttc" id="classSVF_1_1VFG_html_aae3bddc73e39d96fcc97d56ea3dec373"><div class="ttname"><a href="classSVF_1_1VFG.html#aae3bddc73e39d96fcc97d56ea3dec373">SVF::VFG::addFormalRetVFGNode</a></div><div class="ttdeci">void addFormalRetVFGNode(const PAGNode *uniqueFunRet, const SVFFunction *fun, RetPESet &amp;retPEs)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00546">VFG.h:546</a></div></div>
77
- <div class="ttc" id="classSVF_1_1SVFVar_html_a9b00f9b5f8ad2422162f4396e2d8fa42"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a9b00f9b5f8ad2422162f4396e2d8fa42">SVF::SVFVar::hasOutgoingEdges</a></div><div class="ttdeci">bool hasOutgoingEdges(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Has outgoing SVFIR edges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00210">SVFVariables.h:210</a></div></div>
78
- <div class="ttc" id="classSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00845">SVFStatements.h:845</a></div></div>
78
+ <div class="ttc" id="classSVF_1_1SVFVar_html_a9b00f9b5f8ad2422162f4396e2d8fa42"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a9b00f9b5f8ad2422162f4396e2d8fa42">SVF::SVFVar::hasOutgoingEdges</a></div><div class="ttdeci">bool hasOutgoingEdges(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Has outgoing SVFIR statements (edges) </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00210">SVFVariables.h:210</a></div></div>
79
+ <div class="ttc" id="classSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00850">SVFStatements.h:850</a></div></div>
79
80
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVF::SVFStmt::UnaryOp</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
80
81
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVF::SVFStmt::Call</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
81
82
  <div class="ttc" id="classSVF_1_1AddrVFGNode_html"><div class="ttname"><a href="classSVF_1_1AddrVFGNode.html">SVF::AddrVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00747">VFGNode.h:747</a></div></div>
@@ -86,69 +87,62 @@ $(function() {
86
87
  <div class="ttc" id="classSVF_1_1StmtVFGNode_html_ab51f462a26bc03cd5e2379be98a4dd3b"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#ab51f462a26bc03cd5e2379be98a4dd3b">SVF::StmtVFGNode::getValue</a></div><div class="ttdeci">const Value * getValue() const override</div><div class="ttdoc">Return the corresponding LLVM value, if possible, nullptr otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00920">VFG.cpp:920</a></div></div>
87
88
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVF::SVFStmt::Phi</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
88
89
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVF::SVFStmt::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
89
- <div class="ttc" id="classSVF_1_1SVFVar_html_a747b2c92c81d32fcd357e80d2d8fe7cc"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">SVF::SVFVar::hasIncomingEdges</a></div><div class="ttdeci">bool hasIncomingEdges(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Has incoming SVFIR edges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00173">SVFVariables.h:173</a></div></div>
90
+ <div class="ttc" id="classSVF_1_1SVFVar_html_a747b2c92c81d32fcd357e80d2d8fe7cc"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">SVF::SVFVar::hasIncomingEdges</a></div><div class="ttdeci">bool hasIncomingEdges(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Has incoming SVFIR statements (edges) </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00173">SVFVariables.h:173</a></div></div>
90
91
  <div class="ttc" id="classSVF_1_1VFG_html_a0bdac7337a393ad2e21a33ec1978ca3f"><div class="ttname"><a href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f">SVF::VFG::VFGEdgeSetTy</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy VFGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00077">VFG.h:77</a></div></div>
91
92
  <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>
92
- <div class="ttc" id="classSVF_1_1SVFVar_html_adb1f35a6f8db19c48cf7fd6c8f4a8ff3"><div class="ttname"><a href="classSVF_1_1SVFVar.html#adb1f35a6f8db19c48cf7fd6c8f4a8ff3">SVF::SVFVar::getOutgoingEdgesBegin</a></div><div class="ttdeci">SVFStmt::PAGEdgeSetTy::iterator getOutgoingEdgesBegin(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Get outgoing SVFStmt iterator. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00220">SVFVariables.h:220</a></div></div>
93
- <div class="ttc" id="classSVF_1_1VFG_html_aba0389fbcac1efab08339b53d149bf84"><div class="ttname"><a href="classSVF_1_1VFG.html#aba0389fbcac1efab08339b53d149bf84">SVF::VFG::addIntraPHIVFGNode</a></div><div class="ttdeci">void addIntraPHIVFGNode(const PhiPE *edge)</div><div class="ttdoc">Add an llvm PHI VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00572">VFG.h:572</a></div></div>
94
93
  <div class="ttc" id="classSVF_1_1VFG_html_a8ddf15d89a1b11a7f7720b671f4f0295"><div class="ttname"><a href="classSVF_1_1VFG.html#a8ddf15d89a1b11a7f7720b671f4f0295">SVF::VFG::isPhiCopyEdge</a></div><div class="ttdeci">bool isPhiCopyEdge(const PAGEdge *copy) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00452">VFG.h:452</a></div></div>
95
94
  <div class="ttc" id="classSVF_1_1ArgumentVFGNode_html"><div class="ttname"><a href="classSVF_1_1ArgumentVFGNode.html">SVF::ArgumentVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00784">VFGNode.h:784</a></div></div>
96
95
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00101">SVFUtil.cpp:101</a></div></div>
97
- <div class="ttc" id="classSVF_1_1RetPE_html_a1495bfc171fa21980712f1d729a6b175"><div class="ttname"><a href="classSVF_1_1RetPE.html#a1495bfc171fa21980712f1d729a6b175">SVF::RetPE::getCallSite</a></div><div class="ttdeci">const CallBlockNode * getCallSite() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00884">SVFStatements.h:884</a></div></div>
98
- <div class="ttc" id="classSVF_1_1SVFIR_html_a70aa4d730ef1d38ef9c46f5014465bdd"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a70aa4d730ef1d38ef9c46f5014465bdd">SVF::SVFIR::getCallSiteRet</a></div><div class="ttdeci">const SVFVar * getCallSiteRet(const RetBlockNode *cs) const</div><div class="ttdoc">Get callsite return. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00255">SVFIR.h:255</a></div></div>
96
+ <div class="ttc" id="classSVF_1_1RetPE_html_a1495bfc171fa21980712f1d729a6b175"><div class="ttname"><a href="classSVF_1_1RetPE.html#a1495bfc171fa21980712f1d729a6b175">SVF::RetPE::getCallSite</a></div><div class="ttdeci">const CallBlockNode * getCallSite() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00889">SVFStatements.h:889</a></div></div>
97
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a70aa4d730ef1d38ef9c46f5014465bdd"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a70aa4d730ef1d38ef9c46f5014465bdd">SVF::SVFIR::getCallSiteRet</a></div><div class="ttdeci">const SVFVar * getCallSiteRet(const RetBlockNode *cs) const</div><div class="ttdoc">Get callsite return. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00254">SVFIR.h:254</a></div></div>
99
98
  <div class="ttc" id="classSVF_1_1ICFG_html_a7d10e8a815c836a070d35850f817a18c"><div class="ttname"><a href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">SVF::ICFG::getCallBlockNode</a></div><div class="ttdeci">CallBlockNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00197">ICFG.cpp:197</a></div></div>
100
- <div class="ttc" id="classSVF_1_1MultiOpndStmt_html_a00a14ad8f49912b876fd9d729fea4601"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">SVF::MultiOpndStmt::getRes</a></div><div class="ttdeci">const SVFVar * getRes() const</div><div class="ttdoc">Result SVFVar. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00299">SVFStatements.h:299</a></div></div>
99
+ <div class="ttc" id="classSVF_1_1MultiOpndStmt_html_a00a14ad8f49912b876fd9d729fea4601"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">SVF::MultiOpndStmt::getRes</a></div><div class="ttdeci">const SVFVar * getRes() const</div><div class="ttdoc">Result SVFVar. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00303">SVFStatements.h:303</a></div></div>
101
100
  <div class="ttc" id="classSVF_1_1IRGraph_html_a8b10c318674a47035d617b3ade4f069b"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">SVF::IRGraph::getVarargNode</a></div><div class="ttdeci">NodeID getVarargNode(const SVFFunction *func) const</div><div class="ttdoc">getVarargNode - Return the unique node representing the variadic argument of a variadic function...</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00140">IRGraph.h:140</a></div></div>
102
101
  <div class="ttc" id="classSVF_1_1VFG_html_a71022c8953e89e21b017936286f12251"><div class="ttname"><a href="classSVF_1_1VFG.html#a71022c8953e89e21b017936286f12251">SVF::VFG::addActualRetVFGNode</a></div><div class="ttdeci">void addActualRetVFGNode(const PAGNode *ret, const CallBlockNode *cs)</div><div class="ttdoc">Add a callsite Receive VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00564">VFG.h:564</a></div></div>
103
102
  <div class="ttc" id="classSVF_1_1VFG_html_ad86631f70bd702b5635bdbeab7d884b9"><div class="ttname"><a href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">SVF::VFG::hasInterVFGEdge</a></div><div class="ttdeci">VFGEdge * hasInterVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00755">VFG.cpp:755</a></div></div>
104
103
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVF::SVFStmt::Cmp</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
105
104
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
106
- <div class="ttc" id="classSVF_1_1UnaryOPPE_html"><div class="ttname"><a href="classSVF_1_1UnaryOPPE.html">SVF::UnaryOPPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00474">SVFStatements.h:474</a></div></div>
107
- <div class="ttc" id="classSVF_1_1SVFIR_html_a2a4185af81e7e10f0db74c39ee220101"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2a4185af81e7e10f0db74c39ee220101">SVF::SVFIR::hasCallSiteArgsMap</a></div><div class="ttdeci">bool hasCallSiteArgsMap(const CallBlockNode *cs) const</div><div class="ttdoc">Callsite has argument list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00233">SVFIR.h:233</a></div></div>
105
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a2a4185af81e7e10f0db74c39ee220101"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2a4185af81e7e10f0db74c39ee220101">SVF::SVFIR::hasCallSiteArgsMap</a></div><div class="ttdeci">bool hasCallSiteArgsMap(const CallBlockNode *cs) const</div><div class="ttdoc">Callsite has argument list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00232">SVFIR.h:232</a></div></div>
108
106
  <div class="ttc" id="classSVF_1_1VFG_html_a27ac8d60de7be75e831b4a28f8f8f1d2"><div class="ttname"><a href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">SVF::VFG::addRetEdge</a></div><div class="ttdeci">VFGEdge * addRetEdge(NodeID srcId, NodeID dstId, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00583">VFG.cpp:583</a></div></div>
109
- <div class="ttc" id="classSVF_1_1VFG_html_a7b0d533f3ccce8fc64deae6077f3d959"><div class="ttname"><a href="classSVF_1_1VFG.html#a7b0d533f3ccce8fc64deae6077f3d959">SVF::VFG::addAddrVFGNode</a></div><div class="ttdeci">void addAddrVFGNode(const AddrPE *addr)</div><div class="ttdoc">Add an Address VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00486">VFG.h:486</a></div></div>
110
107
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVF::SVFStmt::Addr</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
111
108
  <div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a">SVF::VFGEdge::CallDirVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00055">VFGEdge.h:55</a></div></div>
112
109
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
113
110
  <div class="ttc" id="classSVF_1_1IntraDirSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraDirSVFGEdge.html">SVF::IntraDirSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00176">VFGEdge.h:176</a></div></div>
111
+ <div class="ttc" id="classSVF_1_1VFG_html_a77c2855e80d85ee122e3ee076402d864"><div class="ttname"><a href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">SVF::VFG::getPAGEdgeSet</a></div><div class="ttdeci">virtual PAGEdge::SVFStmtSetTy &amp; getPAGEdgeSet(PAGEdge::PEDGEK kind)</div><div class="ttdoc">Get PAGEdge set. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00430">VFG.h:430</a></div></div>
114
112
  <div class="ttc" id="classSVF_1_1CmpVFGNode_html_a166ac2df82ebfcb77d50b71ce573e1eb"><div class="ttname"><a href="classSVF_1_1CmpVFGNode.html#a166ac2df82ebfcb77d50b71ce573e1eb">SVF::CmpVFGNode::getValue</a></div><div class="ttdeci">const Value * getValue() const override</div><div class="ttdoc">Return the corresponding LLVM value, if possible, nullptr otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00924">VFG.cpp:924</a></div></div>
115
113
  <div class="ttc" id="classSVF_1_1GepVFGNode_html_ad27376633c939952878d5d73621ec638"><div class="ttname"><a href="classSVF_1_1GepVFGNode.html#ad27376633c939952878d5d73621ec638">SVF::GepVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00134">VFG.cpp:134</a></div></div>
116
114
  <div class="ttc" id="classSVF_1_1CopyVFGNode_html"><div class="ttname"><a href="classSVF_1_1CopyVFGNode.html">SVF::CopyVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00274">VFGNode.h:274</a></div></div>
117
115
  <div class="ttc" id="classSVF_1_1GenericNode_html_a0931220d7a38e03f206cbdc6465d32ad"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">SVF::GenericNode::hasOutgoingEdge</a></div><div class="ttdeci">bool hasOutgoingEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00194">GenericGraph.h:194</a></div></div>
118
116
  <div class="ttc" id="classSVF_1_1PHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html">SVF::PHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00624">VFGNode.h:624</a></div></div>
117
+ <div class="ttc" id="classSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00178">SVFStatements.h:178</a></div></div>
119
118
  <div class="ttc" id="classSVF_1_1Options_html_a153d42a480ef1763ad59fd7258ac3ac5"><div class="ttname"><a href="classSVF_1_1Options.html#a153d42a480ef1763ad59fd7258ac3ac5">SVF::Options::EnableThreadCallGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; EnableThreadCallGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00141">Options.h:141</a></div></div>
120
119
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4_html_a0ae94170a4f95bfc7e89d0149ff67882"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a0ae94170a4f95bfc7e89d0149ff67882">llvm::DOTGraphTraits&lt; VFG * &gt;::DOTGraphTraits</a></div><div class="ttdeci">DOTGraphTraits(bool isSimple=false)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00950">VFG.cpp:950</a></div></div>
121
120
  <div class="ttc" id="classSVF_1_1VFG_html_aee3d0c4ed32bde425f33281f248b7dd2"><div class="ttname"><a href="classSVF_1_1VFG.html#aee3d0c4ed32bde425f33281f248b7dd2">SVF::VFG::dump</a></div><div class="ttdeci">void dump(const std::string &amp;file, bool simple=false)</div><div class="ttdoc">Dump graph into dot file. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00782">VFG.cpp:782</a></div></div>
122
- <div class="ttc" id="classSVF_1_1SVFVar_html_ab6cfd409bdb445cc1a7e50ed958b7d25"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ab6cfd409bdb445cc1a7e50ed958b7d25">SVF::SVFVar::getIncomingEdgesEnd</a></div><div class="ttdeci">SVFStmt::PAGEdgeSetTy::iterator getIncomingEdgesEnd(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Get incoming SVFStmt iterator. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00202">SVFVariables.h:202</a></div></div>
123
121
  <div class="ttc" id="VFG_8h_html"><div class="ttname"><a href="VFG_8h.html">VFG.h</a></div></div>
124
122
  <div class="ttc" id="classSVF_1_1GepVFGNode_html"><div class="ttname"><a href="classSVF_1_1GepVFGNode.html">SVF::GepVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00585">VFGNode.h:585</a></div></div>
125
- <div class="ttc" id="classSVF_1_1SVFIR_html_a432e99757dfe844fd8450f2ab4ff4093"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a432e99757dfe844fd8450f2ab4ff4093">SVF::SVFIR::getCallSiteArgsList</a></div><div class="ttdeci">const PAGNodeList &amp; getCallSiteArgsList(const CallBlockNode *cs) const</div><div class="ttdoc">Get callsite argument list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00243">SVFIR.h:243</a></div></div>
126
123
  <div class="ttc" id="classSVF_1_1VFG_html_aead3b463d9aa2fae5845d97896bd18ba"><div class="ttname"><a href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba">SVF::VFG::hasThreadVFGEdge</a></div><div class="ttdeci">VFGEdge * hasThreadVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00738">VFG.cpp:738</a></div></div>
127
- <div class="ttc" id="classSVF_1_1SVFIR_html_a615c056c876b59d1fd174a2ac9ade27c"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c">SVF::SVFIR::getFunArgsMap</a></div><div class="ttdeci">FunToArgsListMap &amp; getFunArgsMap()</div><div class="ttdoc">Get function arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00221">SVFIR.h:221</a></div></div>
124
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a615c056c876b59d1fd174a2ac9ade27c"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c">SVF::SVFIR::getFunArgsMap</a></div><div class="ttdeci">FunToArgsListMap &amp; getFunArgsMap()</div><div class="ttdoc">Get function arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00220">SVFIR.h:220</a></div></div>
128
125
  <div class="ttc" id="classSVF_1_1VFG_html_a0b71873131a63eb6ee47ed2f66e3154a"><div class="ttname"><a href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">SVF::VFG::isInterestedPAGNode</a></div><div class="ttdeci">virtual bool isInterestedPAGNode(const PAGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00438">VFG.h:438</a></div></div>
129
126
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
130
- <div class="ttc" id="classSVF_1_1SVFVar_html_adec782d2f9d055b0dbcb56f511e75c24"><div class="ttname"><a href="classSVF_1_1SVFVar.html#adec782d2f9d055b0dbcb56f511e75c24">SVF::SVFVar::getOutgoingEdgesEnd</a></div><div class="ttdeci">SVFStmt::PAGEdgeSetTy::iterator getOutgoingEdgesEnd(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Get outgoing SVFStmt iterator. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00228">SVFVariables.h:228</a></div></div>
131
- <div class="ttc" id="classSVF_1_1SVFIR_html_a346b9300ad16ef65e3ab4e11f88193a7"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">SVF::SVFIR::getCallSiteArgsMap</a></div><div class="ttdeci">CSToArgsListMap &amp; getCallSiteArgsMap()</div><div class="ttdoc">Get callsite argument list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00238">SVFIR.h:238</a></div></div>
127
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a346b9300ad16ef65e3ab4e11f88193a7"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">SVF::SVFIR::getCallSiteArgsMap</a></div><div class="ttdeci">CSToArgsListMap &amp; getCallSiteArgsMap()</div><div class="ttdoc">Get callsite argument list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00237">SVFIR.h:237</a></div></div>
132
128
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
133
129
  <div class="ttc" id="classSVF_1_1ICFGNode_html_ae526280cca2d6cbb2868c80461bc16da"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">SVF::ICFGNode::getFun</a></div><div class="ttdeci">virtual const SVFFunction * getFun() const</div><div class="ttdoc">Return the function of this ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00080">ICFGNode.h:80</a></div></div>
134
130
  <div class="ttc" id="classSVF_1_1BranchVFGNode_html_a131fe96308f67b307ea08e645b019e13"><div class="ttname"><a href="classSVF_1_1BranchVFGNode.html#a131fe96308f67b307ea08e645b019e13">SVF::BranchVFGNode::toString</a></div><div class="ttdeci">virtual const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00125">VFG.cpp:125</a></div></div>
135
- <div class="ttc" id="classSVF_1_1VFG_html_a51b3b232ddda0656bfe0c7d9527b4a84"><div class="ttname"><a href="classSVF_1_1VFG.html#a51b3b232ddda0656bfe0c7d9527b4a84">SVF::VFG::addGepVFGNode</a></div><div class="ttdeci">void addGepVFGNode(const GepPE *gep)</div><div class="ttdoc">Add a Gep VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00500">VFG.h:500</a></div></div>
136
- <div class="ttc" id="classSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00107">SVFIR.h:107</a></div></div>
131
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00106">SVFIR.h:106</a></div></div>
137
132
  <div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">SVF::VFGEdge::VFGEdgeK</a></div><div class="ttdeci">VFGEdgeK</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00051">VFGEdge.h:51</a></div></div>
138
133
  <div class="ttc" id="classSVF_1_1AddrVFGNode_html_ac26fbce400355f43fdc22ad88a8d9067"><div class="ttname"><a href="classSVF_1_1AddrVFGNode.html#ac26fbce400355f43fdc22ad88a8d9067">SVF::AddrVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00175">VFG.cpp:175</a></div></div>
139
134
  <div class="ttc" id="classSVF_1_1VFGEdge_html_a30c07e8afb0853d4b46cfa722d912650"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a30c07e8afb0853d4b46cfa722d912650">SVF::VFGEdge::makeEdgeFlagWithInvokeID</a></div><div class="ttdeci">static GEdgeFlag makeEdgeFlagWithInvokeID(GEdgeKind k, CallSiteID cs)</div><div class="ttdoc">Compute the unique edgeFlag value from edge kind and CallSiteID. </div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00120">VFGEdge.h:120</a></div></div>
135
+ <div class="ttc" id="classSVF_1_1VFG_html_a6a1435f8ac7f74cc81608839fa3da3df"><div class="ttname"><a href="classSVF_1_1VFG.html#a6a1435f8ac7f74cc81608839fa3da3df">SVF::VFG::addIntraPHIVFGNode</a></div><div class="ttdeci">void addIntraPHIVFGNode(const PhiStmt *edge)</div><div class="ttdoc">Add an llvm PHI VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00572">VFG.h:572</a></div></div>
140
136
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4_html_a57d4a186a0319b73d69752564bf25b2a"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a57d4a186a0319b73d69752564bf25b2a">llvm::DOTGraphTraits&lt; VFG * &gt;::getNodeAttributes</a></div><div class="ttdeci">static std::string getNodeAttributes(NodeType *node, VFG *)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l01076">VFG.cpp:1076</a></div></div>
141
137
  <div class="ttc" id="classSVF_1_1FormalRetVFGNode_html_a0155a71f08dfb1fb43f054084b2380c6"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html#a0155a71f08dfb1fb43f054084b2380c6">SVF::FormalRetVFGNode::FormalRetVFGNode</a></div><div class="ttdeci">FormalRetVFGNode()</div><div class="ttdoc">place holder </div></div>
142
138
  <div class="ttc" id="classSVF_1_1PHIVFGNode_html_add1ed5dfc7fbb095e2bdb7ff1e2658ef"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html#add1ed5dfc7fbb095e2bdb7ff1e2658ef">SVF::PHIVFGNode::PHIVFGNode</a></div><div class="ttdeci">PHIVFGNode(NodeID id, const PAGNode *r, VFGNodeK k=TPhi)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00295">VFG.cpp:295</a></div></div>
143
- <div class="ttc" id="classSVF_1_1VFG_html_afd664fad8aec173f4ed6c4aa588e5c46"><div class="ttname"><a href="classSVF_1_1VFG.html#afd664fad8aec173f4ed6c4aa588e5c46">SVF::VFG::addCopyVFGNode</a></div><div class="ttdeci">void addCopyVFGNode(const CopyPE *copy)</div><div class="ttdoc">Add a Copy VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00493">VFG.h:493</a></div></div>
144
- <div class="ttc" id="classSVF_1_1VFG_html_ae746db691e5c96dff1d590b109bffb7f"><div class="ttname"><a href="classSVF_1_1VFG.html#ae746db691e5c96dff1d590b109bffb7f">SVF::VFG::addUnaryOPVFGNode</a></div><div class="ttdeci">void addUnaryOPVFGNode(const UnaryOPPE *edge)</div><div class="ttdoc">Add a UnaryOperator VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00614">VFG.h:614</a></div></div>
145
- <div class="ttc" id="classSVF_1_1VFG_html_a37239391028cd313eab7110626444682"><div class="ttname"><a href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">SVF::VFG::getPAGEdgeSet</a></div><div class="ttdeci">virtual PAGEdge::PAGEdgeSetTy &amp; getPAGEdgeSet(PAGEdge::PEDGEK kind)</div><div class="ttdoc">Get PAGEdge set. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00430">VFG.h:430</a></div></div>
146
139
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a6b3a8902fc2aa68428e271012861a2a2"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3a8902fc2aa68428e271012861a2a2">SVF::SVFStmt::VariantGep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
147
140
  <div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191">SVF::VFGEdge::RetDirVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00056">VFGEdge.h:56</a></div></div>
148
141
  <div class="ttc" id="classSVF_1_1CallDirSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallDirSVFGEdge.html">SVF::CallDirSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00211">VFGEdge.h:211</a></div></div>
149
- <div class="ttc" id="classSVF_1_1TDJoinPE_html"><div class="ttname"><a href="classSVF_1_1TDJoinPE.html">SVF::TDJoinPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00935">SVFStatements.h:935</a></div></div>
142
+ <div class="ttc" id="classSVF_1_1TDJoinPE_html"><div class="ttname"><a href="classSVF_1_1TDJoinPE.html">SVF::TDJoinPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00940">SVFStatements.h:940</a></div></div>
150
143
  <div class="ttc" id="classSVF_1_1SVFVar_html_a3b61042079a6c9dc395f38925c6a1271"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">SVF::SVFVar::isPointer</a></div><div class="ttdeci">virtual bool isPointer() const</div><div class="ttdoc">Whether it is a pointer. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00115">SVFVariables.h:115</a></div></div>
151
144
  <div class="ttc" id="classSVF_1_1VFG_html_afdb1560eecf692fb646d412dc760088d"><div class="ttname"><a href="classSVF_1_1VFG.html#afdb1560eecf692fb646d412dc760088d">SVF::VFG::addFormalParmVFGNode</a></div><div class="ttdeci">void addFormalParmVFGNode(const PAGNode *fparm, const SVFFunction *fun, CallPESet &amp;callPEs)</div><div class="ttdoc">Add a formal parameter VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00532">VFG.h:532</a></div></div>
145
+ <div class="ttc" id="classSVF_1_1UnaryOPStmt_html_a919db9b8c9287c3802f563840b56c4f1"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1">SVF::UnaryOPStmt::getRes</a></div><div class="ttdeci">const SVFVar * getRes() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00520">SVFStatements.h:520</a></div></div>
152
146
  <div class="ttc" id="classSVF_1_1VFG_html_adedaba0713164e10ce6273b2947535e0"><div class="ttname"><a href="classSVF_1_1VFG.html#adedaba0713164e10ce6273b2947535e0">SVF::VFG::connectDirectVFGEdges</a></div><div class="ttdeci">void connectDirectVFGEdges()</div><div class="ttdoc">Create edges between VFG nodes within a function. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00603">VFG.cpp:603</a></div></div>
153
147
  <div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
154
148
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVF::SVFStmt::Copy</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
@@ -156,22 +150,20 @@ $(function() {
156
150
  <div class="ttc" id="classSVF_1_1MRSVFGNode_html"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html">SVF::MRSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00042">SVFGNode.h:42</a></div></div>
157
151
  <div class="ttc" id="classSVF_1_1UnaryOPVFGNode_html"><div class="ttname"><a href="classSVF_1_1UnaryOPVFGNode.html">SVF::UnaryOPVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00459">VFGNode.h:459</a></div></div>
158
152
  <div class="ttc" id="classSVF_1_1CmpVFGNode_html"><div class="ttname"><a href="classSVF_1_1CmpVFGNode.html">SVF::CmpVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00315">VFGNode.h:315</a></div></div>
159
- <div class="ttc" id="classSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00793">SVFStatements.h:793</a></div></div>
153
+ <div class="ttc" id="classSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00798">SVFStatements.h:798</a></div></div>
154
+ <div class="ttc" id="classSVF_1_1UnaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00479">SVFStatements.h:479</a></div></div>
160
155
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVF::SVFStmt::Ret</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
161
156
  <div class="ttc" id="classSVF_1_1VFG_html_a0c0a7c8f0bd27bc9e88ce54c0809b11b"><div class="ttname"><a href="classSVF_1_1VFG.html#a0c0a7c8f0bd27bc9e88ce54c0809b11b">SVF::VFG::updateCallGraph</a></div><div class="ttdeci">void updateCallGraph(PointerAnalysis *pta)</div><div class="ttdoc">Update VFG based on pointer analysis results. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00796">VFG.cpp:796</a></div></div>
162
157
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
163
- <div class="ttc" id="classSVF_1_1SVFIR_html_abd1bb12776dc9a17863a52ce2cd31958"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958">SVF::SVFIR::getFunRets</a></div><div class="ttdeci">FunToRetMap &amp; getFunRets()</div><div class="ttdoc">Get function return list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00266">SVFIR.h:266</a></div></div>
164
- <div class="ttc" id="classSVF_1_1VFG_html_ab4166804d4612c1cf194d1d8710c09a6"><div class="ttname"><a href="classSVF_1_1VFG.html#ab4166804d4612c1cf194d1d8710c09a6">SVF::VFG::addCmpVFGNode</a></div><div class="ttdeci">void addCmpVFGNode(const CmpPE *edge)</div><div class="ttdoc">Add a Compare VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00586">VFG.h:586</a></div></div>
165
- <div class="ttc" id="classSVF_1_1VFG_html_aa21ad616306c111b77fb3ec8f16b19be"><div class="ttname"><a href="classSVF_1_1VFG.html#aa21ad616306c111b77fb3ec8f16b19be">SVF::VFG::addStoreVFGNode</a></div><div class="ttdeci">void addStoreVFGNode(const StorePE *store)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00515">VFG.h:515</a></div></div>
158
+ <div class="ttc" id="classSVF_1_1SVFIR_html_abd1bb12776dc9a17863a52ce2cd31958"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958">SVF::SVFIR::getFunRets</a></div><div class="ttdeci">FunToRetMap &amp; getFunRets()</div><div class="ttdoc">Get function return list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00265">SVFIR.h:265</a></div></div>
166
159
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">SVF::SVFStmt::Branch</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
167
- <div class="ttc" id="classSVF_1_1VFG_html_afb440e02353766c2a2541005dd29fb24"><div class="ttname"><a href="classSVF_1_1VFG.html#afb440e02353766c2a2541005dd29fb24">SVF::VFG::addBinaryOPVFGNode</a></div><div class="ttdeci">void addBinaryOPVFGNode(const BinaryOPPE *edge)</div><div class="ttdoc">Add a BinaryOperator VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00600">VFG.h:600</a></div></div>
168
- <div class="ttc" id="classSVF_1_1CallPE_html_a6a7a917cd6f1235b9453c9672f38c0ef"><div class="ttname"><a href="classSVF_1_1CallPE.html#a6a7a917cd6f1235b9453c9672f38c0ef">SVF::CallPE::getCallSite</a></div><div class="ttdeci">const CallBlockNode * getCallSite() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00832">SVFStatements.h:832</a></div></div>
160
+ <div class="ttc" id="classSVF_1_1CallPE_html_a6a7a917cd6f1235b9453c9672f38c0ef"><div class="ttname"><a href="classSVF_1_1CallPE.html#a6a7a917cd6f1235b9453c9672f38c0ef">SVF::CallPE::getCallSite</a></div><div class="ttdeci">const CallBlockNode * getCallSite() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00837">SVFStatements.h:837</a></div></div>
169
161
  <div class="ttc" id="classSVF_1_1VFG_html_af5005136743913d760d7402bbd308c69"><div class="ttname"><a href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69">SVF::VFG::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00321">VFG.cpp:321</a></div></div>
162
+ <div class="ttc" id="classSVF_1_1VFG_html_ac79516fc4d9136241d708f9df5c73262"><div class="ttname"><a href="classSVF_1_1VFG.html#ac79516fc4d9136241d708f9df5c73262">SVF::VFG::addBinaryOPVFGNode</a></div><div class="ttdeci">void addBinaryOPVFGNode(const BinaryOPStmt *edge)</div><div class="ttdoc">Add a BinaryOperator VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00600">VFG.h:600</a></div></div>
170
163
  <div class="ttc" id="classSVF_1_1FormalParmVFGNode_html_ac4e695d6ee7bb7c5ed4e273567e7c1cc"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html#ac4e695d6ee7bb7c5ed4e273567e7c1cc">SVF::FormalParmVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00203">VFG.cpp:203</a></div></div>
171
164
  <div class="ttc" id="classSVF_1_1StmtVFGNode_html_aa5011ff12de490146ab106e90d0b6ad8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#aa5011ff12de490146ab106e90d0b6ad8">SVF::StmtVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00047">VFG.cpp:47</a></div></div>
172
165
  <div class="ttc" id="classSVF_1_1PHIVFGNode_html_a7fb9cbed3718922cd81b18d069c79aea"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html#a7fb9cbed3718922cd81b18d069c79aea">SVF::PHIVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00143">VFG.cpp:143</a></div></div>
173
166
  <div class="ttc" id="classSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00338">GenericGraph.h:338</a></div></div>
174
- <div class="ttc" id="classSVF_1_1UnaryOPPE_html_a80eb6a6681caf7407d7e16b36d7cb658"><div class="ttname"><a href="classSVF_1_1UnaryOPPE.html#a80eb6a6681caf7407d7e16b36d7cb658">SVF::UnaryOPPE::getRes</a></div><div class="ttdeci">const SVFVar * getRes() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00515">SVFStatements.h:515</a></div></div>
175
167
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
176
168
  <div class="ttc" id="classSVF_1_1VFG_html_a8994194bca2edfd9528880390de795ab"><div class="ttname"><a href="classSVF_1_1VFG.html#a8994194bca2edfd9528880390de795ab">SVF::VFG::isFunEntryVFGNode</a></div><div class="ttdeci">const SVFFunction * isFunEntryVFGNode(const VFGNode *node) const</div><div class="ttdoc">Whether a node is function entry VFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00905">VFG.cpp:905</a></div></div>
177
169
  <div class="ttc" id="classSVF_1_1VFGNode_html_a0342b5a6f270f4ff0e8e2a9b0082c6c5"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a0342b5a6f270f4ff0e8e2a9b0082c6c5">SVF::VFGNode::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00040">VFG.cpp:40</a></div></div>
@@ -179,17 +171,19 @@ $(function() {
179
171
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4_html_aaedec44d41a6e36c9e5db804e4a005dd"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#aaedec44d41a6e36c9e5db804e4a005dd">llvm::DOTGraphTraits&lt; VFG * &gt;::getGraphName</a></div><div class="ttdeci">static std::string getGraphName(VFG *)</div><div class="ttdoc">Return name of the graph. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00956">VFG.cpp:956</a></div></div>
180
172
  <div class="ttc" id="classSVF_1_1PTACallGraph_html"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html">SVF::PTACallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00218">PTACallGraph.h:218</a></div></div>
181
173
  <div class="ttc" id="classSVF_1_1VFGEdge_html_a8f4bec008af7cd1a89870715eaa91a7b"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a8f4bec008af7cd1a89870715eaa91a7b">SVF::VFGEdge::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00251">VFG.cpp:251</a></div></div>
182
- <div class="ttc" id="classSVF_1_1SVFVar_html_ab137b1def56c6539b5048c84dfd92c7b"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ab137b1def56c6539b5048c84dfd92c7b">SVF::SVFVar::getIncomingEdgesBegin</a></div><div class="ttdeci">SVFStmt::PAGEdgeSetTy::iterator getIncomingEdgesBegin(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Get incoming SVFStmt iterator. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00194">SVFVariables.h:194</a></div></div>
183
174
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4_html_a6ced6b5b50d920fb47c4334693fea86c"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a6ced6b5b50d920fb47c4334693fea86c">llvm::DOTGraphTraits&lt; VFG * &gt;::getCompleteNodeLabel</a></div><div class="ttdeci">static std::string getCompleteNodeLabel(NodeType *node, VFG *)</div><div class="ttdoc">Return label of a VFG node with MemSSA information. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l01021">VFG.cpp:1021</a></div></div>
175
+ <div class="ttc" id="classSVF_1_1VFG_html_a6c2280052b44ff7029cf4b98712c374b"><div class="ttname"><a href="classSVF_1_1VFG.html#a6c2280052b44ff7029cf4b98712c374b">SVF::VFG::addCmpVFGNode</a></div><div class="ttdeci">void addCmpVFGNode(const CmpStmt *edge)</div><div class="ttdoc">Add a Compare VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00586">VFG.h:586</a></div></div>
184
176
  <div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
185
177
  <div class="ttc" id="classSVF_1_1StoreVFGNode_html_aba7e8b8329caf412a55f5880f68414fe"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html#aba7e8b8329caf412a55f5880f68414fe">SVF::StoreVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00064">VFG.cpp:64</a></div></div>
186
178
  <div class="ttc" id="classSVF_1_1VFG_html_ab4e8ab307ad6beb46812a60ebd31ae3b"><div class="ttname"><a href="classSVF_1_1VFG.html#ab4e8ab307ad6beb46812a60ebd31ae3b">SVF::VFG::connectFRetAndARet</a></div><div class="ttdeci">virtual void connectFRetAndARet(const PAGNode *funReturn, const PAGNode *csReturn, CallSiteID csId, VFGEdgeSetTy &amp;edges)</div><div class="ttdoc">Connect formal-ret and actual ret. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00389">VFG.h:389</a></div></div>
187
- <div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00528">SVFStatements.h:528</a></div></div>
179
+ <div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00533">SVFStatements.h:533</a></div></div>
188
180
  <div class="ttc" id="classSVF_1_1VFG_html_aa1e09df7b3724bf18e450b16735998ab"><div class="ttname"><a href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab">SVF::VFG::connectCallerAndCallee</a></div><div class="ttdeci">virtual void connectCallerAndCallee(const CallBlockNode *cs, const SVFFunction *callee, VFGEdgeSetTy &amp;edges)</div><div class="ttdoc">Connect VFG nodes between caller and callee for indirect call site. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00818">VFG.cpp:818</a></div></div>
189
181
  <div class="ttc" id="classSVF_1_1RetBlockNode_html"><div class="ttname"><a href="classSVF_1_1RetBlockNode.html">SVF::RetBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00459">ICFGNode.h:459</a></div></div>
190
182
  <div class="ttc" id="classSVF_1_1VFG_html_a0b072e8e45899b89da0a466140563c38"><div class="ttname"><a href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38">SVF::VFG::getActualRetVFGNode</a></div><div class="ttdeci">ActualRetVFGNode * getActualRetVFGNode(const PAGNode *aret) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00241">VFG.h:241</a></div></div>
191
183
  <div class="ttc" id="classSVF_1_1VFG_html_acbc1f5ae3b9016b1ce97314a2b8b54c0"><div class="ttname"><a href="classSVF_1_1VFG.html#acbc1f5ae3b9016b1ce97314a2b8b54c0">SVF::VFG::connectAParamAndFParam</a></div><div class="ttdeci">virtual void connectAParamAndFParam(const PAGNode *csArg, const PAGNode *funArg, const CallBlockNode *cbn, CallSiteID csId, VFGEdgeSetTy &amp;edges)</div><div class="ttdoc">Connect VFG nodes between caller and callee for indirect call site. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00380">VFG.h:380</a></div></div>
192
- <div class="ttc" id="classSVF_1_1BranchStmt_html_a2c6fe09027838f9e0ad9ab8193ce8e9b"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">SVF::BranchStmt::getBranchInst</a></div><div class="ttdeci">const SVFVar * getBranchInst() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00570">SVFStatements.h:570</a></div></div>
184
+ <div class="ttc" id="classSVF_1_1SVFVar_html_aa5176fce9746bc585d43ebb4c8c824e5"><div class="ttname"><a href="classSVF_1_1SVFVar.html#aa5176fce9746bc585d43ebb4c8c824e5">SVF::SVFVar::getOutgoingEdgesEnd</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy::iterator getOutgoingEdgesEnd(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Get outgoing SVFStmt iterator. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00228">SVFVariables.h:228</a></div></div>
185
+ <div class="ttc" id="classSVF_1_1PhiStmt_html"><div class="ttname"><a href="classSVF_1_1PhiStmt.html">SVF::PhiStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00333">SVFStatements.h:333</a></div></div>
186
+ <div class="ttc" id="classSVF_1_1BranchStmt_html_a2c6fe09027838f9e0ad9ab8193ce8e9b"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">SVF::BranchStmt::getBranchInst</a></div><div class="ttdeci">const SVFVar * getBranchInst() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00575">SVFStatements.h:575</a></div></div>
193
187
  <div class="ttc" id="SVFGNode_8h_html"><div class="ttname"><a href="SVFGNode_8h.html">SVFGNode.h</a></div></div>
194
188
  <div class="ttc" id="classSVF_1_1VFG_html_a3c97d77bc0348471d6c098d5655f15b2"><div class="ttname"><a href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">SVF::VFG::addIntraDirectVFEdge</a></div><div class="ttdeci">VFGEdge * addIntraDirectVFEdge(NodeID srcId, NodeID dstId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00540">VFG.cpp:540</a></div></div>
195
189
  <div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00083">SVFBasicTypes.h:83</a></div></div>
@@ -202,12 +196,14 @@ $(function() {
202
196
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4_html_afd7d2c80916a68b53814e6de593bf520"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#afd7d2c80916a68b53814e6de593bf520">llvm::DOTGraphTraits&lt; VFG * &gt;::NodeType</a></div><div class="ttdeci">VFGNode NodeType</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00949">VFG.cpp:949</a></div></div>
203
197
  <div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
204
198
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a1ca30dfa42702071b65d363c76d25cbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">SVF::PointerAnalysis::getIndCallMap</a></div><div class="ttdeci">CallEdgeMap &amp; getIndCallMap()</div><div class="ttdoc">Get callees from an indirect callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00391">PointerAnalysis.h:391</a></div></div>
199
+ <div class="ttc" id="classSVF_1_1VFG_html_a49d35213a281859ca64398760c485a85"><div class="ttname"><a href="classSVF_1_1VFG.html#a49d35213a281859ca64398760c485a85">SVF::VFG::addCopyVFGNode</a></div><div class="ttdeci">void addCopyVFGNode(const CopyStmt *copy)</div><div class="ttdoc">Add a Copy VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00493">VFG.h:493</a></div></div>
205
200
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVF::SVFStmt::ThreadJoin</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
206
- <div class="ttc" id="classSVF_1_1CmpPE_html"><div class="ttname"><a href="classSVF_1_1CmpPE.html">SVF::CmpPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00374">SVFStatements.h:374</a></div></div>
201
+ <div class="ttc" id="classSVF_1_1VFG_html_a4fb321fb0ff2a06c1065506552b862aa"><div class="ttname"><a href="classSVF_1_1VFG.html#a4fb321fb0ff2a06c1065506552b862aa">SVF::VFG::addGepVFGNode</a></div><div class="ttdeci">void addGepVFGNode(const GepStmt *gep)</div><div class="ttdoc">Add a Gep VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00500">VFG.h:500</a></div></div>
207
202
  <div class="ttc" id="classSVF_1_1IntraPHIVFGNode_html_a145413d87e9174b5eb70b871b9dfa13e"><div class="ttname"><a href="classSVF_1_1IntraPHIVFGNode.html#a145413d87e9174b5eb70b871b9dfa13e">SVF::IntraPHIVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00159">VFG.cpp:159</a></div></div>
208
203
  <div class="ttc" id="classSVF_1_1LoadVFGNode_html"><div class="ttname"><a href="classSVF_1_1LoadVFGNode.html">SVF::LoadVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00196">VFGNode.h:196</a></div></div>
209
- <div class="ttc" id="classSVF_1_1SVFIR_html_ac359813747b4f75920c5f395ba74f410"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">SVF::SVFIR::hasFunArgsList</a></div><div class="ttdeci">bool hasFunArgsList(const SVFFunction *func) const</div><div class="ttdoc">Function has arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00216">SVFIR.h:216</a></div></div>
204
+ <div class="ttc" id="classSVF_1_1SVFIR_html_ac359813747b4f75920c5f395ba74f410"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">SVF::SVFIR::hasFunArgsList</a></div><div class="ttdeci">bool hasFunArgsList(const SVFFunction *func) const</div><div class="ttdoc">Function has arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00215">SVFIR.h:215</a></div></div>
210
205
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00388">SVFUtil.cpp:388</a></div></div>
206
+ <div class="ttc" id="classSVF_1_1SVFIR_html_aa148e3e14ebad8460e32079f2f44413a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a">SVF::SVFIR::getFunArgsList</a></div><div class="ttdeci">const SVFVarList &amp; getFunArgsList(const SVFFunction *func) const</div><div class="ttdoc">Get function arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00225">SVFIR.h:225</a></div></div>
211
207
  <div class="ttc" id="classSVF_1_1NullPtrVFGNode_html_a75c8b89a34bfd89a4af2c699cdb626b9"><div class="ttname"><a href="classSVF_1_1NullPtrVFGNode.html#a75c8b89a34bfd89a4af2c699cdb626b9">SVF::NullPtrVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00242">VFG.cpp:242</a></div></div>
212
208
  <div class="ttc" id="classSVF_1_1ArgumentVFGNode_html_a3c10cd63e18f79ccc66f4687d05cb8c5"><div class="ttname"><a href="classSVF_1_1ArgumentVFGNode.html#a3c10cd63e18f79ccc66f4687d05cb8c5">SVF::ArgumentVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00184">VFG.cpp:184</a></div></div>
213
209
  <div class="ttc" id="classSVF_1_1ActualParmVFGNode_html_a60d6ce4c4fe2cf54be45e58b2b93c9f6"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html#a60d6ce4c4fe2cf54be45e58b2b93c9f6">SVF::ActualParmVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00193">VFG.cpp:193</a></div></div>
@@ -216,82 +212,86 @@ $(function() {
216
212
  <div class="ttc" id="classSVF_1_1VFG_html_a6fd24c001a6daedf591974ba27140461"><div class="ttname"><a href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">SVF::VFG::addInterEdgeFromAPToFP</a></div><div class="ttdeci">VFGEdge * addInterEdgeFromAPToFP(ActualParmVFGNode *src, FormalParmVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from actual to formal parameters. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00356">VFG.h:356</a></div></div>
217
213
  <div class="ttc" id="classSVF_1_1FormalRetVFGNode_html_ab1ae2339d7408d9156cdfe5ab4559e66"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html#ab1ae2339d7408d9156cdfe5ab4559e66">SVF::FormalRetVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00222">VFG.cpp:222</a></div></div>
218
214
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ac2089ffeab3f27354b2094758c805746"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ac2089ffeab3f27354b2094758c805746">SVF::SVFStmt::NormalGep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
219
- <div class="ttc" id="classSVF_1_1VFG_html_adbd7966d18ab50da5a485ba6e043ba61"><div class="ttname"><a href="classSVF_1_1VFG.html#adbd7966d18ab50da5a485ba6e043ba61">SVF::VFG::addLoadVFGNode</a></div><div class="ttdeci">void addLoadVFGNode(const LoadPE *load)</div><div class="ttdoc">Add a Load VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00507">VFG.h:507</a></div></div>
220
215
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
221
- <div class="ttc" id="classSVF_1_1TDForkPE_html"><div class="ttname"><a href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00897">SVFStatements.h:897</a></div></div>
216
+ <div class="ttc" id="classSVF_1_1TDForkPE_html"><div class="ttname"><a href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00902">SVFStatements.h:902</a></div></div>
222
217
  <div class="ttc" id="classSVF_1_1ActualRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualRetVFGNode.html">SVF::ActualRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00948">VFGNode.h:948</a></div></div>
223
218
  <div class="ttc" id="classSVF_1_1BinaryOPVFGNode_html_aa743cf19c5dc91dbb0c7b8981fecc6c4"><div class="ttname"><a href="classSVF_1_1BinaryOPVFGNode.html#aa743cf19c5dc91dbb0c7b8981fecc6c4">SVF::BinaryOPVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00095">VFG.cpp:95</a></div></div>
224
219
  <div class="ttc" id="classSVF_1_1VFG_html_a18afc4baf33eb700e0510928016019f5"><div class="ttname"><a href="classSVF_1_1VFG.html#a18afc4baf33eb700e0510928016019f5">SVF::VFG::addBranchVFGNode</a></div><div class="ttdeci">void addBranchVFGNode(const BranchStmt *edge)</div><div class="ttdoc">Add a BranchVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00623">VFG.h:623</a></div></div>
225
220
  <div class="ttc" id="classSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00046">ICFG.h:46</a></div></div>
226
221
  <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
227
- <div class="ttc" id="classSVF_1_1SVFIR_html_afe8274c3b7317fccef5314662a182046"><div class="ttname"><a href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046">SVF::SVFIR::funHasRet</a></div><div class="ttdeci">bool funHasRet(const SVFFunction *func) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00277">SVFIR.h:277</a></div></div>
228
- <div class="ttc" id="classSVF_1_1SVFIR_html_a1cac93c15fcbf15798c4fe374380f8ae"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1cac93c15fcbf15798c4fe374380f8ae">SVF::SVFIR::getFunArgsList</a></div><div class="ttdeci">const PAGNodeList &amp; getFunArgsList(const SVFFunction *func) const</div><div class="ttdoc">Get function arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00226">SVFIR.h:226</a></div></div>
222
+ <div class="ttc" id="classSVF_1_1SVFIR_html_afe8274c3b7317fccef5314662a182046"><div class="ttname"><a href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046">SVF::SVFIR::funHasRet</a></div><div class="ttdeci">bool funHasRet(const SVFFunction *func) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00276">SVFIR.h:276</a></div></div>
229
223
  <div class="ttc" id="classSVF_1_1VFG_html_ab5b63b4f6317bfb5875f2b977bcf26a4"><div class="ttname"><a href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">SVF::VFG::hasDef</a></div><div class="ttdeci">bool hasDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00420">VFG.h:420</a></div></div>
230
224
  <div class="ttc" id="classSVF_1_1ActualRetVFGNode_html_a4d1e7df32604becd2e2b60fe2e5cfbfa"><div class="ttname"><a href="classSVF_1_1ActualRetVFGNode.html#a4d1e7df32604becd2e2b60fe2e5cfbfa">SVF::ActualRetVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00212">VFG.cpp:212</a></div></div>
231
225
  <div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
226
+ <div class="ttc" id="classSVF_1_1VFG_html_a373e7066630719ffb7c62681f2c2a74e"><div class="ttname"><a href="classSVF_1_1VFG.html#a373e7066630719ffb7c62681f2c2a74e">SVF::VFG::addLoadVFGNode</a></div><div class="ttdeci">void addLoadVFGNode(const LoadStmt *load)</div><div class="ttdoc">Add a Load VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00507">VFG.h:507</a></div></div>
232
227
  <div class="ttc" id="classSVF_1_1InterPHIVFGNode_html_aff35aebdc8d955df160e51da7b666a7e"><div class="ttname"><a href="classSVF_1_1InterPHIVFGNode.html#aff35aebdc8d955df160e51da7b666a7e">SVF::InterPHIVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00232">VFG.cpp:232</a></div></div>
233
228
  <div class="ttc" id="classSVF_1_1VFG_html_a3544cc0380964f238c964a0e7b417862"><div class="ttname"><a href="classSVF_1_1VFG.html#a3544cc0380964f238c964a0e7b417862">SVF::VFG::addVFGNodes</a></div><div class="ttdeci">void addVFGNodes()</div><div class="ttdoc">Create VFG nodes. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00330">VFG.cpp:330</a></div></div>
234
229
  <div class="ttc" id="classSVF_1_1VFG_html_ae1348fd6d196ee8a6bd8d98022464d50"><div class="ttname"><a href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">SVF::VFG::getIntraVFGEdge</a></div><div class="ttdeci">VFGEdge * getIntraVFGEdge(const VFGNode *src, const VFGNode *dst, VFGEdge::VFGEdgeK kind)</div><div class="ttdoc">Get a SVFG edge according to src and dst. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00773">VFG.cpp:773</a></div></div>
235
230
  <div class="ttc" id="classSVF_1_1VFG_html_abd05b599b383c759455aff99963b7b41"><div class="ttname"><a href="classSVF_1_1VFG.html#abd05b599b383c759455aff99963b7b41">SVF::VFG::addInterEdgeFromFRToAR</a></div><div class="ttdeci">VFGEdge * addInterEdgeFromFRToAR(FormalRetVFGNode *src, ActualRetVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from callee return to callsite receive parameter. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00361">VFG.h:361</a></div></div>
236
231
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4_html_a646a1023dab5169a73c8ea54e860c78b"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a646a1023dab5169a73c8ea54e860c78b">llvm::DOTGraphTraits&lt; VFG * &gt;::getEdgeAttributes</a></div><div class="ttdeci">static std::string getEdgeAttributes(NodeType *, EdgeIter EI, VFG *)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l01163">VFG.cpp:1163</a></div></div>
237
- <div class="ttc" id="classSVF_1_1SVFIR_html_a650b3931af337a92ffcb5dad5ab47b22"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">SVF::SVFIR::getCallSiteRets</a></div><div class="ttdeci">CSToRetMap &amp; getCallSiteRets()</div><div class="ttdoc">Get callsite return. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00250">SVFIR.h:250</a></div></div>
232
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a650b3931af337a92ffcb5dad5ab47b22"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">SVF::SVFIR::getCallSiteRets</a></div><div class="ttdeci">CSToRetMap &amp; getCallSiteRets()</div><div class="ttdoc">Get callsite return. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00249">SVFIR.h:249</a></div></div>
238
233
  <div class="ttc" id="classSVF_1_1CallBlockNode_html_a285c517dfd7fee5467606663a0fdd035"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#a285c517dfd7fee5467606663a0fdd035">SVF::CallBlockNode::isIndirectCall</a></div><div class="ttdeci">bool isIndirectCall() const</div><div class="ttdoc">Return true if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00412">ICFGNode.h:412</a></div></div>
239
234
  <div class="ttc" id="classSVF_1_1UnaryOPVFGNode_html_ab748bb83004550944c6abca7150aec14"><div class="ttname"><a href="classSVF_1_1UnaryOPVFGNode.html#ab748bb83004550944c6abca7150aec14">SVF::UnaryOPVFGNode::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00110">VFG.cpp:110</a></div></div>
240
235
  <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00249">BasicTypes.h:249</a></div></div>
241
236
  <div class="ttc" id="classSVF_1_1VFG_html_a8ba98bb3d888ec5ff40f511da14b37bc"><div class="ttname"><a href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">SVF::VFG::VFG</a></div><div class="ttdeci">VFG(PTACallGraph *callgraph, VFGK k=FULLSVFG)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00308">VFG.cpp:308</a></div></div>
242
237
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVF::SVFStmt::ThreadFork</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
243
- <div class="ttc" id="classSVF_1_1SVFIR_html_a34e27b8bcfeaafda190dcdb9169a346f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">SVF::SVFIR::getFunRet</a></div><div class="ttdeci">const SVFVar * getFunRet(const SVFFunction *func) const</div><div class="ttdoc">Get function return list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00271">SVFIR.h:271</a></div></div>
238
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a34e27b8bcfeaafda190dcdb9169a346f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">SVF::SVFIR::getFunRet</a></div><div class="ttdeci">const SVFVar * getFunRet(const SVFFunction *func) const</div><div class="ttdoc">Get function return list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00270">SVFIR.h:270</a></div></div>
244
239
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVF::SVFStmt::BinaryOp</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
240
+ <div class="ttc" id="classSVF_1_1CmpStmt_html"><div class="ttname"><a href="classSVF_1_1CmpStmt.html">SVF::CmpStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00379">SVFStatements.h:379</a></div></div>
245
241
  <div class="ttc" id="classSVF_1_1LoadVFGNode_html_aad3591f38e30c5168d4accb76ac8dc04"><div class="ttname"><a href="classSVF_1_1LoadVFGNode.html#aad3591f38e30c5168d4accb76ac8dc04">SVF::LoadVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00055">VFG.cpp:55</a></div></div>
246
242
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4_html_af794115d33a8ea6f7f2e2c7ac5dd4c80"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#af794115d33a8ea6f7f2e2c7ac5dd4c80">llvm::DOTGraphTraits&lt; VFG * &gt;::getEdgeSourceLabel</a></div><div class="ttdeci">static std::string getEdgeSourceLabel(NodeType *, EdgeIter EI)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l01193">VFG.cpp:1193</a></div></div>
243
+ <div class="ttc" id="classSVF_1_1VFG_html_aca2b1493bd712bdc6618de995a81e5af"><div class="ttname"><a href="classSVF_1_1VFG.html#aca2b1493bd712bdc6618de995a81e5af">SVF::VFG::addAddrVFGNode</a></div><div class="ttdeci">void addAddrVFGNode(const AddrStmt *addr)</div><div class="ttdoc">Add an Address VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00486">VFG.h:486</a></div></div>
247
244
  <div class="ttc" id="classSVF_1_1CallBlockNode_html_ad3d50024efcfa94b1246c982b43aff2f"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">SVF::CallBlockNode::getCallSite</a></div><div class="ttdeci">const Instruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00381">ICFGNode.h:381</a></div></div>
248
245
  <div class="ttc" id="classSVF_1_1VFG_html_aa01f63b17acdd52122a7f1ade329ccea"><div class="ttname"><a href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">SVF::VFG::addCallEdge</a></div><div class="ttdeci">VFGEdge * addCallEdge(NodeID srcId, NodeID dstId, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00564">VFG.cpp:564</a></div></div>
249
246
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
250
247
  <div class="ttc" id="classSVF_1_1ICFG_html_a6d66c83cb1656d0f8ec8b8b65a9e9c41"><div class="ttname"><a href="classSVF_1_1ICFG.html#a6d66c83cb1656d0f8ec8b8b65a9e9c41">SVF::ICFG::getRetBlockNode</a></div><div class="ttdeci">RetBlockNode * getRetBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00210">ICFG.cpp:210</a></div></div>
251
248
  <div class="ttc" id="classSVF_1_1BinaryOPVFGNode_html_ad4c45bbfd044502106c41ba70f568463"><div class="ttname"><a href="classSVF_1_1BinaryOPVFGNode.html#ad4c45bbfd044502106c41ba70f568463">SVF::BinaryOPVFGNode::getValue</a></div><div class="ttdeci">const Value * getValue() const override</div><div class="ttdoc">Return the corresponding LLVM value, if possible, nullptr otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00928">VFG.cpp:928</a></div></div>
252
249
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4_html_a6470ed90c2a601b01715d02cffd90918"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#a6470ed90c2a601b01715d02cffd90918">llvm::DOTGraphTraits&lt; VFG * &gt;::getNodeLabel</a></div><div class="ttdeci">std::string getNodeLabel(NodeType *node, VFG *graph)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00961">VFG.cpp:961</a></div></div>
253
- <div class="ttc" id="classSVF_1_1BinaryOPPE_html"><div class="ttname"><a href="classSVF_1_1BinaryOPPE.html">SVF::BinaryOPPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00424">SVFStatements.h:424</a></div></div>
254
250
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVF::SVFStmt::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
255
251
  <div class="ttc" id="classSVF_1_1IntraDirSVFGEdge_html_a1c8dc17717409aa42749181aafd155aa"><div class="ttname"><a href="classSVF_1_1IntraDirSVFGEdge.html#a1c8dc17717409aa42749181aafd155aa">SVF::IntraDirSVFGEdge::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00265">VFG.cpp:265</a></div></div>
256
252
  <div class="ttc" id="classSVF_1_1VFG_html_ac34c4529229404617c346f81cc6c141f"><div class="ttname"><a href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">SVF::VFG::hasIntraVFGEdge</a></div><div class="ttdeci">VFGEdge * hasIntraVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind)</div><div class="ttdoc">Whether we has a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00720">VFG.cpp:720</a></div></div>
257
253
  <div class="ttc" id="classSVF_1_1VFG_html_a7343f970332391634f79b2023bba6650"><div class="ttname"><a href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">SVF::VFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00414">VFG.h:414</a></div></div>
258
254
  <div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00113">VFGNode.h:113</a></div></div>
255
+ <div class="ttc" id="classSVF_1_1SVFVar_html_a893890649ae7d8e275dd823e941aa39b"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a893890649ae7d8e275dd823e941aa39b">SVF::SVFVar::getIncomingEdgesBegin</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy::iterator getIncomingEdgesBegin(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Get incoming SVFStmt iterator. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00194">SVFVariables.h:194</a></div></div>
259
256
  <div class="ttc" id="SVFModule_8h_html"><div class="ttname"><a href="SVFModule_8h.html">SVFModule.h</a></div></div>
260
- <div class="ttc" id="classSVF_1_1SVFStmt_html_af02857ff13e61f81d332d83eb376bdb4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">SVF::SVFStmt::PAGEdgeSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy PAGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00178">SVFStatements.h:178</a></div></div>
261
257
  <div class="ttc" id="classSVF_1_1ArgumentVFGNode_html_aaf6a78630b0365d50dd7b4394215d3a1"><div class="ttname"><a href="classSVF_1_1ArgumentVFGNode.html#aaf6a78630b0365d50dd7b4394215d3a1">SVF::ArgumentVFGNode::getValue</a></div><div class="ttdeci">const Value * getValue() const override</div><div class="ttdoc">Return the corresponding LLVM value, if possible, nullptr otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00936">VFG.cpp:936</a></div></div>
262
258
  <div class="ttc" id="classSVF_1_1VFG_html_a1fff5a365e5aa2d99f07f7f64cc35fac"><div class="ttname"><a href="classSVF_1_1VFG.html#a1fff5a365e5aa2d99f07f7f64cc35fac">SVF::VFG::getLHSTopLevPtr</a></div><div class="ttdeci">const PAGNode * getLHSTopLevPtr(const VFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00868">VFG.cpp:868</a></div></div>
263
- <div class="ttc" id="classSVF_1_1SVFIR_html_a170bef1e9a07ce0449faf66706ae6e61"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a170bef1e9a07ce0449faf66706ae6e61">SVF::SVFIR::callsiteHasRet</a></div><div class="ttdeci">bool callsiteHasRet(const RetBlockNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00261">SVFIR.h:261</a></div></div>
259
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a170bef1e9a07ce0449faf66706ae6e61"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a170bef1e9a07ce0449faf66706ae6e61">SVF::SVFIR::callsiteHasRet</a></div><div class="ttdeci">bool callsiteHasRet(const RetBlockNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00260">SVFIR.h:260</a></div></div>
264
260
  <div class="ttc" id="classSVF_1_1FormalParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html">SVF::FormalParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00881">VFGNode.h:881</a></div></div>
265
261
  <div class="ttc" id="classSVF_1_1VFG_html_a915fa50effaeea10716b86528b15c6dc"><div class="ttname"><a href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">SVF::VFG::getVFGNode</a></div><div class="ttdeci">VFGNode * getVFGNode(NodeID id) const</div><div class="ttdoc">Get a VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00145">VFG.h:145</a></div></div>
262
+ <div class="ttc" id="classSVF_1_1VFG_html_a65c88a6c20380b715ac8b6c31e68afed"><div class="ttname"><a href="classSVF_1_1VFG.html#a65c88a6c20380b715ac8b6c31e68afed">SVF::VFG::addUnaryOPVFGNode</a></div><div class="ttdeci">void addUnaryOPVFGNode(const UnaryOPStmt *edge)</div><div class="ttdoc">Add a UnaryOperator VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00614">VFG.h:614</a></div></div>
266
263
  <div class="ttc" id="classSVF_1_1CopyVFGNode_html_ad86bbc5ec4a9ea226364a84e04724b37"><div class="ttname"><a href="classSVF_1_1CopyVFGNode.html#ad86bbc5ec4a9ea226364a84e04724b37">SVF::CopyVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00072">VFG.cpp:72</a></div></div>
267
264
  <div class="ttc" id="classSVF_1_1PHIVFGNode_html_a188a4d3ae95fe01dc59784d076f28aef"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html#a188a4d3ae95fe01dc59784d076f28aef">SVF::PHIVFGNode::getValue</a></div><div class="ttdeci">const Value * getValue() const override</div><div class="ttdoc">Return the corresponding LLVM value, if possible, nullptr otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00932">VFG.cpp:932</a></div></div>
265
+ <div class="ttc" id="classSVF_1_1BinaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html">SVF::BinaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00429">SVFStatements.h:429</a></div></div>
268
266
  <div class="ttc" id="classSVF_1_1VFG_html_ade3f735b3c7b1a53cab3d67cd9f7b874"><div class="ttname"><a href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874">SVF::VFG::CallPESet</a></div><div class="ttdeci">FormalParmVFGNode::CallPESet CallPESet</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00075">VFG.h:75</a></div></div>
269
267
  <div class="ttc" id="classSVF_1_1FormalRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html">SVF::FormalRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01004">VFGNode.h:1004</a></div></div>
270
268
  <div class="ttc" id="classSVF_1_1CallDirSVFGEdge_html_af07decd05375f56baa4a1c4fe70bc3f1"><div class="ttname"><a href="classSVF_1_1CallDirSVFGEdge.html#af07decd05375f56baa4a1c4fe70bc3f1">SVF::CallDirSVFGEdge::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00272">VFG.cpp:272</a></div></div>
271
269
  <div class="ttc" id="classSVF_1_1VFG_html_a43b0c126c2e32cb3d286a78b14e09a96"><div class="ttname"><a href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96">SVF::VFG::checkIntraEdgeParents</a></div><div class="ttdeci">void checkIntraEdgeParents(const VFGNode *srcNode, const VFGNode *dstNode)</div><div class="ttdoc">sanitize Intra edges, verify that both nodes belong to the same function. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00345">VFG.h:345</a></div></div>
272
270
  <div class="ttc" id="classSVF_1_1CallBlockNode_html"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html">SVF::CallBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
273
271
  <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>
274
- <div class="ttc" id="classSVF_1_1CopyPE_html"><div class="ttname"><a href="classSVF_1_1CopyPE.html">SVF::CopyPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00231">SVFStatements.h:231</a></div></div>
272
+ <div class="ttc" id="classSVF_1_1SVFVar_html_a9e40eafe55a2c1448b830b56ae72e17f"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a9e40eafe55a2c1448b830b56ae72e17f">SVF::SVFVar::getOutgoingEdgesBegin</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy::iterator getOutgoingEdgesBegin(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Get outgoing SVFStmt iterator. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00220">SVFVariables.h:220</a></div></div>
275
273
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
276
- <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00133">SVFIR.h:133</a></div></div>
274
+ <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
277
275
  <div class="ttc" id="classSVF_1_1VFG_html_ac2e2f555975063da3fa1932ac35802c6"><div class="ttname"><a href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">SVF::VFG::VFGK</a></div><div class="ttdeci">VFGK</div><div class="ttdoc">VFG kind. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00055">VFG.h:55</a></div></div>
278
276
  <div class="ttc" id="classSVF_1_1NullPtrVFGNode_html"><div class="ttname"><a href="classSVF_1_1NullPtrVFGNode.html">SVF::NullPtrVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01131">VFGNode.h:1131</a></div></div>
279
277
  <div class="ttc" id="classSVF_1_1VFG_html_a75eb519e4f89a116db98fccb263af4d6"><div class="ttname"><a href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6">SVF::VFG::getFormalParmVFGNode</a></div><div class="ttdeci">FormalParmVFGNode * getFormalParmVFGNode(const PAGNode *fparm) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00247">VFG.h:247</a></div></div>
280
- <div class="ttc" id="classSVF_1_1PhiPE_html"><div class="ttname"><a href="classSVF_1_1PhiPE.html">SVF::PhiPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00328">SVFStatements.h:328</a></div></div>
281
278
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
282
279
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
283
280
  <div class="ttc" id="classSVF_1_1CmpVFGNode_html_aa08c4475c47beb0d026acab859d68117"><div class="ttname"><a href="classSVF_1_1CmpVFGNode.html#aa08c4475c47beb0d026acab859d68117">SVF::CmpVFGNode::toString</a></div><div class="ttdeci">const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00080">VFG.cpp:80</a></div></div>
284
281
  <div class="ttc" id="LLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
285
- <div class="ttc" id="classSVF_1_1SVFIR_html_a64cee36354a14aae6b64f8b9d3edbd96"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64cee36354a14aae6b64f8b9d3edbd96">SVF::SVFIR::PAGNodeList</a></div><div class="ttdeci">std::vector&lt; const SVFVar * &gt; PAGNodeList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
282
+ <div class="ttc" id="classSVF_1_1CopyStmt_html"><div class="ttname"><a href="classSVF_1_1CopyStmt.html">SVF::CopyStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00232">SVFStatements.h:232</a></div></div>
286
283
  <div class="ttc" id="classSVF_1_1RetDirSVFGEdge_html_a6282c2619d843cf90575886a0ef81edf"><div class="ttname"><a href="classSVF_1_1RetDirSVFGEdge.html#a6282c2619d843cf90575886a0ef81edf">SVF::RetDirSVFGEdge::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00280">VFG.cpp:280</a></div></div>
287
284
  <div class="ttc" id="classSVF_1_1VFG_html_ae4350f68e960bfef87f44587628b1929"><div class="ttname"><a href="classSVF_1_1VFG.html#ae4350f68e960bfef87f44587628b1929">SVF::VFG::view</a></div><div class="ttdeci">void view()</div><div class="ttdoc">Dump graph into dot file. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00790">VFG.cpp:790</a></div></div>
288
285
  <div class="ttc" id="classSVF_1_1RetDirSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetDirSVFGEdge.html">SVF::RetDirSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00254">VFGEdge.h:254</a></div></div>
289
286
  <div class="ttc" id="classSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00047">SVFStatements.h:47</a></div></div>
287
+ <div class="ttc" id="classSVF_1_1VFG_html_a13f7caf44741db3b0e8a44b13d8931f5"><div class="ttname"><a href="classSVF_1_1VFG.html#a13f7caf44741db3b0e8a44b13d8931f5">SVF::VFG::addStoreVFGNode</a></div><div class="ttdeci">void addStoreVFGNode(const StoreStmt *store)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00515">VFG.h:515</a></div></div>
290
288
  <div class="ttc" id="classllvm_1_1GraphPrinter_html_a53b3809728c30389a594076097884b82"><div class="ttname"><a href="classllvm_1_1GraphPrinter.html#a53b3809728c30389a594076097884b82">llvm::GraphPrinter::WriteGraphToFile</a></div><div class="ttdeci">static void WriteGraphToFile(llvm::raw_ostream &amp;O, const std::string &amp;GraphName, const GraphType &amp;GT, bool simple=false)</div><div class="ttdef"><b>Definition:</b> <a href="GraphPrinter_8h_source.html#l00057">GraphPrinter.h:57</a></div></div>
291
289
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00057">PointerAnalysis.h:57</a></div></div>
292
290
  <div class="ttc" id="classSVF_1_1VFG_html_ab7ba9d179504165f277d347a7cb9f5d8"><div class="ttname"><a href="classSVF_1_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8">SVF::VFG::getFormalRetVFGNode</a></div><div class="ttdeci">FormalRetVFGNode * getFormalRetVFGNode(const PAGNode *fret) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00253">VFG.h:253</a></div></div>
293
291
  <div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
292
+ <div class="ttc" id="classSVF_1_1SVFIR_html_ac7f90610a7b5f456c530a4419393fae5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac7f90610a7b5f456c530a4419393fae5">SVF::SVFIR::getCallSiteArgsList</a></div><div class="ttdeci">const SVFVarList &amp; getCallSiteArgsList(const CallBlockNode *cs) const</div><div class="ttdoc">Get callsite argument list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00242">SVFIR.h:242</a></div></div>
294
293
  <div class="ttc" id="classSVF_1_1InterPHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1InterPHIVFGNode.html">SVF::InterPHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01068">VFGNode.h:1068</a></div></div>
294
+ <div class="ttc" id="classSVF_1_1SVFVar_html_af1cf24ab50e0d86c9d0f9bd5744b4c10"><div class="ttname"><a href="classSVF_1_1SVFVar.html#af1cf24ab50e0d86c9d0f9bd5744b4c10">SVF::SVFVar::getIncomingEdgesEnd</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy::iterator getIncomingEdgesEnd(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Get incoming SVFStmt iterator. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00202">SVFVariables.h:202</a></div></div>
295
295
  </div><!-- fragment --></div><!-- contents -->
296
296
  <!-- start footer part -->
297
297
  <hr class="footer"/><address class="footer"><small>