svf-tools 1.0.289 → 1.0.293

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 (275) hide show
  1. package/README.md +1 -0
  2. package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +2 -2
  5. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
  7. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
  8. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/AndersenWaveDiffWithType_8cpp_source.html +5 -5
  10. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +45 -29
  12. package/SVF-doxygen/html/html/Andersen_8h_source.html +50 -50
  13. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
  14. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +9 -9
  15. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  19. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  22. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +5 -5
  23. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +2 -2
  24. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +22 -22
  28. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +52 -32
  29. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +58 -55
  30. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  34. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  37. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +64 -11
  38. package/SVF-doxygen/html/html/NodeIDAllocator_8h.html +5 -1
  39. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +52 -15
  40. package/SVF-doxygen/html/html/PAG_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  42. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  43. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  44. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +34 -33
  46. package/SVF-doxygen/html/html/PointsTo_8h_source.html +32 -32
  47. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -12
  48. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +33 -35
  49. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +31 -36
  51. package/SVF-doxygen/html/html/SVFG_8h_source.html +19 -19
  52. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +15 -7
  53. package/SVF-doxygen/html/html/SVFUtil_8h.html +3 -0
  54. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +10 -8
  55. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +2 -2
  56. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
  57. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
  58. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  59. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
  60. package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -11
  61. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +51 -43
  63. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +34 -33
  64. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
  65. package/SVF-doxygen/html/html/annotated.html +2 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
  67. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +1 -1
  68. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +3 -3
  69. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +213 -212
  70. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +124 -72
  71. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
  72. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +223 -222
  73. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +36 -34
  74. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +232 -231
  75. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +21 -19
  76. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +220 -219
  77. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +38 -36
  78. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +221 -220
  79. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +11 -9
  80. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +232 -231
  81. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +6 -4
  82. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
  83. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +220 -219
  84. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +21 -19
  85. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType-members.html +227 -226
  86. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +26 -24
  87. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -3
  88. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  89. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -4
  91. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
  94. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -4
  95. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
  96. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +1 -1
  98. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +3 -3
  99. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  101. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
  102. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
  103. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +110 -107
  104. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +12 -4
  105. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +2 -2
  106. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  107. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +109 -106
  108. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +286 -157
  109. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +30 -30
  110. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +121 -118
  111. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +36 -28
  112. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  113. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +3 -3
  114. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +1 -1
  115. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +3 -3
  118. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  120. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  122. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
  123. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +3 -3
  126. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +2 -2
  128. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  130. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +5 -5
  131. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
  132. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator-members.html +11 -10
  133. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +74 -34
  134. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer-members.html +109 -0
  135. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +1188 -0
  136. package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +3 -4
  139. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
  140. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
  141. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +77 -66
  142. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +32 -26
  143. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice-members.html +36 -37
  144. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +121 -153
  145. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
  148. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +49 -49
  149. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
  150. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +9 -9
  151. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +6 -6
  153. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +8 -9
  156. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +3 -3
  159. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +1 -1
  160. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  161. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +4 -4
  163. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  166. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +1 -1
  168. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +132 -129
  169. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +171 -116
  170. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +37 -37
  171. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +5 -5
  172. package/SVF-doxygen/html/html/classes.html +62 -62
  173. package/SVF-doxygen/html/html/functions_b.html +10 -5
  174. package/SVF-doxygen/html/html/functions_c.html +36 -22
  175. package/SVF-doxygen/html/html/functions_d.html +12 -0
  176. package/SVF-doxygen/html/html/functions_e.html +9 -3
  177. package/SVF-doxygen/html/html/functions_f.html +21 -18
  178. package/SVF-doxygen/html/html/functions_func_c.html +19 -10
  179. package/SVF-doxygen/html/html/functions_func_d.html +3 -0
  180. package/SVF-doxygen/html/html/functions_func_e.html +3 -0
  181. package/SVF-doxygen/html/html/functions_func_g.html +16 -10
  182. package/SVF-doxygen/html/html/functions_func_p.html +6 -2
  183. package/SVF-doxygen/html/html/functions_func_r.html +7 -1
  184. package/SVF-doxygen/html/html/functions_func_t.html +3 -0
  185. package/SVF-doxygen/html/html/functions_g.html +15 -9
  186. package/SVF-doxygen/html/html/functions_l.html +10 -7
  187. package/SVF-doxygen/html/html/functions_n.html +21 -3
  188. package/SVF-doxygen/html/html/functions_o.html +16 -8
  189. package/SVF-doxygen/html/html/functions_p.html +23 -17
  190. package/SVF-doxygen/html/html/functions_r.html +13 -6
  191. package/SVF-doxygen/html/html/functions_s.html +9 -9
  192. package/SVF-doxygen/html/html/functions_t.html +18 -9
  193. package/SVF-doxygen/html/html/functions_type_d.html +3 -0
  194. package/SVF-doxygen/html/html/functions_v.html +3 -3
  195. package/SVF-doxygen/html/html/functions_vars_b.html +3 -0
  196. package/SVF-doxygen/html/html/functions_vars_c.html +3 -0
  197. package/SVF-doxygen/html/html/functions_vars_d.html +6 -0
  198. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  199. package/SVF-doxygen/html/html/functions_vars_f.html +3 -0
  200. package/SVF-doxygen/html/html/functions_vars_l.html +3 -0
  201. package/SVF-doxygen/html/html/functions_vars_n.html +18 -0
  202. package/SVF-doxygen/html/html/functions_vars_o.html +6 -0
  203. package/SVF-doxygen/html/html/functions_vars_r.html +3 -0
  204. package/SVF-doxygen/html/html/functions_vars_t.html +6 -0
  205. package/SVF-doxygen/html/html/functions_w.html +8 -6
  206. package/SVF-doxygen/html/html/globals_f.html +3 -3
  207. package/SVF-doxygen/html/html/hierarchy.html +413 -412
  208. package/SVF-doxygen/html/html/menudata.js +2 -0
  209. package/SVF-doxygen/html/html/namespaceSVF.html +8 -8
  210. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +47 -16
  211. package/SVF-doxygen/html/html/namespacemembers_func.html +17 -10
  212. package/SVF-doxygen/html/html/namespacemembers_h.html +76 -0
  213. package/SVF-doxygen/html/html/search/all_10.js +9 -8
  214. package/SVF-doxygen/html/html/search/all_12.js +5 -2
  215. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  216. package/SVF-doxygen/html/html/search/all_14.js +8 -5
  217. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  218. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  219. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  220. package/SVF-doxygen/html/html/search/all_2.js +1 -0
  221. package/SVF-doxygen/html/html/search/all_3.js +4 -0
  222. package/SVF-doxygen/html/html/search/all_4.js +4 -0
  223. package/SVF-doxygen/html/html/search/all_5.js +2 -0
  224. package/SVF-doxygen/html/html/search/all_6.js +4 -3
  225. package/SVF-doxygen/html/html/search/all_7.js +4 -2
  226. package/SVF-doxygen/html/html/search/all_8.js +1 -0
  227. package/SVF-doxygen/html/html/search/all_c.js +4 -3
  228. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  229. package/SVF-doxygen/html/html/search/all_e.js +9 -4
  230. package/SVF-doxygen/html/html/search/all_f.js +4 -2
  231. package/SVF-doxygen/html/html/search/classes_2.js +1 -0
  232. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  233. package/SVF-doxygen/html/html/search/functions_11.js +1 -0
  234. package/SVF-doxygen/html/html/search/functions_2.js +2 -0
  235. package/SVF-doxygen/html/html/search/functions_3.js +1 -0
  236. package/SVF-doxygen/html/html/search/functions_4.js +1 -0
  237. package/SVF-doxygen/html/html/search/functions_6.js +4 -2
  238. package/SVF-doxygen/html/html/search/functions_7.js +1 -0
  239. package/SVF-doxygen/html/html/search/functions_e.js +3 -2
  240. package/SVF-doxygen/html/html/search/functions_f.js +2 -0
  241. package/SVF-doxygen/html/html/search/typedefs_3.js +1 -0
  242. package/SVF-doxygen/html/html/search/variables_12.js +1 -0
  243. package/SVF-doxygen/html/html/search/variables_14.js +3 -1
  244. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  245. package/SVF-doxygen/html/html/search/variables_2.js +1 -0
  246. package/SVF-doxygen/html/html/search/variables_3.js +1 -0
  247. package/SVF-doxygen/html/html/search/variables_4.js +2 -0
  248. package/SVF-doxygen/html/html/search/variables_5.js +1 -0
  249. package/SVF-doxygen/html/html/search/variables_6.js +1 -0
  250. package/SVF-doxygen/html/html/search/variables_c.js +1 -0
  251. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  252. package/SVF-doxygen/html/html/search/variables_e.js +7 -2
  253. package/SVF-doxygen/html/html/search/variables_f.js +2 -0
  254. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  255. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
  256. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +20 -20
  257. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
  258. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1PointsTo_01_4.html +1 -1
  259. package/include/SABER/ProgSlice.h +0 -3
  260. package/include/Util/NodeIDAllocator.h +94 -0
  261. package/include/Util/SVFUtil.h +3 -0
  262. package/include/WPA/Andersen.h +4 -0
  263. package/include/WPA/FlowSensitive.h +9 -0
  264. package/include/WPA/VersionedFlowSensitive.h +3 -0
  265. package/lib/Graphs/SVFG.cpp +0 -20
  266. package/lib/Graphs/VFG.cpp +18 -0
  267. package/lib/MemoryModel/PointsTo.cpp +76 -19
  268. package/lib/SABER/ProgSlice.cpp +0 -37
  269. package/lib/SABER/SaberAnnotator.cpp +1 -1
  270. package/lib/Util/NodeIDAllocator.cpp +548 -1
  271. package/lib/Util/SVFUtil.cpp +19 -0
  272. package/lib/WPA/Andersen.cpp +34 -0
  273. package/lib/WPA/FlowSensitive.cpp +70 -0
  274. package/lib/WPA/VersionedFlowSensitive.cpp +20 -0
  275. package/package.json +1 -1
@@ -1107,8 +1107,8 @@ Additional Inherited Members</h2></td></tr>
1107
1107
  <p>Constructor. </p>
1108
1108
  <p>Constructor </p>
1109
1109
 
1110
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00195">195</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1111
- <div class="fragment"><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; : <a class="code" href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">VFG</a>(_mssa-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>(),k),<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>(_mssa), <a class="code" href="classSVF_1_1SVFG.html#a0d6cfa496e6885fe31b6b7a651fa01a8">pta</a>(<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>())</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;{</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGStat.html">SVFGStat</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00178">PointerAnalysis.h:178</a></div></div>
1110
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00175">175</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1111
+ <div class="fragment"><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; : <a class="code" href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">VFG</a>(_mssa-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>(),k),<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>(_mssa), <a class="code" href="classSVF_1_1SVFG.html#a0d6cfa496e6885fe31b6b7a651fa01a8">pta</a>(<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>())</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;{</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGStat.html">SVFGStat</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00178">PointerAnalysis.h:178</a></div></div>
1112
1112
  <div class="ttc" id="classSVF_1_1SVFG_html_ad5c1415f488ec4412d5457262269eff3"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">SVF::SVFG::stat</a></div><div class="ttdeci">SVFGStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00104">SVFG.h:104</a></div></div>
1113
1113
  <div class="ttc" id="classSVF_1_1SVFGStat_html"><div class="ttname"><a href="classSVF_1_1SVFGStat.html">SVF::SVFGStat</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8h_source.html#l00092">SVFGStat.h:92</a></div></div>
1114
1114
  <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#l00299">VFG.cpp:299</a></div></div>
@@ -1144,7 +1144,7 @@ Additional Inherited Members</h2></td></tr>
1144
1144
  <p>Destructor. </p>
1145
1145
 
1146
1146
  <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00119">119</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1147
- <div class="fragment"><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a82a93d9b7fcf1938e3090a0826a1ca7e">destroy</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a82a93d9b7fcf1938e3090a0826a1ca7e"><div class="ttname"><a href="classSVF_1_1SVFG.html#a82a93d9b7fcf1938e3090a0826a1ca7e">SVF::SVFG::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00203">SVFG.cpp:203</a></div></div>
1147
+ <div class="fragment"><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a82a93d9b7fcf1938e3090a0826a1ca7e">destroy</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a82a93d9b7fcf1938e3090a0826a1ca7e"><div class="ttname"><a href="classSVF_1_1SVFG.html#a82a93d9b7fcf1938e3090a0826a1ca7e">SVF::SVFG::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00183">SVFG.cpp:183</a></div></div>
1148
1148
  </div><!-- fragment -->
1149
1149
  </div>
1150
1150
  </div>
@@ -1298,8 +1298,8 @@ Additional Inherited Members</h2></td></tr>
1298
1298
  </table>
1299
1299
  </div><div class="memdoc">
1300
1300
 
1301
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00488">488</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1302
- <div class="fragment"><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; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a978c857fcc06d2f988bc9ce16ce10145">SVFGEdge::CallIndVF</a>,csId))</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;CallIndSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;CallIndSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="classSVF_1_1CallIndSVFGEdge.html">CallIndSVFGEdge</a>* callEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallIndSVFGEdge.html">CallIndSVFGEdge</a>(srcNode,dstNode,csId);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; callEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(callEdge) ? callEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;}</div><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#l00729">VFG.cpp:729</a></div></div>
1301
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00468">468</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1302
+ <div class="fragment"><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;{</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a978c857fcc06d2f988bc9ce16ce10145">SVFGEdge::CallIndVF</a>,csId))</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;CallIndSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;CallIndSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="classSVF_1_1CallIndSVFGEdge.html">CallIndSVFGEdge</a>* callEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallIndSVFGEdge.html">CallIndSVFGEdge</a>(srcNode,dstNode,csId);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; callEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(callEdge) ? callEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;}</div><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#l00729">VFG.cpp:729</a></div></div>
1303
1303
  <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>
1304
1304
  <div class="ttc" id="classSVF_1_1CallIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00138">SVFGEdge.h:138</a></div></div>
1305
1305
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
@@ -1497,8 +1497,8 @@ Additional Inherited Members</h2></td></tr>
1497
1497
 
1498
1498
  <p>Add inter VF edge from callsite mu to function entry chi. </p>
1499
1499
 
1500
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00528">528</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1501
- <div class="fragment"><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;{</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts1 = src-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts2 = dst-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span>(cpts1.intersects(cpts2))</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; cpts1 &amp;= cpts2;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#af8ceb1ebf745e6803c606c41f7a482ac">addCallIndirectVFEdge</a>(src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cpts1,csId);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFG_html_af8ceb1ebf745e6803c606c41f7a482ac"><div class="ttname"><a href="classSVF_1_1SVFG.html#af8ceb1ebf745e6803c606c41f7a482ac">SVF::SVFG::addCallIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addCallIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00488">SVFG.cpp:488</a></div></div>
1500
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00508">508</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1501
+ <div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;{</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts1 = src-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts2 = dst-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">if</span>(cpts1.intersects(cpts2))</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; cpts1 &amp;= cpts2;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#af8ceb1ebf745e6803c606c41f7a482ac">addCallIndirectVFEdge</a>(src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cpts1,csId);</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="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFG_html_af8ceb1ebf745e6803c606c41f7a482ac"><div class="ttname"><a href="classSVF_1_1SVFG.html#af8ceb1ebf745e6803c606c41f7a482ac">SVF::SVFG::addCallIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addCallIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00468">SVFG.cpp:468</a></div></div>
1502
1502
  <div class="ttc" id="classSVF_1_1MRSVFGNode_html_a28fe266d0e4618aa4448aa218495a332"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">SVF::MRSVFGNode::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdoc">Return points-to of the MR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00052">SVFGNode.h:52</a></div></div>
1503
1503
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00164">GenericGraph.h:164</a></div></div>
1504
1504
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00087">SVFBasicTypes.h:87</a></div></div>
@@ -1548,9 +1548,9 @@ Additional Inherited Members</h2></td></tr>
1548
1548
  <p>Add inter VF edge from function exit mu to callsite chi. </p>
1549
1549
  <p>Add inter VF edge from function exit mu to callsite chi </p>
1550
1550
 
1551
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00543">543</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1552
- <div class="fragment"><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;{</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts1 = src-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts2 = dst-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">if</span>(cpts1.intersects(cpts2))</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; cpts1 &amp;= cpts2;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#a8ebf0e285c69db8332a1f8914d6190f6">addRetIndirectVFEdge</a>(src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cpts1,csId);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRSVFGNode_html_a28fe266d0e4618aa4448aa218495a332"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">SVF::MRSVFGNode::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdoc">Return points-to of the MR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00052">SVFGNode.h:52</a></div></div>
1553
- <div class="ttc" id="classSVF_1_1SVFG_html_a8ebf0e285c69db8332a1f8914d6190f6"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8ebf0e285c69db8332a1f8914d6190f6">SVF::SVFG::addRetIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addRetIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00508">SVFG.cpp:508</a></div></div>
1551
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00523">523</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1552
+ <div class="fragment"><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;{</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts1 = src-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts2 = dst-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">if</span>(cpts1.intersects(cpts2))</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; cpts1 &amp;= cpts2;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#a8ebf0e285c69db8332a1f8914d6190f6">addRetIndirectVFEdge</a>(src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cpts1,csId);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRSVFGNode_html_a28fe266d0e4618aa4448aa218495a332"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">SVF::MRSVFGNode::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdoc">Return points-to of the MR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00052">SVFGNode.h:52</a></div></div>
1553
+ <div class="ttc" id="classSVF_1_1SVFG_html_a8ebf0e285c69db8332a1f8914d6190f6"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8ebf0e285c69db8332a1f8914d6190f6">SVF::SVFG::addRetIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addRetIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00488">SVFG.cpp:488</a></div></div>
1554
1554
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00164">GenericGraph.h:164</a></div></div>
1555
1555
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00087">SVFBasicTypes.h:87</a></div></div>
1556
1556
  </div><!-- fragment -->
@@ -1598,8 +1598,8 @@ Additional Inherited Members</h2></td></tr>
1598
1598
 
1599
1599
  <p>Add indirect def-use edges of a memory region between two statements,. </p>
1600
1600
 
1601
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00446">446</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1602
- <div class="fragment"><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;{</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96">checkIntraEdgeParents</a>(srcNode, dstNode);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">hasIntraVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5aa80551154bcfbfa84f02df32ead6b1b0">SVFGEdge::IntraIndirectVF</a>))</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;IndirectSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="classSVF_1_1IntraIndSVFGEdge.html">IntraIndSVFGEdge</a>* indirectEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraIndSVFGEdge.html">IntraIndSVFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; indirectEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(indirectEdge) ? indirectEdge : <span class="keyword">nullptr</span>);</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;}</div><div class="ttc" id="classSVF_1_1IntraIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraIndSVFGEdge.html">SVF::IntraIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00106">SVFGEdge.h:106</a></div></div>
1601
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00426">426</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1602
+ <div class="fragment"><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;{</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96">checkIntraEdgeParents</a>(srcNode, dstNode);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">hasIntraVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5aa80551154bcfbfa84f02df32ead6b1b0">SVFGEdge::IntraIndirectVF</a>))</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;IndirectSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="classSVF_1_1IntraIndSVFGEdge.html">IntraIndSVFGEdge</a>* indirectEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraIndSVFGEdge.html">IntraIndSVFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; indirectEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(indirectEdge) ? indirectEdge : <span class="keyword">nullptr</span>);</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;}</div><div class="ttc" id="classSVF_1_1IntraIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraIndSVFGEdge.html">SVF::IntraIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00106">SVFGEdge.h:106</a></div></div>
1603
1603
  <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>
1604
1604
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
1605
1605
  <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html_a50ac2e33c6a4a41291c0a476ed07de53"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">SVF::IndirectSVFGEdge::addPointsTo</a></div><div class="ttdeci">bool addPointsTo(const NodeBS &amp;c)</div><div class="ttdoc">Handle memory region. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00057">SVFGEdge.h:57</a></div></div>
@@ -1718,8 +1718,8 @@ Additional Inherited Members</h2></td></tr>
1718
1718
  </table>
1719
1719
  </div><div class="memdoc">
1720
1720
 
1721
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00508">508</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1722
- <div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;{</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5ac8124172b3f5f7fc94e895f6b192b668">SVFGEdge::RetIndVF</a>,csId))</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;RetIndSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;RetIndSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</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="keywordflow">else</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="classSVF_1_1RetIndSVFGEdge.html">RetIndSVFGEdge</a>* retEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetIndSVFGEdge.html">RetIndSVFGEdge</a>(srcNode,dstNode,csId);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; retEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(retEdge) ? retEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;}</div><div class="ttc" id="classSVF_1_1RetIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetIndSVFGEdge.html">SVF::RetIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00177">SVFGEdge.h:177</a></div></div>
1721
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00488">488</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1722
+ <div class="fragment"><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; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5ac8124172b3f5f7fc94e895f6b192b668">SVFGEdge::RetIndVF</a>,csId))</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;RetIndSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;RetIndSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="classSVF_1_1RetIndSVFGEdge.html">RetIndSVFGEdge</a>* retEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetIndSVFGEdge.html">RetIndSVFGEdge</a>(srcNode,dstNode,csId);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; retEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(retEdge) ? retEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;}</div><div class="ttc" id="classSVF_1_1RetIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetIndSVFGEdge.html">SVF::RetIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00177">SVFGEdge.h:177</a></div></div>
1723
1723
  <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#l00729">VFG.cpp:729</a></div></div>
1724
1724
  <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>
1725
1725
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
@@ -1833,8 +1833,8 @@ Additional Inherited Members</h2></td></tr>
1833
1833
  <p>initialize memory SSA callsite mu nodes</p>
1834
1834
  <p>initialize memory SSA callsite chi nodes </p>
1835
1835
 
1836
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00242">242</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1837
- <div class="fragment"><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;{</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="comment">// set defs for address-taken vars defined at store statements</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6aca20a2c4d9809736d43b18f3cb53e8cf">PAGEdge::Store</a>);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; stores.end(); iter != eiter; ++iter)</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; <a class="code" href="classSVF_1_1StorePE.html">StorePE</a>* store = SVFUtil::cast&lt;StorePE&gt;(*iter);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a>* sNode = <a class="code" href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6">getStmtVFGNode</a>(store);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator pi = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a24dd10cbd41df4f57d8d6fa9ca6a3083">getCHISet</a>(store).begin(), epi = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a24dd10cbd41df4f57d8d6fa9ca6a3083">getCHISet</a>(store).end(); pi!=epi; ++pi)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>((*pi)-&gt;getResVer(),sNode);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">for</span>(MemSSA::BBToPhiSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>().begin(),</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">for</span>(PHISet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi){</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="classSVF_1_1MSSAPHI.html">MemSSA::PHI</a>* phi = *pi;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572">addIntraMSSAPHISVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#ad274c5c15ac51cea5d09ad08febe8c14">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#ab7b0b3088b46ad65451905cc4f567a7b">getBlockICFGNode</a>(&amp;(phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a00b3ab85b31b4de91398efea41db158f">getBasicBlock</a>()-&gt;front())), phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a940f9afa26bf54c7175276ea27003c2f">opVerBegin</a>(), phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a2a49ad9d2eedf1dea98d725b13878d88">opVerEnd</a>(),phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a21cb532396180e0b6bab515c52bec282">getResVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">for</span>(MemSSA::FunToEntryChiSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>().begin(),</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>().end(); it!=eit; ++it)</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; <span class="keywordflow">for</span>(CHISet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi){</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1EntryCHI.html">MemSSA::ENTRYCHI</a>* chi = SVFUtil::cast&lt;ENTRYCHI&gt;(*pi);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aee7cd64ac52d2ae930ab527325a77a30">addFormalINSVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#ad274c5c15ac51cea5d09ad08febe8c14">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#ae1ef14cdda27a2062c4c454750444108">getFunEntryBlockNode</a>(chi-&gt;<a class="code" href="classSVF_1_1EntryCHI.html#ae021640611362449382668665710154c">getFunction</a>()), chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a21cb532396180e0b6bab515c52bec282">getResVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">for</span>(MemSSA::FunToReturnMuSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>().begin(),</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>().end(); it!=eit; ++it)</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"> 280</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi){</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetMU.html">MemSSA::RETMU</a>* mu = SVFUtil::cast&lt;RETMU&gt;(*pi);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ae54becb2073591bce004f820cd13b1ca">addFormalOUTSVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#ad274c5c15ac51cea5d09ad08febe8c14">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa33426d57dc150956902945a17a29bcb">getFunExitBlockNode</a>(mu-&gt;<a class="code" href="classSVF_1_1RetMU.html#a8ad6bf3d517e20089dac516742ee4b8f">getFunction</a>()), mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#ad120dfc87b90b26649bcd8d0c0d3ca80">getMRVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">for</span>(MemSSA::CallSiteToMUSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>().begin(),</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>().end();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; it!=eit; ++it)</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"> 290</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi){</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallMU.html">MemSSA::CALLMU</a>* mu = SVFUtil::cast&lt;CALLMU&gt;(*pi);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ab6dfac64a363550ef51df246849a13aa">addActualINSVFGNode</a>(mu-&gt;<a class="code" href="classSVF_1_1CallMU.html#a401be4fc10a3b9f3d392f1c278bef866">getCallSite</a>(), mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#ad120dfc87b90b26649bcd8d0c0d3ca80">getMRVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</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="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">for</span>(MemSSA::CallSiteToCHISetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>().begin(),</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>().end();</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi){</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallCHI.html">MemSSA::CALLCHI</a>* chi = SVFUtil::cast&lt;CALLCHI&gt;(*pi);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#acc0c102c3773b7d8abb23959fb64ffa4">addActualOUTSVFGNode</a>(chi-&gt;<a class="code" href="classSVF_1_1CallCHI.html#a7bce9987b6377a24436b878dcd9c76c9">getCallSite</a>(), chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a21cb532396180e0b6bab515c52bec282">getResVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;}</div><div class="ttc" id="classSVF_1_1CallMU_html"><div class="ttname"><a href="classSVF_1_1CallMU.html">SVF::CallMU</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00221">MSSAMuChi.h:221</a></div></div>
1836
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00222">222</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1837
+ <div class="fragment"><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;{</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="comment">// set defs for address-taken vars defined at store statements</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6aca20a2c4d9809736d43b18f3cb53e8cf">PAGEdge::Store</a>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; stores.end(); iter != eiter; ++iter)</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; <a class="code" href="classSVF_1_1StorePE.html">StorePE</a>* store = SVFUtil::cast&lt;StorePE&gt;(*iter);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a>* sNode = <a class="code" href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6">getStmtVFGNode</a>(store);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator pi = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a24dd10cbd41df4f57d8d6fa9ca6a3083">getCHISet</a>(store).begin(), epi = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a24dd10cbd41df4f57d8d6fa9ca6a3083">getCHISet</a>(store).end(); pi!=epi; ++pi)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>((*pi)-&gt;getResVer(),sNode);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">for</span>(MemSSA::BBToPhiSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>().begin(),</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">for</span>(PHISet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi){</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="classSVF_1_1MSSAPHI.html">MemSSA::PHI</a>* phi = *pi;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572">addIntraMSSAPHISVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#ad274c5c15ac51cea5d09ad08febe8c14">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#ab7b0b3088b46ad65451905cc4f567a7b">getBlockICFGNode</a>(&amp;(phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a00b3ab85b31b4de91398efea41db158f">getBasicBlock</a>()-&gt;front())), phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a940f9afa26bf54c7175276ea27003c2f">opVerBegin</a>(), phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a2a49ad9d2eedf1dea98d725b13878d88">opVerEnd</a>(),phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a21cb532396180e0b6bab515c52bec282">getResVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">for</span>(MemSSA::FunToEntryChiSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>().begin(),</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>().end(); it!=eit; ++it)</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"> 251</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi){</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1EntryCHI.html">MemSSA::ENTRYCHI</a>* chi = SVFUtil::cast&lt;ENTRYCHI&gt;(*pi);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aee7cd64ac52d2ae930ab527325a77a30">addFormalINSVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#ad274c5c15ac51cea5d09ad08febe8c14">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#ae1ef14cdda27a2062c4c454750444108">getFunEntryBlockNode</a>(chi-&gt;<a class="code" href="classSVF_1_1EntryCHI.html#ae021640611362449382668665710154c">getFunction</a>()), chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a21cb532396180e0b6bab515c52bec282">getResVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">for</span>(MemSSA::FunToReturnMuSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>().begin(),</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi){</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetMU.html">MemSSA::RETMU</a>* mu = SVFUtil::cast&lt;RETMU&gt;(*pi);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ae54becb2073591bce004f820cd13b1ca">addFormalOUTSVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#ad274c5c15ac51cea5d09ad08febe8c14">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa33426d57dc150956902945a17a29bcb">getFunExitBlockNode</a>(mu-&gt;<a class="code" href="classSVF_1_1RetMU.html#a8ad6bf3d517e20089dac516742ee4b8f">getFunction</a>()), mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#ad120dfc87b90b26649bcd8d0c0d3ca80">getMRVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</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="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">for</span>(MemSSA::CallSiteToMUSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>().begin(),</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>().end();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi){</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallMU.html">MemSSA::CALLMU</a>* mu = SVFUtil::cast&lt;CALLMU&gt;(*pi);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ab6dfac64a363550ef51df246849a13aa">addActualINSVFGNode</a>(mu-&gt;<a class="code" href="classSVF_1_1CallMU.html#a401be4fc10a3b9f3d392f1c278bef866">getCallSite</a>(), mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#ad120dfc87b90b26649bcd8d0c0d3ca80">getMRVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">for</span>(MemSSA::CallSiteToCHISetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>().begin(),</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>().end();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; it!=eit; ++it)</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"> 280</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi){</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallCHI.html">MemSSA::CALLCHI</a>* chi = SVFUtil::cast&lt;CALLCHI&gt;(*pi);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#acc0c102c3773b7d8abb23959fb64ffa4">addActualOUTSVFGNode</a>(chi-&gt;<a class="code" href="classSVF_1_1CallCHI.html#a7bce9987b6377a24436b878dcd9c76c9">getCallSite</a>(), chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a21cb532396180e0b6bab515c52bec282">getResVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;}</div><div class="ttc" id="classSVF_1_1CallMU_html"><div class="ttname"><a href="classSVF_1_1CallMU.html">SVF::CallMU</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00221">MSSAMuChi.h:221</a></div></div>
1838
1838
  <div class="ttc" id="classSVF_1_1PAG_html_ad274c5c15ac51cea5d09ad08febe8c14"><div class="ttname"><a href="classSVF_1_1PAG.html#ad274c5c15ac51cea5d09ad08febe8c14">SVF::PAG::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00135">PAG.h:135</a></div></div>
1839
1839
  <div class="ttc" id="classSVF_1_1VFG_html_a32b1586d326fbe47080bd1fa2d3270e6"><div class="ttname"><a href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6">SVF::VFG::getStmtVFGNode</a></div><div class="ttdeci">StmtVFGNode * getStmtVFGNode(const PAGEdge *pagEdge) const</div><div class="ttdoc">Get an VFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00197">VFG.h:197</a></div></div>
1840
1840
  <div class="ttc" id="classSVF_1_1SVFG_html_aee7cd64ac52d2ae930ab527325a77a30"><div class="ttname"><a href="classSVF_1_1SVFG.html#aee7cd64ac52d2ae930ab527325a77a30">SVF::SVFG::addFormalINSVFGNode</a></div><div class="ttdeci">void addFormalINSVFGNode(const FunEntryBlockNode *funEntry, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory Function entry chi SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00397">SVFG.h:397</a></div></div>
@@ -1917,8 +1917,8 @@ Additional Inherited Members</h2></td></tr>
1917
1917
  </div><div class="memdoc">
1918
1918
  <p>Add def-use edges of a memory region between two may-happen-in-parallel statements for multithreaded program </p>
1919
1919
 
1920
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00468">468</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1921
- <div class="fragment"><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;{</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba">hasThreadVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5aae3168b6bc9141e4a1f3723eae4f3375">SVFGEdge::TheadMHPIndirectVF</a>))</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;IndirectSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="classSVF_1_1ThreadMHPIndSVFGEdge.html">ThreadMHPIndSVFGEdge</a>* indirectEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ThreadMHPIndSVFGEdge.html">ThreadMHPIndSVFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; indirectEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(indirectEdge) ? indirectEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;}</div><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>
1920
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00448">448</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1921
+ <div class="fragment"><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba">hasThreadVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5aae3168b6bc9141e4a1f3723eae4f3375">SVFGEdge::TheadMHPIndirectVF</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;IndirectSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classSVF_1_1ThreadMHPIndSVFGEdge.html">ThreadMHPIndSVFGEdge</a>* indirectEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ThreadMHPIndSVFGEdge.html">ThreadMHPIndSVFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; indirectEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(indirectEdge) ? indirectEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;}</div><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>
1922
1922
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
1923
1923
  <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#l00712">VFG.cpp:712</a></div></div>
1924
1924
  <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html_a50ac2e33c6a4a41291c0a476ed07de53"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">SVF::IndirectSVFGEdge::addPointsTo</a></div><div class="ttdeci">bool addPointsTo(const NodeBS &amp;c)</div><div class="ttdoc">Handle memory region. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00057">SVFGEdge.h:57</a></div></div>
@@ -1958,11 +1958,11 @@ Additional Inherited Members</h2></td></tr>
1958
1958
 
1959
1959
  <p>Reimplemented in <a class="el" href="classSVF_1_1SVFGOPT.html#af4d2c6d2e3b316b256f860801fe3b178">SVF::SVFGOPT</a>.</p>
1960
1960
 
1961
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00219">219</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1962
- <div class="fragment"><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; <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;Build Sparse Value-Flow Graph \n&quot;</span>));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1PTAStat.html#a5524ff7901659f56e9de343992be8f3b">startClk</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <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 Addr-taken Node\n&quot;</span>));</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#a4bf9a39b93b7254f627dd393b9f2b82c">ATVFNodeStart</a>();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#abddfc95cf644d0729ee29eccf95699f1">addSVFGNodesForAddrTakenVars</a>();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#aa39231c3d81fa87cdb6089f17bc35af8">ATVFNodeEnd</a>();</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; <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 Indirect Edge\n&quot;</span>));</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#adcb30427bb220dc122ad22030e10eb21">indVFEdgeStart</a>();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a164a3df08fc24bacc0b97aee8b6eec38">connectIndirectSVFGEdges</a>();</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#a8b3b9a211f410e67e8fd1a79d3db9023">indVFEdgeEnd</a>();</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFGStat_html_a4bf9a39b93b7254f627dd393b9f2b82c"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#a4bf9a39b93b7254f627dd393b9f2b82c">SVF::SVFGStat::ATVFNodeStart</a></div><div class="ttdeci">void ATVFNodeStart()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8h_source.html#l00139">SVFGStat.h:139</a></div></div>
1961
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00199">199</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1962
+ <div class="fragment"><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;{</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="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;Build Sparse Value-Flow Graph \n&quot;</span>));</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"> 203</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1PTAStat.html#a5524ff7901659f56e9de343992be8f3b">startClk</a>();</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</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 Addr-taken Node\n&quot;</span>));</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#a4bf9a39b93b7254f627dd393b9f2b82c">ATVFNodeStart</a>();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#abddfc95cf644d0729ee29eccf95699f1">addSVFGNodesForAddrTakenVars</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#aa39231c3d81fa87cdb6089f17bc35af8">ATVFNodeEnd</a>();</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; <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 Indirect Edge\n&quot;</span>));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#adcb30427bb220dc122ad22030e10eb21">indVFEdgeStart</a>();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a164a3df08fc24bacc0b97aee8b6eec38">connectIndirectSVFGEdges</a>();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#a8b3b9a211f410e67e8fd1a79d3db9023">indVFEdgeEnd</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFGStat_html_a4bf9a39b93b7254f627dd393b9f2b82c"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#a4bf9a39b93b7254f627dd393b9f2b82c">SVF::SVFGStat::ATVFNodeStart</a></div><div class="ttdeci">void ATVFNodeStart()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8h_source.html#l00139">SVFGStat.h:139</a></div></div>
1963
1963
  <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>
1964
- <div class="ttc" id="classSVF_1_1SVFG_html_abddfc95cf644d0729ee29eccf95699f1"><div class="ttname"><a href="classSVF_1_1SVFG.html#abddfc95cf644d0729ee29eccf95699f1">SVF::SVFG::addSVFGNodesForAddrTakenVars</a></div><div class="ttdeci">void addSVFGNodesForAddrTakenVars()</div><div class="ttdoc">Create SVFG nodes for address-taken variables. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00242">SVFG.cpp:242</a></div></div>
1965
- <div class="ttc" id="classSVF_1_1SVFG_html_a164a3df08fc24bacc0b97aee8b6eec38"><div class="ttname"><a href="classSVF_1_1SVFG.html#a164a3df08fc24bacc0b97aee8b6eec38">SVF::SVFG::connectIndirectSVFGEdges</a></div><div class="ttdeci">void connectIndirectSVFGEdges()</div><div class="ttdoc">Connect direct SVFG edges between two SVFG nodes (value-flow of top address-taken variables) ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00311">SVFG.cpp:311</a></div></div>
1964
+ <div class="ttc" id="classSVF_1_1SVFG_html_abddfc95cf644d0729ee29eccf95699f1"><div class="ttname"><a href="classSVF_1_1SVFG.html#abddfc95cf644d0729ee29eccf95699f1">SVF::SVFG::addSVFGNodesForAddrTakenVars</a></div><div class="ttdeci">void addSVFGNodesForAddrTakenVars()</div><div class="ttdoc">Create SVFG nodes for address-taken variables. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00222">SVFG.cpp:222</a></div></div>
1965
+ <div class="ttc" id="classSVF_1_1SVFG_html_a164a3df08fc24bacc0b97aee8b6eec38"><div class="ttname"><a href="classSVF_1_1SVFG.html#a164a3df08fc24bacc0b97aee8b6eec38">SVF::SVFG::connectIndirectSVFGEdges</a></div><div class="ttdeci">void connectIndirectSVFGEdges()</div><div class="ttdoc">Connect direct SVFG edges between two SVFG nodes (value-flow of top address-taken variables) ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00291">SVFG.cpp:291</a></div></div>
1966
1966
  <div class="ttc" id="classSVF_1_1PTAStat_html_a5524ff7901659f56e9de343992be8f3b"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a5524ff7901659f56e9de343992be8f3b">SVF::PTAStat::startClk</a></div><div class="ttdeci">virtual void startClk()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00128">PTAStat.h:128</a></div></div>
1967
1967
  <div class="ttc" id="classSVF_1_1SVFG_html_ad5c1415f488ec4412d5457262269eff3"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">SVF::SVFG::stat</a></div><div class="ttdeci">SVFGStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00104">SVFG.h:104</a></div></div>
1968
1968
  <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>
@@ -2056,7 +2056,7 @@ Additional Inherited Members</h2></td></tr>
2056
2056
  <p>Reimplemented in <a class="el" href="classSVF_1_1SVFGOPT.html#aa39900e11f5689f8bd70f3ec45865225">SVF::SVFGOPT</a>.</p>
2057
2057
 
2058
2058
  <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00287">287</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2059
- <div class="fragment"><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; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(actualIn, formalIn,csId);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a57629591037e16e57a0178d102a405f2"><div class="ttname"><a href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">SVF::SVFG::addInterIndirectVFCallEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFCallEdge(const ActualINSVFGNode *src, const FormalINSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from callsite mu to function entry chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00528">SVFG.cpp:528</a></div></div>
2059
+ <div class="fragment"><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; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(actualIn, formalIn,csId);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a57629591037e16e57a0178d102a405f2"><div class="ttname"><a href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">SVF::SVFG::addInterIndirectVFCallEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFCallEdge(const ActualINSVFGNode *src, const FormalINSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from callsite mu to function entry chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00508">SVFG.cpp:508</a></div></div>
2060
2060
  <div class="ttc" id="namespaceSVF_html_aa4745cf70b26e17d59752356f0b19dd9"><div class="ttname"><a href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVF::SVFGEdge</a></div><div class="ttdeci">VFGEdge SVFGEdge</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00040">SVFG.h:40</a></div></div>
2061
2061
  </div><!-- fragment -->
2062
2062
  </div>
@@ -2106,8 +2106,8 @@ Additional Inherited Members</h2></td></tr>
2106
2106
 
2107
2107
  <p>Reimplemented from <a class="el" href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab">SVF::VFG</a>.</p>
2108
2108
 
2109
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00660">660</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2110
- <div class="fragment"><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;{</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab">VFG::connectCallerAndCallee</a>(cs,callee,edges);</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; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(cs, callee);</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="comment">// connect actual in and formal in</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">hasFuncEntryChi</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#afca91771a622290586bfa941132c322e">hasCallSiteMu</a>(cs))</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; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">SVFG::ActualINSVFGNodeSet</a>&amp; actualInNodes = <a class="code" href="classSVF_1_1SVFG.html#ab767c329e7fccf9efe16818515199d65">getActualINSVFGNodes</a>(cs);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">SVFG::FormalINSVFGNodeSet</a>&amp; formalInNodes = <a class="code" href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">getFormalINSVFGNodes</a>(callee);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualINSVFGNodeSet::iterator ai_it = actualInNodes.begin(),</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; ai_eit = actualInNodes.end(); ai_it!=ai_eit; ++ai_it)</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="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a> * actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ai_it));</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">for</span>(SVFG::FormalINSVFGNodeSet::iterator fi_it = formalInNodes.begin(),</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; fi_eit = formalInNodes.end(); fi_it!=fi_eit; ++fi_it)</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; {</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::cast&lt;FormalINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*fi_it));</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac9ab2a95cd7a09bbe4b4aa3e6fafaf62">connectAInAndFIn</a>(actualIn, formalIn, csId, edges);</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</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; }</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="comment">// connect actual out and formal out</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">hasFuncRetMu</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#a1027dcf25e914377e02885b786d00edc">hasCallSiteChi</a>(cs))</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; <span class="comment">// connect formal out and actual out</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html#acb7262c3b9161c77eb1b491048152fb0">SVFG::FormalOUTSVFGNodeSet</a>&amp; formalOutNodes = <a class="code" href="classSVF_1_1SVFG.html#a287c337697eed7d92889bca0a0e370d7">getFormalOUTSVFGNodes</a>(callee);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVFG::ActualOUTSVFGNodeSet</a>&amp; actualOutNodes = <a class="code" href="classSVF_1_1SVFG.html#af0c86a9e83a1f2427dd8e80287be37ed">getActualOUTSVFGNodes</a>(cs);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">for</span>(SVFG::FormalOUTSVFGNodeSet::iterator fo_it = formalOutNodes.begin(),</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; fo_eit = formalOutNodes.end(); fo_it!=fo_eit; ++fo_it)</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; {</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a> * formalOut = SVFUtil::cast&lt;FormalOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*fo_it));</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualOUTSVFGNodeSet::iterator ao_it = actualOutNodes.begin(),</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; ao_eit = actualOutNodes.end(); ao_it!=ao_eit; ++ao_it)</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ao_it));</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a402dfe93b8692be453c4f76d048b690a">connectFOutAndAOut</a>(formalOut, actualOut, csId, edges);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; }</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; }</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFG_html_a8859409373454b6b3d1252776e169cf5"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">SVF::SVFG::FormalINSVFGNodeSet</a></div><div class="ttdeci">NodeBS FormalINSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00080">SVFG.h:80</a></div></div>
2109
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00640">640</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2110
+ <div class="fragment"><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; <a class="code" href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab">VFG::connectCallerAndCallee</a>(cs,callee,edges);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(cs, callee);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="comment">// connect actual in and formal in</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">hasFuncEntryChi</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#afca91771a622290586bfa941132c322e">hasCallSiteMu</a>(cs))</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">SVFG::ActualINSVFGNodeSet</a>&amp; actualInNodes = <a class="code" href="classSVF_1_1SVFG.html#ab767c329e7fccf9efe16818515199d65">getActualINSVFGNodes</a>(cs);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">SVFG::FormalINSVFGNodeSet</a>&amp; formalInNodes = <a class="code" href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">getFormalINSVFGNodes</a>(callee);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualINSVFGNodeSet::iterator ai_it = actualInNodes.begin(),</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; ai_eit = actualInNodes.end(); ai_it!=ai_eit; ++ai_it)</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; {</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a> * actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ai_it));</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">for</span>(SVFG::FormalINSVFGNodeSet::iterator fi_it = formalInNodes.begin(),</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; fi_eit = formalInNodes.end(); fi_it!=fi_eit; ++fi_it)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::cast&lt;FormalINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*fi_it));</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac9ab2a95cd7a09bbe4b4aa3e6fafaf62">connectAInAndFIn</a>(actualIn, formalIn, csId, edges);</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; }</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; }</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="comment">// connect actual out and formal out</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">hasFuncRetMu</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#a1027dcf25e914377e02885b786d00edc">hasCallSiteChi</a>(cs))</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; {</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="comment">// connect formal out and actual out</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html#acb7262c3b9161c77eb1b491048152fb0">SVFG::FormalOUTSVFGNodeSet</a>&amp; formalOutNodes = <a class="code" href="classSVF_1_1SVFG.html#a287c337697eed7d92889bca0a0e370d7">getFormalOUTSVFGNodes</a>(callee);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVFG::ActualOUTSVFGNodeSet</a>&amp; actualOutNodes = <a class="code" href="classSVF_1_1SVFG.html#af0c86a9e83a1f2427dd8e80287be37ed">getActualOUTSVFGNodes</a>(cs);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">for</span>(SVFG::FormalOUTSVFGNodeSet::iterator fo_it = formalOutNodes.begin(),</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; fo_eit = formalOutNodes.end(); fo_it!=fo_eit; ++fo_it)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a> * formalOut = SVFUtil::cast&lt;FormalOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*fo_it));</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualOUTSVFGNodeSet::iterator ao_it = actualOutNodes.begin(),</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; ao_eit = actualOutNodes.end(); ao_it!=ao_eit; ++ao_it)</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ao_it));</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a402dfe93b8692be453c4f76d048b690a">connectFOutAndAOut</a>(formalOut, actualOut, csId, edges);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; }</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</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;}</div><div class="ttc" id="classSVF_1_1SVFG_html_a8859409373454b6b3d1252776e169cf5"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">SVF::SVFG::FormalINSVFGNodeSet</a></div><div class="ttdeci">NodeBS FormalINSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00080">SVFG.h:80</a></div></div>
2111
2111
  <div class="ttc" id="classSVF_1_1FormalOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalOUTSVFGNode.html">SVF::FormalOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00135">SVFGNode.h:135</a></div></div>
2112
2112
  <div class="ttc" id="classSVF_1_1SVFG_html_ab767c329e7fccf9efe16818515199d65"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab767c329e7fccf9efe16818515199d65">SVF::SVFG::getActualINSVFGNodes</a></div><div class="ttdeci">ActualINSVFGNodeSet &amp; getActualINSVFGNodes(const CallBlockNode *cs)</div><div class="ttdoc">Get SVFGNode set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00209">SVFG.h:209</a></div></div>
2113
2113
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
@@ -2183,7 +2183,7 @@ Additional Inherited Members</h2></td></tr>
2183
2183
  <p>Reimplemented in <a class="el" href="classSVF_1_1SVFGOPT.html#a79ace9bac7f2e075c27209ea56fc6032">SVF::SVFGOPT</a>.</p>
2184
2184
 
2185
2185
  <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00294">294</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2186
- <div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(formalOut, actualOut,csId);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_ac9666ae7266cf1a9c0a5f7d28b39d1e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">SVF::SVFG::addInterIndirectVFRetEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFRetEdge(const FormalOUTSVFGNode *src, const ActualOUTSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from function exit mu to callsite chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00543">SVFG.cpp:543</a></div></div>
2186
+ <div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(formalOut, actualOut,csId);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_ac9666ae7266cf1a9c0a5f7d28b39d1e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">SVF::SVFG::addInterIndirectVFRetEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFRetEdge(const FormalOUTSVFGNode *src, const ActualOUTSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from function exit mu to callsite chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00523">SVFG.cpp:523</a></div></div>
2187
2187
  <div class="ttc" id="namespaceSVF_html_aa4745cf70b26e17d59752356f0b19dd9"><div class="ttname"><a href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVF::SVFGEdge</a></div><div class="ttdeci">VFGEdge SVFGEdge</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00040">SVFG.h:40</a></div></div>
2188
2188
  </div><!-- fragment -->
2189
2189
  </div>
@@ -2216,8 +2216,8 @@ Additional Inherited Members</h2></td></tr>
2216
2216
  <p>connect this store to main function entry</p>
2217
2217
  <p>add indirect value flow edge </p>
2218
2218
 
2219
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00409">409</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2220
- <div class="fragment"><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;{</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>();</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* mainFunc =</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aa8017e3e5100b3f63ee338b66118d266">SVFUtil::getProgEntryFunction</a>(svfModule);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">FormalINSVFGNodeSet</a>&amp; formalIns = <a class="code" href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">getFormalINSVFGNodes</a>(mainFunc);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">if</span> (formalIns.empty())</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">for</span> (GlobalVFGNodeSet::const_iterator storeIt = <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>.begin(), storeEit = <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>.end();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; storeIt != storeEit; ++storeIt)</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(*storeIt))</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; storePts = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store-&gt;getPAGDstNodeID()).toNodeBS();</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">for</span> (FormalINSVFGNodeSet::iterator fiIt = formalIns.begin(), fiEit =</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; formalIns.end(); fiIt != fiEit; ++fiIt)</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> formalInID = *fiIt;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> formalInPts = ((<a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>*) <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(formalInID))-&gt;getPointsTo();</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; formalInPts &amp;= storePts;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">if</span> (formalInPts.empty())</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(store-&gt;getId(), formalInID, formalInPts);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</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="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00236">VFGNode.h:236</a></div></div>
2219
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00389">389</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2220
+ <div class="fragment"><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_1SVFModule.html">SVFModule</a>* svfModule = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* mainFunc =</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aa8017e3e5100b3f63ee338b66118d266">SVFUtil::getProgEntryFunction</a>(svfModule);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">FormalINSVFGNodeSet</a>&amp; formalIns = <a class="code" href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">getFormalINSVFGNodes</a>(mainFunc);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">if</span> (formalIns.empty())</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span>;</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; <span class="keywordflow">for</span> (GlobalVFGNodeSet::const_iterator storeIt = <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>.begin(), storeEit = <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>.end();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; storeIt != storeEit; ++storeIt)</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="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(*storeIt))</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; storePts = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store-&gt;getPAGDstNodeID()).toNodeBS();</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; <span class="keywordflow">for</span> (FormalINSVFGNodeSet::iterator fiIt = formalIns.begin(), fiEit =</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; formalIns.end(); fiIt != fiEit; ++fiIt)</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> formalInID = *fiIt;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> formalInPts = ((<a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>*) <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(formalInID))-&gt;getPointsTo();</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; formalInPts &amp;= storePts;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> (formalInPts.empty())</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(store-&gt;getId(), formalInID, formalInPts);</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; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;}</div><div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00236">VFGNode.h:236</a></div></div>
2221
2221
  <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>
2222
2222
  <div class="ttc" id="classSVF_1_1SVFG_html_a8859409373454b6b3d1252776e169cf5"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">SVF::SVFG::FormalINSVFGNodeSet</a></div><div class="ttdeci">NodeBS FormalINSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00080">SVFG.h:80</a></div></div>
2223
2223
  <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>
@@ -2230,7 +2230,7 @@ Additional Inherited Members</h2></td></tr>
2230
2230
  <div class="ttc" id="classSVF_1_1SVFG_html_a9d0714075d6071c26d26cf16c4dec7c5"><div class="ttname"><a href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">SVF::SVFG::getFormalINSVFGNodes</a></div><div class="ttdeci">FormalINSVFGNodeSet &amp; getFormalINSVFGNodes(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00219">SVFG.h:219</a></div></div>
2231
2231
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00087">SVFBasicTypes.h:87</a></div></div>
2232
2232
  <div class="ttc" id="classSVF_1_1SVFG_html_a6f07410ee34e4bf1079e3b5902c81d28"><div class="ttname"><a href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">SVF::SVFG::mssa</a></div><div class="ttdeci">MemSSA * mssa</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00105">SVFG.h:105</a></div></div>
2233
- <div class="ttc" id="classSVF_1_1SVFG_html_ad03f0064d3a1ff397b35a606304a9c80"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">SVF::SVFG::addIntraIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addIntraIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts)</div><div class="ttdoc">Add indirect def-use edges of a memory region between two statements,. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00446">SVFG.cpp:446</a></div></div>
2233
+ <div class="ttc" id="classSVF_1_1SVFG_html_ad03f0064d3a1ff397b35a606304a9c80"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">SVF::SVFG::addIntraIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addIntraIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts)</div><div class="ttdoc">Add indirect def-use edges of a memory region between two statements,. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00426">SVFG.cpp:426</a></div></div>
2234
2234
  <div class="ttc" id="classSVF_1_1MemSSA_html_ad40617a1907b9a6b8cc24888ce54a0ac"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">SVF::MemSSA::getPTA</a></div><div class="ttdeci">BVDataPTAImpl * getPTA() const</div><div class="ttdoc">Return PTA. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00315">MemSSA.h:315</a></div></div>
2235
2235
  <div class="ttc" id="classSVF_1_1FormalINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalINSVFGNode.html">SVF::FormalINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00090">SVFGNode.h:90</a></div></div>
2236
2236
  </div><!-- fragment -->
@@ -2262,13 +2262,13 @@ Additional Inherited Members</h2></td></tr>
2262
2262
  <p>Connect direct <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> edges between two <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> nodes (value-flow of top address-taken variables) </p>
2263
2263
  <p>There's no need to connect actual out node to its definition site in the same function. </p>
2264
2264
 
2265
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00311">311</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2266
- <div class="fragment"><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;{</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; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">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="l00315"></a><span class="lineno"> 315</span>&#160; {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* loadNode = SVFUtil::dyn_cast&lt;LoadSVFGNode&gt;(node))</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">MUSet</a>&amp; muSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#aea0fc1d2e5407f86e0211d8e253fa24e">getMUSet</a>(SVFUtil::cast&lt;LoadPE&gt;(loadNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)</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; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f">LOADMU</a>* mu = SVFUtil::dyn_cast&lt;LOADMU&gt;(*it))</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(mu-&gt;getMRVer());</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, mu-&gt;getMRVer()-&gt;getMR()-&gt;getPointsTo());</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* storeNode = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(node))</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; <a class="code" href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07">CHISet</a>&amp; chiSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a24dd10cbd41df4f57d8d6fa9ca6a3083">getCHISet</a>(SVFUtil::cast&lt;StorePE&gt;(storeNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b">STORECHI</a>* chi = SVFUtil::dyn_cast&lt;STORECHI&gt;(*it))</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(chi-&gt;getOpVer());</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, chi-&gt;getOpVer()-&gt;getMR()-&gt;getPointsTo());</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#aca11d1b778309a72e9d345bd02324459">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalIn-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = *it;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(cs))</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">ActualINSVFGNodeSet</a>&amp; actualIns = <a class="code" href="classSVF_1_1SVFG.html#ab767c329e7fccf9efe16818515199d65">getActualINSVFGNodes</a>(cs);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">for</span>(ActualINSVFGNodeSet::iterator ait = actualIns.begin(), aeit = actualIns.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(actualIn,formalIn,<a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(cs, formalIn-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut = SVFUtil::dyn_cast&lt;FormalOUTSVFGNode&gt;(node))</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_1PTACallGraphEdge.html#aca11d1b778309a72e9d345bd02324459">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="comment">// const MemSSA::RETMU* retMu = formalOut-&gt;getRetMU();</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalOut-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = *it;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(cs))</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">ActualOUTSVFGNodeSet</a>&amp; actualOuts = <a class="code" href="classSVF_1_1SVFG.html#af0c86a9e83a1f2427dd8e80287be37ed">getActualOUTSVFGNodes</a>(cs);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">for</span>(ActualOUTSVFGNodeSet::iterator ait = actualOuts.begin(), aeit = actualOuts.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(formalOut,actualOut,<a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(cs, formalOut-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</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="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(formalOut-&gt;getMRVer());</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, formalOut-&gt;getMRVer()-&gt;getMR()-&gt;getPointsTo());</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="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::dyn_cast&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* ver = actualIn-&gt;getMRVer();</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(ver);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, ver-&gt;<a class="code" href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">getMR</a>()-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* phiNode = SVFUtil::dyn_cast&lt;MSSAPHISVFGNode&gt;(node))</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; <span class="keywordflow">for</span> (MemSSA::PHI::OPVers::const_iterator it = phiNode-&gt;opVerBegin(), eit = phiNode-&gt;opVerEnd();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; it != eit; it++)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* op = it-&gt;second;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(op);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, op-&gt;<a class="code" href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">getMR</a>()-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</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; }</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;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a5921483cd5e1bf77b1b2bc8fb3250612">connectFromGlobalToProgEntry</a>();</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
2265
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00291">291</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2266
+ <div class="fragment"><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; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">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="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* loadNode = SVFUtil::dyn_cast&lt;LoadSVFGNode&gt;(node))</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">MUSet</a>&amp; muSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#aea0fc1d2e5407f86e0211d8e253fa24e">getMUSet</a>(SVFUtil::cast&lt;LoadPE&gt;(loadNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f">LOADMU</a>* mu = SVFUtil::dyn_cast&lt;LOADMU&gt;(*it))</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(mu-&gt;getMRVer());</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, mu-&gt;getMRVer()-&gt;getMR()-&gt;getPointsTo());</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* storeNode = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(node))</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07">CHISet</a>&amp; chiSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a24dd10cbd41df4f57d8d6fa9ca6a3083">getCHISet</a>(SVFUtil::cast&lt;StorePE&gt;(storeNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b">STORECHI</a>* chi = SVFUtil::dyn_cast&lt;STORECHI&gt;(*it))</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(chi-&gt;getOpVer());</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, chi-&gt;getOpVer()-&gt;getMR()-&gt;getPointsTo());</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#aca11d1b778309a72e9d345bd02324459">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalIn-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = *it;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(cs))</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">ActualINSVFGNodeSet</a>&amp; actualIns = <a class="code" href="classSVF_1_1SVFG.html#ab767c329e7fccf9efe16818515199d65">getActualINSVFGNodes</a>(cs);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">for</span>(ActualINSVFGNodeSet::iterator ait = actualIns.begin(), aeit = actualIns.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(actualIn,formalIn,<a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(cs, formalIn-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</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; }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut = SVFUtil::dyn_cast&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#aca11d1b778309a72e9d345bd02324459">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="comment">// const MemSSA::RETMU* retMu = formalOut-&gt;getRetMU();</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalOut-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</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="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = *it;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(cs))</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">ActualOUTSVFGNodeSet</a>&amp; actualOuts = <a class="code" href="classSVF_1_1SVFG.html#af0c86a9e83a1f2427dd8e80287be37ed">getActualOUTSVFGNodes</a>(cs);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">for</span>(ActualOUTSVFGNodeSet::iterator ait = actualOuts.begin(), aeit = actualOuts.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(formalOut,actualOut,<a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(cs, formalOut-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(formalOut-&gt;getMRVer());</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, formalOut-&gt;getMRVer()-&gt;getMR()-&gt;getPointsTo());</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::dyn_cast&lt;ActualINSVFGNode&gt;(node))</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* ver = actualIn-&gt;getMRVer();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(ver);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, ver-&gt;<a class="code" href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">getMR</a>()-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* phiNode = SVFUtil::dyn_cast&lt;MSSAPHISVFGNode&gt;(node))</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="keywordflow">for</span> (MemSSA::PHI::OPVers::const_iterator it = phiNode-&gt;opVerBegin(), eit = phiNode-&gt;opVerEnd();</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; it != eit; it++)</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* op = it-&gt;second;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(op);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, op-&gt;<a class="code" href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">getMR</a>()-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</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; }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a5921483cd5e1bf77b1b2bc8fb3250612">connectFromGlobalToProgEntry</a>();</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
2267
2267
  <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#l00365">GenericGraph.h:365</a></div></div>
2268
2268
  <div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00236">VFGNode.h:236</a></div></div>
2269
2269
  <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>
2270
2270
  <div class="ttc" id="classSVF_1_1SVFG_html_acdbe1c510273107b708935061b6c4127"><div class="ttname"><a href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">SVF::SVFG::MUSet</a></div><div class="ttdeci">MemSSA::MUSet MUSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00086">SVFG.h:86</a></div></div>
2271
- <div class="ttc" id="classSVF_1_1SVFG_html_a5921483cd5e1bf77b1b2bc8fb3250612"><div class="ttname"><a href="classSVF_1_1SVFG.html#a5921483cd5e1bf77b1b2bc8fb3250612">SVF::SVFG::connectFromGlobalToProgEntry</a></div><div class="ttdeci">void connectFromGlobalToProgEntry()</div><div class="ttdoc">Connect indirect SVFG edges from global initializers (store) to main function entry. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00409">SVFG.cpp:409</a></div></div>
2271
+ <div class="ttc" id="classSVF_1_1SVFG_html_a5921483cd5e1bf77b1b2bc8fb3250612"><div class="ttname"><a href="classSVF_1_1SVFG.html#a5921483cd5e1bf77b1b2bc8fb3250612">SVF::SVFG::connectFromGlobalToProgEntry</a></div><div class="ttdeci">void connectFromGlobalToProgEntry()</div><div class="ttdoc">Connect indirect SVFG edges from global initializers (store) to main function entry. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00389">SVFG.cpp:389</a></div></div>
2272
2272
  <div class="ttc" id="classSVF_1_1SVFG_html_a86d4a41a881a3d2e5def103d7ba8bb2f"><div class="ttname"><a href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f">SVF::SVFG::LOADMU</a></div><div class="ttdeci">MemSSA::LOADMU LOADMU</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00091">SVFG.h:91</a></div></div>
2273
2273
  <div class="ttc" id="classSVF_1_1FormalOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalOUTSVFGNode.html">SVF::FormalOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00135">SVFGNode.h:135</a></div></div>
2274
2274
  <div class="ttc" id="classSVF_1_1MemSSA_html_aea0fc1d2e5407f86e0211d8e253fa24e"><div class="ttname"><a href="classSVF_1_1MemSSA.html#aea0fc1d2e5407f86e0211d8e253fa24e">SVF::MemSSA::getMUSet</a></div><div class="ttdeci">MUSet &amp; getMUSet(const LoadPE *ld)</div><div class="ttdoc">Get methods of mu/chi/phi. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00388">MemSSA.h:388</a></div></div>
@@ -2284,10 +2284,10 @@ Additional Inherited Members</h2></td></tr>
2284
2284
  <div class="ttc" id="classSVF_1_1VFG_html_a241d0489bf0315460e2b07db87e7847c"><div class="ttname"><a href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVF::VFG::iterator</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00079">VFG.h:79</a></div></div>
2285
2285
  <div class="ttc" id="classSVF_1_1SVFG_html_af0c86a9e83a1f2427dd8e80287be37ed"><div class="ttname"><a href="classSVF_1_1SVFG.html#af0c86a9e83a1f2427dd8e80287be37ed">SVF::SVFG::getActualOUTSVFGNodes</a></div><div class="ttdeci">ActualOUTSVFGNodeSet &amp; getActualOUTSVFGNodes(const CallBlockNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00214">SVFG.h:214</a></div></div>
2286
2286
  <div class="ttc" id="classSVF_1_1MemSSA_html_af5e356e82c3f93b65bd89908e0f465dc"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">SVF::MemSSA::hasMU</a></div><div class="ttdeci">bool hasMU(const PAGEdge *inst) const</div><div class="ttdoc">Has mu/chi methods. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00332">MemSSA.h:332</a></div></div>
2287
- <div class="ttc" id="classSVF_1_1SVFG_html_a57629591037e16e57a0178d102a405f2"><div class="ttname"><a href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">SVF::SVFG::addInterIndirectVFCallEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFCallEdge(const ActualINSVFGNode *src, const FormalINSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from callsite mu to function entry chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00528">SVFG.cpp:528</a></div></div>
2287
+ <div class="ttc" id="classSVF_1_1SVFG_html_a57629591037e16e57a0178d102a405f2"><div class="ttname"><a href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">SVF::SVFG::addInterIndirectVFCallEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFCallEdge(const ActualINSVFGNode *src, const FormalINSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from callsite mu to function entry chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00508">SVFG.cpp:508</a></div></div>
2288
2288
  <div class="ttc" id="classSVF_1_1VFG_html_a9bc8e7ee74b652ed7708e95c16a63728"><div class="ttname"><a href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">SVF::VFG::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallBlockNode *cs, const SVFFunction *func) const</div><div class="ttdoc">Get callsite given a callsiteID. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00176">VFG.h:176</a></div></div>
2289
2289
  <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#l00197">VFGNode.h:197</a></div></div>
2290
- <div class="ttc" id="classSVF_1_1SVFG_html_ac9666ae7266cf1a9c0a5f7d28b39d1e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">SVF::SVFG::addInterIndirectVFRetEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFRetEdge(const FormalOUTSVFGNode *src, const ActualOUTSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from function exit mu to callsite chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00543">SVFG.cpp:543</a></div></div>
2290
+ <div class="ttc" id="classSVF_1_1SVFG_html_ac9666ae7266cf1a9c0a5f7d28b39d1e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">SVF::SVFG::addInterIndirectVFRetEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFRetEdge(const FormalOUTSVFGNode *src, const ActualOUTSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from function exit mu to callsite chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00523">SVFG.cpp:523</a></div></div>
2291
2291
  <div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00350">SVFG.h:350</a></div></div>
2292
2292
  <div class="ttc" id="classSVF_1_1MRVer_html_a63bd0641be553860cc5f517634b65825"><div class="ttname"><a href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">SVF::MRVer::getMR</a></div><div class="ttdeci">const MemRegion * getMR() const</div><div class="ttdoc">Return the memory region. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00063">MSSAMuChi.h:63</a></div></div>
2293
2293
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a0d2544130cc2cdc3ac418c975c278eb2"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">SVF::PTACallGraph::getDirCallSitesInvokingCallee</a></div><div class="ttdeci">void getDirCallSitesInvokingCallee(const SVFFunction *callee, PTACallGraphEdge::CallInstSet &amp;csSet)</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00229">PTACallGraph.cpp:229</a></div></div>
@@ -2297,7 +2297,7 @@ Additional Inherited Members</h2></td></tr>
2297
2297
  <div class="ttc" id="classSVF_1_1SVFG_html_a6f07410ee34e4bf1079e3b5902c81d28"><div class="ttname"><a href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">SVF::SVFG::mssa</a></div><div class="ttdeci">MemSSA * mssa</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00105">SVFG.h:105</a></div></div>
2298
2298
  <div class="ttc" id="classSVF_1_1SVFG_html_a8843ab4a4608f7f5f46f68ad31314c07"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07">SVF::SVFG::CHISet</a></div><div class="ttdeci">MemSSA::CHISet CHISet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00087">SVFG.h:87</a></div></div>
2299
2299
  <div class="ttc" id="classSVF_1_1MemSSA_html_a24dd10cbd41df4f57d8d6fa9ca6a3083"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a24dd10cbd41df4f57d8d6fa9ca6a3083">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet &amp; getCHISet(const StorePE *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00392">MemSSA.h:392</a></div></div>
2300
- <div class="ttc" id="classSVF_1_1SVFG_html_ad03f0064d3a1ff397b35a606304a9c80"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">SVF::SVFG::addIntraIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addIntraIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts)</div><div class="ttdoc">Add indirect def-use edges of a memory region between two statements,. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00446">SVFG.cpp:446</a></div></div>
2300
+ <div class="ttc" id="classSVF_1_1SVFG_html_ad03f0064d3a1ff397b35a606304a9c80"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">SVF::SVFG::addIntraIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addIntraIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts)</div><div class="ttdoc">Add indirect def-use edges of a memory region between two statements,. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00426">SVFG.cpp:426</a></div></div>
2301
2301
  <div class="ttc" id="classSVF_1_1MemSSA_html_ad40617a1907b9a6b8cc24888ce54a0ac"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">SVF::MemSSA::getPTA</a></div><div class="ttdeci">BVDataPTAImpl * getPTA() const</div><div class="ttdoc">Return PTA. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00315">MemSSA.h:315</a></div></div>
2302
2302
  <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>
2303
2303
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_aca11d1b778309a72e9d345bd02324459"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#aca11d1b778309a72e9d345bd02324459">SVF::PTACallGraphEdge::CallInstSet</a></div><div class="ttdeci">Set&lt; const CallBlockNode * &gt; CallInstSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00055">PTACallGraph.h:55</a></div></div>
@@ -2333,8 +2333,8 @@ Additional Inherited Members</h2></td></tr>
2333
2333
  <p>Clean up memory. </p>
2334
2334
  <p>Memory has been cleaned up at <a class="el" href="classSVF_1_1GenericGraph.html">GenericGraph</a> </p>
2335
2335
 
2336
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00203">203</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2337
- <div class="fragment"><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;{</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aeba803e60699f9d9422596d161d44241">clearMSSA</a>();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFG_html_aeba803e60699f9d9422596d161d44241"><div class="ttname"><a href="classSVF_1_1SVFG.html#aeba803e60699f9d9422596d161d44241">SVF::SVFG::clearMSSA</a></div><div class="ttdeci">void clearMSSA()</div><div class="ttdoc">Clear MSSA. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00131">SVFG.h:131</a></div></div>
2336
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00183">183</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2337
+ <div class="fragment"><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aeba803e60699f9d9422596d161d44241">clearMSSA</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFG_html_aeba803e60699f9d9422596d161d44241"><div class="ttname"><a href="classSVF_1_1SVFG.html#aeba803e60699f9d9422596d161d44241">SVF::SVFG::clearMSSA</a></div><div class="ttdeci">void clearMSSA()</div><div class="ttdoc">Clear MSSA. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00131">SVFG.h:131</a></div></div>
2338
2338
  <div class="ttc" id="classSVF_1_1SVFG_html_ad5c1415f488ec4412d5457262269eff3"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">SVF::SVFG::stat</a></div><div class="ttdeci">SVFGStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00104">SVFG.h:104</a></div></div>
2339
2339
  </div><!-- fragment -->
2340
2340
  </div>
@@ -2368,8 +2368,8 @@ Additional Inherited Members</h2></td></tr>
2368
2368
  <p>Dump graph into dot file. </p>
2369
2369
  <p>Dump <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> </p>
2370
2370
 
2371
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00559">559</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2372
- <div class="fragment"><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;{</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <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="l00562"></a><span class="lineno"> 562</span>&#160;}</div><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>
2371
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00539">539</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2372
+ <div class="fragment"><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;{</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</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="l00542"></a><span class="lineno"> 542</span>&#160;}</div><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>
2373
2373
  <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#l00056">GraphPrinter.h:56</a></div></div>
2374
2374
  </div><!-- fragment -->
2375
2375
  </div>
@@ -2391,8 +2391,8 @@ Additional Inherited Members</h2></td></tr>
2391
2391
  </div><div class="memdoc">
2392
2392
  <p>Return the corresponding SVFGNodes to a given llvm::Value. return an empty list, if the no mapping is possible </p>
2393
2393
 
2394
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00564">564</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2395
- <div class="fragment"><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_1PAG.html">PAG</a>* <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a> = <a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">PAG::getPAG</a>();</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; std::set&lt;const SVFGNode*&gt; ret;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="comment">// search for all PAGEdges first</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* pagEdge : pag-&gt;<a class="code" href="classSVF_1_1PAG.html#a407d4cf15bc33dc54649f5d79c5f38f0">getValueEdges</a>(value)) {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; PAGEdgeToStmtVFGNodeMapTy::const_iterator it = <a class="code" href="classSVF_1_1VFG.html#a462fe6eefc55a436f90f91adeb34726f">PAGEdgeToStmtVFGNodeMap</a>.find(pagEdge);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1VFG.html#a462fe6eefc55a436f90f91adeb34726f">PAGEdgeToStmtVFGNodeMap</a>.end()) {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; ret.emplace(it-&gt;second);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="comment">// add all PAGNodes</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* pagNode = pag-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(pag-&gt;<a class="code" href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">getValueNode</a>(value));</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#a926c79813d5cfbd16201832024b95190">hasDef</a>(pagNode)) {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; ret.emplace(<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(pagNode));</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;}</div><div class="ttc" id="classSVF_1_1PAG_html_a5f49b7da110a626ed6605d1f108dfa25"><div class="ttname"><a href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">SVF::PAG::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get PAG Node according to LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00547">PAG.h:547</a></div></div>
2394
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00544">544</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2395
+ <div class="fragment"><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;{</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="classSVF_1_1PAG.html">PAG</a>* <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a> = <a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">PAG::getPAG</a>();</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; std::set&lt;const SVFGNode*&gt; ret;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="comment">// search for all PAGEdges first</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* pagEdge : pag-&gt;<a class="code" href="classSVF_1_1PAG.html#a407d4cf15bc33dc54649f5d79c5f38f0">getValueEdges</a>(value)) {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; PAGEdgeToStmtVFGNodeMapTy::const_iterator it = <a class="code" href="classSVF_1_1VFG.html#a462fe6eefc55a436f90f91adeb34726f">PAGEdgeToStmtVFGNodeMap</a>.find(pagEdge);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1VFG.html#a462fe6eefc55a436f90f91adeb34726f">PAGEdgeToStmtVFGNodeMap</a>.end()) {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; ret.emplace(it-&gt;second);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="comment">// add all PAGNodes</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* pagNode = pag-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(pag-&gt;<a class="code" href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">getValueNode</a>(value));</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#a926c79813d5cfbd16201832024b95190">hasDef</a>(pagNode)) {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; ret.emplace(<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(pagNode));</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;}</div><div class="ttc" id="classSVF_1_1PAG_html_a5f49b7da110a626ed6605d1f108dfa25"><div class="ttname"><a href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">SVF::PAG::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get PAG Node according to LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00547">PAG.h:547</a></div></div>
2396
2396
  <div class="ttc" id="classSVF_1_1PAGEdge_html"><div class="ttname"><a href="classSVF_1_1PAGEdge.html">SVF::PAGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00047">PAGEdge.h:47</a></div></div>
2397
2397
  <div class="ttc" id="classSVF_1_1SVFG_html_a8e7a945f4266e8dc7dcfff2ad6494bfb"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">SVF::SVFG::getDefSVFGNode</a></div><div class="ttdeci">const SVFGNode * getDefSVFGNode(const PAGNode *pagNode) const</div><div class="ttdoc">Given a pagNode, return its definition site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00171">SVFG.h:171</a></div></div>
2398
2398
  <div class="ttc" id="classSVF_1_1PAG_html"><div class="ttname"><a href="classSVF_1_1PAG.html">SVF::PAG</a></div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00047">PAG.h:47</a></div></div>
@@ -2864,8 +2864,8 @@ Additional Inherited Members</h2></td></tr>
2864
2864
  <p>Get all inter value flow edges of a indirect call site. </p>
2865
2865
  <p>Get all inter value flow edges at this indirect call site, including call and return edges. </p>
2866
2866
 
2867
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00586">586</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2868
- <div class="fragment"><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;{</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <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="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* retBlockNode = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#ad274c5c15ac51cea5d09ad08febe8c14">getICFG</a>()-&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="l00590"></a><span class="lineno"> 590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="comment">// Find inter direct call edges between actual param and formal param.</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a157df68295822a17ad07a850a230bae1">hasCallSiteArgsMap</a>(callBlockNode) &amp;&amp; <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#abfb24b0a57ffe59f345a7490ce64e63d">hasFunArgsList</a>(callee))</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAG.html#a1aedb70211aa31a4741615e611d64397">PAG::PAGNodeList</a>&amp; csArgList = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4dac2dc4756bf3f84e6fa034a8b906da">getCallSiteArgsList</a>(callBlockNode);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAG.html#a1aedb70211aa31a4741615e611d64397">PAG::PAGNodeList</a>&amp; funArgList = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#ad2ff2e50f8e5234979ba9cacc6a6268c">getFunArgsList</a>(callee);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; PAG::PAGNodeList::const_iterator csArgIt = csArgList.begin(), csArgEit = csArgList.end();</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; PAG::PAGNodeList::const_iterator funArgIt = funArgList.begin(), funArgEit = funArgList.end();</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">for</span> (; funArgIt != funArgEit &amp;&amp; csArgIt != csArgEit; funArgIt++, csArgIt++)</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *fun_arg = *funArgIt;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">if</span> (fun_arg-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>() &amp;&amp; cs_arg-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>())</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a9b133773dae3e7c613516ba16cfdfa2c">getInterVFEdgeAtIndCSFromAPToFP</a>(cs_arg, fun_arg, callBlockNode, csId, edges);</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; <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="l00606"></a><span class="lineno"> 606</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="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> varFunArg = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#aa7b2e9e0b3386e27af8413be4c36f519">getVarargNode</a>(callee);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* varFunArgNode = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(varFunArg);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">if</span> (varFunArgNode-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>())</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">for</span> (; csArgIt != csArgEit; csArgIt++)</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">if</span> (cs_arg-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>())</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a9b133773dae3e7c613516ba16cfdfa2c">getInterVFEdgeAtIndCSFromAPToFP</a>(cs_arg, varFunArgNode, callBlockNode, csId, edges);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; }</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; }</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="comment">// Find inter direct return edges between actual return and formal return.</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a08f1b7f68a267b6cc5ad9cb3f1efede0">funHasRet</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a0ed3da89d9cba90888e04969dc43f5a3">callsiteHasRet</a>(retBlockNode))</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* cs_return = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#ae455de4db007a5bebffd3a9c16e0b107">getCallSiteRet</a>(retBlockNode);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* fun_return = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a838a9fa42e68b5f32853f73fa05a7c09">getFunRet</a>(callee);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">if</span> (cs_return-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>() &amp;&amp; fun_return-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>())</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14">getInterVFEdgeAtIndCSFromFRToAR</a>(fun_return, cs_return, csId, edges);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }</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="comment">// Find inter indirect call edges between actual-in and formal-in svfg nodes.</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">hasFuncEntryChi</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#afca91771a622290586bfa941132c322e">hasCallSiteMu</a>(callBlockNode))</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; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">SVFG::ActualINSVFGNodeSet</a>&amp; actualInNodes = <a class="code" href="classSVF_1_1SVFG.html#ab767c329e7fccf9efe16818515199d65">getActualINSVFGNodes</a>(callBlockNode);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualINSVFGNodeSet::iterator ai_it = actualInNodes.begin(),</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; ai_eit = actualInNodes.end(); ai_it!=ai_eit; ++ai_it)</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a> * actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ai_it));</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#afbaf925e1e165f75161999229fa5f782">getInterVFEdgeAtIndCSFromAInToFIn</a>(actualIn, callee, edges);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; }</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="comment">// Find inter indirect return edges between actual-out and formal-out svfg nodes.</span></div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">hasFuncRetMu</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#a1027dcf25e914377e02885b786d00edc">hasCallSiteChi</a>(callBlockNode))</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVFG::ActualOUTSVFGNodeSet</a>&amp; actualOutNodes = <a class="code" href="classSVF_1_1SVFG.html#af0c86a9e83a1f2427dd8e80287be37ed">getActualOUTSVFGNodes</a>(callBlockNode);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualOUTSVFGNodeSet::iterator ao_it = actualOutNodes.begin(),</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; ao_eit = actualOutNodes.end(); ao_it!=ao_eit; ++ao_it)</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; <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ao_it));</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a7a88391e0c2cf8a57238dec32c2474a3">getInterVFEdgeAtIndCSFromFOutToAOut</a>(actualOut, callee, edges);</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; }</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;}</div><div class="ttc" id="classSVF_1_1PAG_html_a838a9fa42e68b5f32853f73fa05a7c09"><div class="ttname"><a href="classSVF_1_1PAG.html#a838a9fa42e68b5f32853f73fa05a7c09">SVF::PAG::getFunRet</a></div><div class="ttdeci">const PAGNode * getFunRet(const SVFFunction *func) const</div><div class="ttdoc">Get function return list. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00426">PAG.h:426</a></div></div>
2867
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00566">566</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2868
+ <div class="fragment"><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;{</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <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="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* retBlockNode = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#ad274c5c15ac51cea5d09ad08febe8c14">getICFG</a>()-&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="l00570"></a><span class="lineno"> 570</span>&#160;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="comment">// Find inter direct call edges between actual param and formal param.</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a157df68295822a17ad07a850a230bae1">hasCallSiteArgsMap</a>(callBlockNode) &amp;&amp; <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#abfb24b0a57ffe59f345a7490ce64e63d">hasFunArgsList</a>(callee))</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAG.html#a1aedb70211aa31a4741615e611d64397">PAG::PAGNodeList</a>&amp; csArgList = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4dac2dc4756bf3f84e6fa034a8b906da">getCallSiteArgsList</a>(callBlockNode);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAG.html#a1aedb70211aa31a4741615e611d64397">PAG::PAGNodeList</a>&amp; funArgList = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#ad2ff2e50f8e5234979ba9cacc6a6268c">getFunArgsList</a>(callee);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; PAG::PAGNodeList::const_iterator csArgIt = csArgList.begin(), csArgEit = csArgList.end();</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; PAG::PAGNodeList::const_iterator funArgIt = funArgList.begin(), funArgEit = funArgList.end();</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">for</span> (; funArgIt != funArgEit &amp;&amp; csArgIt != csArgEit; funArgIt++, csArgIt++)</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *fun_arg = *funArgIt;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (fun_arg-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>() &amp;&amp; cs_arg-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>())</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a9b133773dae3e7c613516ba16cfdfa2c">getInterVFEdgeAtIndCSFromAPToFP</a>(cs_arg, fun_arg, callBlockNode, csId, edges);</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="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="l00586"></a><span class="lineno"> 586</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="l00587"></a><span class="lineno"> 587</span>&#160; {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> varFunArg = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#aa7b2e9e0b3386e27af8413be4c36f519">getVarargNode</a>(callee);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* varFunArgNode = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(varFunArg);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">if</span> (varFunArgNode-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>())</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">for</span> (; csArgIt != csArgEit; csArgIt++)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">if</span> (cs_arg-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>())</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a9b133773dae3e7c613516ba16cfdfa2c">getInterVFEdgeAtIndCSFromAPToFP</a>(cs_arg, varFunArgNode, callBlockNode, csId, edges);</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="l00600"></a><span class="lineno"> 600</span>&#160; }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="comment">// Find inter direct return edges between actual return and formal return.</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a08f1b7f68a267b6cc5ad9cb3f1efede0">funHasRet</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a0ed3da89d9cba90888e04969dc43f5a3">callsiteHasRet</a>(retBlockNode))</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* cs_return = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#ae455de4db007a5bebffd3a9c16e0b107">getCallSiteRet</a>(retBlockNode);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* fun_return = <a class="code" href="classSVF_1_1VFG.html#ad4f5debd234a444516c3a406c464795c">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a838a9fa42e68b5f32853f73fa05a7c09">getFunRet</a>(callee);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">if</span> (cs_return-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>() &amp;&amp; fun_return-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>())</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14">getInterVFEdgeAtIndCSFromFRToAR</a>(fun_return, cs_return, csId, edges);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</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="comment">// Find inter indirect call edges between actual-in and formal-in svfg nodes.</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">hasFuncEntryChi</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#afca91771a622290586bfa941132c322e">hasCallSiteMu</a>(callBlockNode))</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">SVFG::ActualINSVFGNodeSet</a>&amp; actualInNodes = <a class="code" href="classSVF_1_1SVFG.html#ab767c329e7fccf9efe16818515199d65">getActualINSVFGNodes</a>(callBlockNode);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualINSVFGNodeSet::iterator ai_it = actualInNodes.begin(),</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; ai_eit = actualInNodes.end(); ai_it!=ai_eit; ++ai_it)</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a> * actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ai_it));</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#afbaf925e1e165f75161999229fa5f782">getInterVFEdgeAtIndCSFromAInToFIn</a>(actualIn, callee, edges);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</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; <span class="comment">// Find inter indirect return edges between actual-out and formal-out svfg nodes.</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">hasFuncRetMu</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#a1027dcf25e914377e02885b786d00edc">hasCallSiteChi</a>(callBlockNode))</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; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVFG::ActualOUTSVFGNodeSet</a>&amp; actualOutNodes = <a class="code" href="classSVF_1_1SVFG.html#af0c86a9e83a1f2427dd8e80287be37ed">getActualOUTSVFGNodes</a>(callBlockNode);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualOUTSVFGNodeSet::iterator ao_it = actualOutNodes.begin(),</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; ao_eit = actualOutNodes.end(); ao_it!=ao_eit; ++ao_it)</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ao_it));</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a7a88391e0c2cf8a57238dec32c2474a3">getInterVFEdgeAtIndCSFromFOutToAOut</a>(actualOut, callee, edges);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; }</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="ttc" id="classSVF_1_1PAG_html_a838a9fa42e68b5f32853f73fa05a7c09"><div class="ttname"><a href="classSVF_1_1PAG.html#a838a9fa42e68b5f32853f73fa05a7c09">SVF::PAG::getFunRet</a></div><div class="ttdeci">const PAGNode * getFunRet(const SVFFunction *func) const</div><div class="ttdoc">Get function return list. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00426">PAG.h:426</a></div></div>
2869
2869
  <div class="ttc" id="classSVF_1_1PAG_html_a157df68295822a17ad07a850a230bae1"><div class="ttname"><a href="classSVF_1_1PAG.html#a157df68295822a17ad07a850a230bae1">SVF::PAG::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="PAG_8h_source.html#l00388">PAG.h:388</a></div></div>
2870
2870
  <div class="ttc" id="classSVF_1_1PAG_html_ad274c5c15ac51cea5d09ad08febe8c14"><div class="ttname"><a href="classSVF_1_1PAG.html#ad274c5c15ac51cea5d09ad08febe8c14">SVF::PAG::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00135">PAG.h:135</a></div></div>
2871
2871
  <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>
@@ -3372,8 +3372,8 @@ Additional Inherited Members</h2></td></tr>
3372
3372
  <p>Whether a node is callsite return SVFGNode. </p>
3373
3373
  <p>Whether this is an callsite return SVFGNode (actual return, actual out) </p>
3374
3374
 
3375
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00734">734</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
3376
- <div class="fragment"><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;{</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>* ar = SVFUtil::dyn_cast&lt;ActualRetSVFGNode&gt;(node))</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">return</span> ar-&gt;getCallSite();</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* phi = SVFUtil::dyn_cast&lt;InterPHISVFGNode&gt;(node))</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">if</span>(phi-&gt;isActualRetPHI())</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">return</span> phi-&gt;getCallSite();</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* ao = SVFUtil::dyn_cast&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">return</span> ao-&gt;getCallSite();</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; }</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterMSSAPHISVFGNode.html">InterMSSAPHISVFGNode</a>* mphi = SVFUtil::dyn_cast&lt;InterMSSAPHISVFGNode&gt;(node))</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; <span class="keywordflow">if</span>(mphi-&gt;isActualOUTPHI())</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">return</span> mphi-&gt;getCallSite();</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; }</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;}</div><div class="ttc" id="classSVF_1_1ActualOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualOUTSVFGNode.html">SVF::ActualOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00226">SVFGNode.h:226</a></div></div>
3375
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00714">714</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
3376
+ <div class="fragment"><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; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>* ar = SVFUtil::dyn_cast&lt;ActualRetSVFGNode&gt;(node))</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; {</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">return</span> ar-&gt;getCallSite();</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</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">InterPHISVFGNode</a>* phi = SVFUtil::dyn_cast&lt;InterPHISVFGNode&gt;(node))</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; <span class="keywordflow">if</span>(phi-&gt;isActualRetPHI())</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">return</span> phi-&gt;getCallSite();</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* ao = SVFUtil::dyn_cast&lt;ActualOUTSVFGNode&gt;(node))</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; <span class="keywordflow">return</span> ao-&gt;getCallSite();</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; }</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterMSSAPHISVFGNode.html">InterMSSAPHISVFGNode</a>* mphi = SVFUtil::dyn_cast&lt;InterMSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; {</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">if</span>(mphi-&gt;isActualOUTPHI())</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">return</span> mphi-&gt;getCallSite();</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; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;}</div><div class="ttc" id="classSVF_1_1ActualOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualOUTSVFGNode.html">SVF::ActualOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00226">SVFGNode.h:226</a></div></div>
3377
3377
  <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#l00896">VFGNode.h:896</a></div></div>
3378
3378
  <div class="ttc" id="classSVF_1_1InterMSSAPHISVFGNode_html"><div class="ttname"><a href="classSVF_1_1InterMSSAPHISVFGNode.html">SVF::InterMSSAPHISVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00403">SVFGNode.h:403</a></div></div>
3379
3379
  <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#l01016">VFGNode.h:1016</a></div></div>
@@ -3399,8 +3399,8 @@ Additional Inherited Members</h2></td></tr>
3399
3399
  <p>Whether a node is function entry SVFGNode. </p>
3400
3400
  <p>Whether this is an function entry SVFGNode (formal parameter, formal In) </p>
3401
3401
 
3402
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00708">708</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
3403
- <div class="fragment"><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;{</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmSVFGNode</a>* fp = SVFUtil::dyn_cast&lt;FormalParmSVFGNode&gt;(node))</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">return</span> fp-&gt;getFun();</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* phi = SVFUtil::dyn_cast&lt;InterPHISVFGNode&gt;(node))</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; <span class="keywordflow">if</span>(phi-&gt;isFormalParmPHI())</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">return</span> phi-&gt;getFun();</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* fi = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; {</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">return</span> fi-&gt;getFun();</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterMSSAPHISVFGNode.html">InterMSSAPHISVFGNode</a>* mphi = SVFUtil::dyn_cast&lt;InterMSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">if</span>(mphi-&gt;isFormalINPHI())</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">return</span> phi-&gt;getFun();</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; }</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;}</div><div class="ttc" id="classSVF_1_1InterMSSAPHISVFGNode_html"><div class="ttname"><a href="classSVF_1_1InterMSSAPHISVFGNode.html">SVF::InterMSSAPHISVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00403">SVFGNode.h:403</a></div></div>
3402
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00688">688</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
3403
+ <div class="fragment"><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;{</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmSVFGNode</a>* fp = SVFUtil::dyn_cast&lt;FormalParmSVFGNode&gt;(node))</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> fp-&gt;getFun();</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</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">InterPHISVFGNode</a>* phi = SVFUtil::dyn_cast&lt;InterPHISVFGNode&gt;(node))</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">if</span>(phi-&gt;isFormalParmPHI())</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">return</span> phi-&gt;getFun();</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* fi = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">return</span> fi-&gt;getFun();</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; }</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterMSSAPHISVFGNode.html">InterMSSAPHISVFGNode</a>* mphi = SVFUtil::dyn_cast&lt;InterMSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; {</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span>(mphi-&gt;isFormalINPHI())</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> phi-&gt;getFun();</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;}</div><div class="ttc" id="classSVF_1_1InterMSSAPHISVFGNode_html"><div class="ttname"><a href="classSVF_1_1InterMSSAPHISVFGNode.html">SVF::InterMSSAPHISVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00403">SVFGNode.h:403</a></div></div>
3404
3404
  <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#l00829">VFGNode.h:829</a></div></div>
3405
3405
  <div class="ttc" id="classSVF_1_1FormalINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalINSVFGNode.html">SVF::FormalINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00090">SVFGNode.h:90</a></div></div>
3406
3406
  <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#l01016">VFGNode.h:1016</a></div></div>
@@ -3425,8 +3425,8 @@ Additional Inherited Members</h2></td></tr>
3425
3425
  <p>Perform statistics. </p>
3426
3426
  <p>Perform Statistics </p>
3427
3427
 
3428
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00760">760</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
3429
- <div class="fragment"><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="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#ab11b1fbef2bd7cfc9bf8e1b993dbfa11">performStat</a>();</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFGStat_html_ab11b1fbef2bd7cfc9bf8e1b993dbfa11"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#ab11b1fbef2bd7cfc9bf8e1b993dbfa11">SVF::SVFGStat::performStat</a></div><div class="ttdeci">virtual void performStat()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8cpp_source.html#l00179">SVFGStat.cpp:179</a></div></div>
3428
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00740">740</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
3429
+ <div class="fragment"><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;{</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#ab11b1fbef2bd7cfc9bf8e1b993dbfa11">performStat</a>();</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFGStat_html_ab11b1fbef2bd7cfc9bf8e1b993dbfa11"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#ab11b1fbef2bd7cfc9bf8e1b993dbfa11">SVF::SVFGStat::performStat</a></div><div class="ttdeci">virtual void performStat()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8cpp_source.html#l00179">SVFGStat.cpp:179</a></div></div>
3430
3430
  <div class="ttc" id="classSVF_1_1SVFG_html_ad5c1415f488ec4412d5457262269eff3"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">SVF::SVFG::stat</a></div><div class="ttdeci">SVFGStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00104">SVFG.h:104</a></div></div>
3431
3431
  </div><!-- fragment -->
3432
3432
  </div>