svf-tools 1.0.596 → 1.0.597

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 (801) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +4 -4
  2. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -7
  4. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +11 -11
  5. package/SVF-doxygen/html/html/Andersen_8h_source.html +5 -5
  6. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +7 -7
  7. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +5 -5
  8. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +8 -8
  9. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +4 -4
  10. package/SVF-doxygen/html/html/CFLGraph_8cpp.html +3 -2
  11. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +15 -16
  12. package/SVF-doxygen/html/html/CFLGraph_8h.html +4 -6
  13. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +19 -20
  14. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +4 -4
  15. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +8 -8
  17. package/SVF-doxygen/html/html/CHG_8cpp.html +6 -5
  18. package/SVF-doxygen/html/html/CHG_8cpp_source.html +26 -27
  19. package/SVF-doxygen/html/html/CHG_8h.html +4 -6
  20. package/SVF-doxygen/html/html/CHG_8h_source.html +13 -14
  21. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
  22. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +3 -3
  23. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +7 -7
  24. package/SVF-doxygen/html/html/ConsG_8cpp.html +3 -2
  25. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +27 -28
  26. package/SVF-doxygen/html/html/ConsG_8h.html +4 -6
  27. package/SVF-doxygen/html/html/ConsG_8h_source.html +10 -11
  28. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +7 -7
  29. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  30. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +4 -4
  31. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +21 -21
  32. package/SVF-doxygen/html/html/DCHG_8h.html +4 -6
  33. package/SVF-doxygen/html/html/DCHG_8h_source.html +15 -16
  34. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  35. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
  37. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
  39. package/SVF-doxygen/html/html/DOTGraphTraits_8h.html +4 -3
  40. package/SVF-doxygen/html/html/DOTGraphTraits_8h_source.html +24 -24
  41. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +4 -4
  42. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -5
  44. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +12 -12
  46. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  49. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  50. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
  51. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +6 -6
  52. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +2 -2
  54. package/SVF-doxygen/html/html/GenericGraph_8h.html +8 -9
  55. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +125 -125
  56. package/SVF-doxygen/html/html/GraphPrinter_8h.html +3 -2
  57. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +7 -7
  58. package/SVF-doxygen/html/html/GraphReachSolver_8h_source.html +4 -4
  59. package/SVF-doxygen/html/html/GraphTraits_8h.html +20 -19
  60. package/SVF-doxygen/html/html/GraphTraits_8h_source.html +13 -13
  61. package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/html/GraphWriter_8h.html +23 -22
  63. package/SVF-doxygen/html/html/GraphWriter_8h_source.html +48 -48
  64. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +7 -7
  65. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +2 -2
  66. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +7 -7
  67. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +7 -7
  68. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
  69. package/SVF-doxygen/html/html/ICFG_8cpp.html +3 -2
  70. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +27 -28
  71. package/SVF-doxygen/html/html/ICFG_8h.html +4 -6
  72. package/SVF-doxygen/html/html/ICFG_8h_source.html +14 -15
  73. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
  74. package/SVF-doxygen/html/html/IRGraph_8cpp.html +3 -2
  75. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -21
  76. package/SVF-doxygen/html/html/IRGraph_8h.html +4 -6
  77. package/SVF-doxygen/html/html/IRGraph_8h_source.html +9 -10
  78. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +7 -7
  79. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +38 -39
  80. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +19 -19
  81. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +16 -9
  82. package/SVF-doxygen/html/html/LLVMUtil_8h.html +6 -0
  83. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +6 -4
  84. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +6 -6
  85. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  86. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
  87. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +23 -23
  88. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
  89. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +6 -6
  90. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +3 -3
  91. package/SVF-doxygen/html/html/MHP_8cpp_source.html +23 -23
  92. package/SVF-doxygen/html/html/MHP_8h_source.html +4 -4
  93. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +3 -3
  94. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
  95. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
  96. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +3 -3
  97. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +8 -8
  98. package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
  99. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  100. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  101. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +18 -18
  102. package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
  103. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +21 -21
  104. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  105. package/SVF-doxygen/html/html/PCG_8cpp_source.html +18 -18
  106. package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
  107. package/SVF-doxygen/html/html/PTACallGraph_8cpp.html +3 -2
  108. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +27 -28
  109. package/SVF-doxygen/html/html/PTACallGraph_8h.html +4 -6
  110. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +17 -18
  111. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +6 -6
  112. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
  113. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +3 -3
  114. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
  115. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +3 -3
  116. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +7 -7
  117. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
  118. package/SVF-doxygen/html/html/SCC_8h_source.html +4 -4
  119. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
  120. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +3 -3
  121. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +3 -3
  122. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +14 -14
  123. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +9 -9
  124. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +3 -3
  125. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +7 -7
  126. package/SVF-doxygen/html/html/SVFG_8cpp.html +3 -2
  127. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +23 -24
  128. package/SVF-doxygen/html/html/SVFG_8h.html +1 -3
  129. package/SVF-doxygen/html/html/SVFG_8h_source.html +13 -14
  130. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +15 -14
  131. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +4 -4
  132. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +8 -8
  133. package/SVF-doxygen/html/html/SVFIR_8h_source.html +4 -4
  134. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  135. package/SVF-doxygen/html/html/SVFModule_8h_source.html +4 -4
  136. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +9 -9
  137. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +9 -9
  138. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +12 -12
  139. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +4 -4
  140. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +9 -9
  141. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +16 -19
  142. package/SVF-doxygen/html/html/SVFValue_8h.html +3 -3
  143. package/SVF-doxygen/html/html/SVFValue_8h_source.html +210 -213
  144. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +7 -7
  145. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +13 -14
  146. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +3 -3
  147. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +17 -17
  148. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +6 -6
  149. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
  150. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +7 -7
  151. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  152. package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +3 -4
  153. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +3 -3
  154. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -10
  155. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -4
  156. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
  157. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
  158. package/SVF-doxygen/html/html/TCT_8cpp.html +3 -2
  159. package/SVF-doxygen/html/html/TCT_8cpp_source.html +38 -39
  160. package/SVF-doxygen/html/html/TCT_8h.html +4 -6
  161. package/SVF-doxygen/html/html/TCT_8h_source.html +27 -28
  162. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +10 -10
  163. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +6 -6
  164. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  165. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +7 -7
  166. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +8 -8
  167. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +6 -6
  168. package/SVF-doxygen/html/html/VFGNode_8h_source.html +8 -8
  169. package/SVF-doxygen/html/html/VFG_8cpp.html +3 -2
  170. package/SVF-doxygen/html/html/VFG_8cpp_source.html +20 -21
  171. package/SVF-doxygen/html/html/VFG_8h.html +4 -6
  172. package/SVF-doxygen/html/html/VFG_8h_source.html +14 -15
  173. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  174. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +10 -10
  175. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +3 -3
  176. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +8 -8
  177. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  178. package/SVF-doxygen/html/html/WPASolver_8h_source.html +4 -4
  179. package/SVF-doxygen/html/html/annotated.html +291 -291
  180. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +4 -4
  182. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +4 -4
  183. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +3 -3
  184. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +3 -3
  185. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  186. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  188. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  190. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +33 -33
  192. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +7 -7
  194. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +10 -10
  196. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
  197. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +7 -7
  198. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
  199. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +1 -1
  200. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +4 -4
  201. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  202. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +4 -4
  203. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +12 -12
  204. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  205. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
  206. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +4 -4
  207. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +11 -11
  209. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +4 -4
  210. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +4 -4
  211. package/SVF-doxygen/html/html/classSVF_1_1CFLNode-members.html +45 -44
  212. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +29 -29
  213. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +4 -4
  214. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
  215. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +16 -16
  216. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +17 -17
  217. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +3 -3
  218. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +2 -2
  220. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  221. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +7 -7
  222. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  223. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +1 -1
  224. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  225. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +56 -56
  226. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
  228. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  229. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +30 -30
  230. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +18 -18
  231. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +12 -12
  232. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  233. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  234. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +2 -2
  236. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +2 -2
  237. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  238. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +2 -2
  239. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +2 -2
  240. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +35 -35
  241. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  242. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +16 -16
  243. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  244. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  245. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +2 -2
  246. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  247. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +2 -2
  248. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
  249. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  251. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +6 -6
  252. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +3 -4
  253. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +1 -1
  254. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +4 -4
  255. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +2 -2
  256. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +8 -8
  257. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  258. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +21 -21
  260. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +17 -17
  261. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +29 -29
  262. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  263. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  264. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +3 -3
  265. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +3 -3
  266. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +6 -6
  267. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +8 -8
  268. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +31 -31
  269. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +44 -44
  270. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +98 -97
  271. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  272. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -4
  273. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  274. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  275. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -4
  276. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  277. package/SVF-doxygen/html/html/classSVF_1_1GraphPrinter-members.html +83 -0
  278. package/SVF-doxygen/html/html/classSVF_1_1GraphPrinter.html +236 -0
  279. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver-members.html +2 -2
  280. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.html +12 -12
  281. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter-members.html +100 -0
  282. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter.html +882 -0
  283. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +19 -19
  284. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +12 -12
  285. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +7 -7
  286. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  287. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
  288. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +11 -11
  289. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
  290. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  291. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +3 -3
  292. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +2 -2
  293. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +3 -3
  294. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +2 -2
  295. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  296. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +6 -6
  297. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  298. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
  299. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +7 -7
  301. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +69 -69
  302. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +2 -2
  303. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +22 -22
  304. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  305. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +3 -3
  307. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +50 -50
  308. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +7 -7
  309. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +55 -55
  310. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +22 -22
  312. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  313. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +4 -4
  314. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +3 -3
  315. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
  316. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
  317. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +37 -37
  318. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +9 -9
  319. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  320. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +36 -36
  321. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +3 -3
  322. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +4 -4
  323. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +3 -4
  324. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
  325. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +28 -28
  326. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +3 -3
  327. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +25 -25
  328. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +3 -3
  329. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +7 -7
  330. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +9 -9
  331. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  332. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +40 -40
  333. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +7 -7
  334. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +4 -4
  335. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +1 -1
  336. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +3 -3
  337. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +2 -2
  338. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +5 -5
  339. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  340. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  341. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
  342. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection-members.html +1 -1
  343. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +8 -8
  344. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +7 -9
  345. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +16 -20
  346. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +8 -10
  347. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +56 -63
  348. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +6 -8
  349. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +7 -11
  350. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +12 -14
  351. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +34 -38
  352. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +6 -8
  353. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +5 -9
  354. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +6 -8
  355. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +7 -11
  356. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +6 -8
  357. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +10 -14
  358. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +6 -8
  359. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +14 -18
  360. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +6 -8
  361. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +7 -11
  362. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +23 -25
  363. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +115 -119
  364. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +16 -16
  365. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  366. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +43 -43
  367. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +9 -9
  368. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +9 -11
  369. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +14 -18
  370. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +35 -35
  371. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +48 -47
  372. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +11 -13
  373. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +31 -35
  374. package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo.html +2 -2
  375. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +6 -8
  376. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +7 -11
  377. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +3 -3
  378. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +6 -8
  379. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +5 -9
  380. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +9 -9
  381. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +9 -9
  382. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +3 -3
  383. package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +25 -28
  384. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +38 -128
  385. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +12 -12
  386. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +14 -16
  387. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +29 -33
  388. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +46 -46
  389. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +13 -13
  390. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +2 -2
  391. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +2 -2
  392. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +16 -16
  393. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver-members.html +2 -2
  394. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.html +12 -12
  395. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +1 -1
  396. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +9 -9
  397. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +5 -5
  398. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  399. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +2 -2
  400. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +2 -3
  401. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +21 -54
  402. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
  403. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +72 -72
  404. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  405. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  406. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  407. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +11 -11
  408. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
  409. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  410. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +4 -4
  411. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +4 -4
  412. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  413. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +1 -1
  414. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +12 -12
  415. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +5 -5
  416. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +3 -3
  417. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +21 -21
  418. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +13 -13
  419. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  420. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +3 -4
  421. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
  422. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +1 -1
  423. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +35 -35
  424. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +6 -6
  425. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +4 -4
  426. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +1 -1
  427. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +4 -4
  428. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +7 -7
  429. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +9 -9
  430. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +4 -4
  431. package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +1 -1
  432. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +8 -8
  433. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base-members.html +112 -0
  434. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +633 -0
  435. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.png +0 -0
  436. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base-members.html +102 -0
  437. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base.html +787 -0
  438. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base.png +0 -0
  439. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy-members.html +84 -0
  440. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +229 -0
  441. package/SVF-doxygen/html/html/classSVF_1_1iter__range-members.html +87 -0
  442. package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +342 -0
  443. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter-members.html +112 -0
  444. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +322 -0
  445. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.png +0 -0
  446. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator-members.html +113 -0
  447. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +343 -0
  448. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.png +0 -0
  449. package/SVF-doxygen/html/html/classes.html +59 -59
  450. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  451. package/SVF-doxygen/html/html/fastcluster__R__dm_8cpp_8inc_source.html +2 -2
  452. package/SVF-doxygen/html/html/functions_a.html +1 -1
  453. package/SVF-doxygen/html/html/functions_b.html +4 -4
  454. package/SVF-doxygen/html/html/functions_c.html +20 -18
  455. package/SVF-doxygen/html/html/functions_d.html +20 -20
  456. package/SVF-doxygen/html/html/functions_e.html +14 -16
  457. package/SVF-doxygen/html/html/functions_eval_i.html +2 -2
  458. package/SVF-doxygen/html/html/functions_f.html +1 -1
  459. package/SVF-doxygen/html/html/functions_func.html +1 -1
  460. package/SVF-doxygen/html/html/functions_func_b.html +2 -2
  461. package/SVF-doxygen/html/html/functions_func_c.html +4 -4
  462. package/SVF-doxygen/html/html/functions_func_d.html +14 -14
  463. package/SVF-doxygen/html/html/functions_func_e.html +8 -8
  464. package/SVF-doxygen/html/html/functions_func_g.html +72 -72
  465. package/SVF-doxygen/html/html/functions_func_h.html +4 -7
  466. package/SVF-doxygen/html/html/functions_func_i.html +17 -20
  467. package/SVF-doxygen/html/html/functions_func_m.html +1 -1
  468. package/SVF-doxygen/html/html/functions_func_n.html +3 -3
  469. package/SVF-doxygen/html/html/functions_func_o.html +24 -24
  470. package/SVF-doxygen/html/html/functions_func_p.html +4 -4
  471. package/SVF-doxygen/html/html/functions_func_r.html +2 -2
  472. package/SVF-doxygen/html/html/functions_func_s.html +15 -18
  473. package/SVF-doxygen/html/html/functions_func_w.html +8 -8
  474. package/SVF-doxygen/html/html/functions_g.html +84 -82
  475. package/SVF-doxygen/html/html/functions_h.html +6 -12
  476. package/SVF-doxygen/html/html/functions_i.html +40 -43
  477. package/SVF-doxygen/html/html/functions_l.html +3 -3
  478. package/SVF-doxygen/html/html/functions_m.html +1 -1
  479. package/SVF-doxygen/html/html/functions_n.html +30 -30
  480. package/SVF-doxygen/html/html/functions_o.html +39 -43
  481. package/SVF-doxygen/html/html/functions_p.html +16 -16
  482. package/SVF-doxygen/html/html/functions_r.html +8 -6
  483. package/SVF-doxygen/html/html/functions_rela.html +3 -3
  484. package/SVF-doxygen/html/html/functions_s.html +22 -25
  485. package/SVF-doxygen/html/html/functions_t.html +3 -3
  486. package/SVF-doxygen/html/html/functions_type_b.html +1 -1
  487. package/SVF-doxygen/html/html/functions_type_c.html +7 -7
  488. package/SVF-doxygen/html/html/functions_type_d.html +4 -4
  489. package/SVF-doxygen/html/html/functions_type_e.html +4 -4
  490. package/SVF-doxygen/html/html/functions_type_g.html +6 -6
  491. package/SVF-doxygen/html/html/functions_type_i.html +4 -4
  492. package/SVF-doxygen/html/html/functions_type_n.html +27 -27
  493. package/SVF-doxygen/html/html/functions_type_p.html +3 -3
  494. package/SVF-doxygen/html/html/functions_type_r.html +2 -2
  495. package/SVF-doxygen/html/html/functions_type_v.html +2 -2
  496. package/SVF-doxygen/html/html/functions_v.html +5 -5
  497. package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
  498. package/SVF-doxygen/html/html/functions_vars_d.html +1 -1
  499. package/SVF-doxygen/html/html/functions_vars_e.html +1 -1
  500. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  501. package/SVF-doxygen/html/html/functions_vars_g.html +7 -5
  502. package/SVF-doxygen/html/html/functions_vars_h.html +0 -3
  503. package/SVF-doxygen/html/html/functions_vars_i.html +6 -6
  504. package/SVF-doxygen/html/html/functions_vars_o.html +1 -1
  505. package/SVF-doxygen/html/html/functions_vars_p.html +1 -1
  506. package/SVF-doxygen/html/html/functions_w.html +17 -17
  507. package/SVF-doxygen/html/html/hierarchy.html +159 -159
  508. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +4 -4
  509. package/SVF-doxygen/html/html/iterator_8h.html +16 -15
  510. package/SVF-doxygen/html/html/iterator_8h_source.html +53 -53
  511. package/SVF-doxygen/html/html/iterator__range_8h.html +9 -8
  512. package/SVF-doxygen/html/html/iterator__range_8h_source.html +11 -11
  513. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  514. package/SVF-doxygen/html/html/namespaceSVF.html +575 -9
  515. package/SVF-doxygen/html/html/namespaceSVF_1_1DOT.html +107 -0
  516. package/SVF-doxygen/html/html/namespaceSVF_1_1GraphProgram.html +122 -0
  517. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +65 -7
  518. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +3 -3
  519. package/SVF-doxygen/html/html/namespacellvm.html +1 -572
  520. package/SVF-doxygen/html/html/namespacemembers_c.html +3 -3
  521. package/SVF-doxygen/html/html/namespacemembers_d.html +1 -1
  522. package/SVF-doxygen/html/html/namespacemembers_e.html +1 -1
  523. package/SVF-doxygen/html/html/namespacemembers_enum.html +1 -1
  524. package/SVF-doxygen/html/html/namespacemembers_eval.html +5 -5
  525. package/SVF-doxygen/html/html/namespacemembers_f.html +1 -1
  526. package/SVF-doxygen/html/html/namespacemembers_func_c.html +2 -2
  527. package/SVF-doxygen/html/html/namespacemembers_func_e.html +1 -1
  528. package/SVF-doxygen/html/html/namespacemembers_func_i.html +8 -5
  529. package/SVF-doxygen/html/html/namespacemembers_func_m.html +4 -4
  530. package/SVF-doxygen/html/html/namespacemembers_func_n.html +1 -1
  531. package/SVF-doxygen/html/html/namespacemembers_func_v.html +1 -1
  532. package/SVF-doxygen/html/html/namespacemembers_func_w.html +1 -1
  533. package/SVF-doxygen/html/html/namespacemembers_g.html +1 -1
  534. package/SVF-doxygen/html/html/namespacemembers_i.html +6 -3
  535. package/SVF-doxygen/html/html/namespacemembers_m.html +4 -4
  536. package/SVF-doxygen/html/html/namespacemembers_n.html +3 -3
  537. package/SVF-doxygen/html/html/namespacemembers_r.html +1 -1
  538. package/SVF-doxygen/html/html/namespacemembers_t.html +1 -1
  539. package/SVF-doxygen/html/html/namespacemembers_type_g.html +1 -1
  540. package/SVF-doxygen/html/html/namespacemembers_type_r.html +1 -1
  541. package/SVF-doxygen/html/html/namespacemembers_v.html +1 -1
  542. package/SVF-doxygen/html/html/namespacemembers_w.html +1 -1
  543. package/SVF-doxygen/html/html/namespaces.html +5 -5
  544. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  545. package/SVF-doxygen/html/html/search/all_1.js +1 -1
  546. package/SVF-doxygen/html/html/search/all_10.js +12 -12
  547. package/SVF-doxygen/html/html/search/all_11.js +7 -7
  548. package/SVF-doxygen/html/html/search/all_12.js +7 -6
  549. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  550. package/SVF-doxygen/html/html/search/all_15.js +4 -4
  551. package/SVF-doxygen/html/html/search/all_16.js +10 -10
  552. package/SVF-doxygen/html/html/search/all_2.js +3 -3
  553. package/SVF-doxygen/html/html/search/all_3.js +7 -7
  554. package/SVF-doxygen/html/html/search/all_4.js +20 -20
  555. package/SVF-doxygen/html/html/search/all_5.js +9 -9
  556. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  557. package/SVF-doxygen/html/html/search/all_7.js +87 -87
  558. package/SVF-doxygen/html/html/search/all_8.js +1 -3
  559. package/SVF-doxygen/html/html/search/all_9.js +23 -23
  560. package/SVF-doxygen/html/html/search/all_c.js +2 -4
  561. package/SVF-doxygen/html/html/search/all_d.js +5 -5
  562. package/SVF-doxygen/html/html/search/all_e.js +11 -11
  563. package/SVF-doxygen/html/html/search/all_f.js +19 -19
  564. package/SVF-doxygen/html/html/search/classes_3.js +13 -13
  565. package/SVF-doxygen/html/html/search/classes_6.js +64 -64
  566. package/SVF-doxygen/html/html/search/classes_8.js +10 -10
  567. package/SVF-doxygen/html/html/search/classes_a.js +1 -1
  568. package/SVF-doxygen/html/html/search/classes_d.js +2 -2
  569. package/SVF-doxygen/html/html/search/classes_e.js +1 -1
  570. package/SVF-doxygen/html/html/search/enums_8.js +1 -1
  571. package/SVF-doxygen/html/html/search/enumvalues_10.js +1 -1
  572. package/SVF-doxygen/html/html/search/enumvalues_2.js +1 -1
  573. package/SVF-doxygen/html/html/search/enumvalues_3.js +1 -1
  574. package/SVF-doxygen/html/html/search/enumvalues_5.js +1 -1
  575. package/SVF-doxygen/html/html/search/enumvalues_8.js +2 -2
  576. package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -1
  577. package/SVF-doxygen/html/html/search/functions_0.js +1 -1
  578. package/SVF-doxygen/html/html/search/functions_1.js +1 -1
  579. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  580. package/SVF-doxygen/html/html/search/functions_11.js +1 -2
  581. package/SVF-doxygen/html/html/search/functions_14.js +1 -1
  582. package/SVF-doxygen/html/html/search/functions_15.js +8 -8
  583. package/SVF-doxygen/html/html/search/functions_2.js +4 -4
  584. package/SVF-doxygen/html/html/search/functions_3.js +5 -5
  585. package/SVF-doxygen/html/html/search/functions_4.js +7 -7
  586. package/SVF-doxygen/html/html/search/functions_6.js +21 -21
  587. package/SVF-doxygen/html/html/search/functions_7.js +1 -2
  588. package/SVF-doxygen/html/html/search/functions_8.js +8 -8
  589. package/SVF-doxygen/html/html/search/functions_c.js +5 -5
  590. package/SVF-doxygen/html/html/search/functions_d.js +4 -4
  591. package/SVF-doxygen/html/html/search/functions_e.js +14 -14
  592. package/SVF-doxygen/html/html/search/functions_f.js +4 -4
  593. package/SVF-doxygen/html/html/search/namespaces_0.js +0 -2
  594. package/SVF-doxygen/html/html/search/namespaces_1.js +2 -0
  595. package/SVF-doxygen/html/html/search/related_9.js +3 -3
  596. package/SVF-doxygen/html/html/search/typedefs_1.js +1 -1
  597. package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
  598. package/SVF-doxygen/html/html/search/typedefs_2.js +2 -2
  599. package/SVF-doxygen/html/html/search/typedefs_3.js +2 -2
  600. package/SVF-doxygen/html/html/search/typedefs_4.js +1 -1
  601. package/SVF-doxygen/html/html/search/typedefs_6.js +3 -3
  602. package/SVF-doxygen/html/html/search/typedefs_7.js +2 -2
  603. package/SVF-doxygen/html/html/search/typedefs_c.js +4 -4
  604. package/SVF-doxygen/html/html/search/typedefs_e.js +2 -2
  605. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -2
  606. package/SVF-doxygen/html/html/search/variables_10.js +1 -1
  607. package/SVF-doxygen/html/html/search/variables_13.js +3 -3
  608. package/SVF-doxygen/html/html/search/variables_2.js +1 -1
  609. package/SVF-doxygen/html/html/search/variables_4.js +1 -1
  610. package/SVF-doxygen/html/html/search/variables_5.js +1 -1
  611. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  612. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  613. package/SVF-doxygen/html/html/search/variables_8.js +0 -1
  614. package/SVF-doxygen/html/html/search/variables_9.js +5 -5
  615. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  616. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  617. package/SVF-doxygen/html/html/search/variables_f.js +1 -1
  618. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits-members.html +99 -0
  619. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits.html +193 -0
  620. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits.png +0 -0
  621. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4-members.html +105 -0
  622. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +443 -0
  623. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.png +0 -0
  624. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4-members.html +104 -0
  625. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +388 -0
  626. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.png +0 -0
  627. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4-members.html +106 -0
  628. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +481 -0
  629. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.png +0 -0
  630. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4-members.html +106 -0
  631. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +475 -0
  632. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.png +0 -0
  633. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4-members.html +107 -0
  634. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +486 -0
  635. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.png +0 -0
  636. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4-members.html +106 -0
  637. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +457 -0
  638. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.png +0 -0
  639. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4-members.html +108 -0
  640. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +595 -0
  641. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.png +0 -0
  642. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4-members.html +105 -0
  643. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +409 -0
  644. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4.png +0 -0
  645. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4-members.html +107 -0
  646. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +543 -0
  647. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4.png +0 -0
  648. package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits-members.html +99 -0
  649. package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits.html +855 -0
  650. package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits.png +0 -0
  651. package/SVF-doxygen/html/html/structSVF_1_1GenericEdge_1_1equalGEdge.html +3 -3
  652. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits-members.html +81 -0
  653. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits.html +116 -0
  654. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4-members.html +81 -0
  655. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.html +106 -0
  656. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.png +0 -0
  657. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4-members.html +81 -0
  658. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +110 -0
  659. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.png +0 -0
  660. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4-members.html +81 -0
  661. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.html +110 -0
  662. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.png +0 -0
  663. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4-members.html +81 -0
  664. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.html +110 -0
  665. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.png +0 -0
  666. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4-members.html +81 -0
  667. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.html +110 -0
  668. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.png +0 -0
  669. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4-members.html +88 -0
  670. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html +324 -0
  671. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4-members.html +81 -0
  672. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.html +110 -0
  673. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.png +0 -0
  674. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4-members.html +81 -0
  675. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.html +110 -0
  676. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.png +0 -0
  677. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4-members.html +81 -0
  678. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.html +110 -0
  679. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.png +0 -0
  680. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4-members.html +81 -0
  681. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +110 -0
  682. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.png +0 -0
  683. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4-members.html +81 -0
  684. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html +110 -0
  685. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.png +0 -0
  686. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4-members.html +81 -0
  687. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +126 -0
  688. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.png +0 -0
  689. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4-members.html +81 -0
  690. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +106 -0
  691. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.png +0 -0
  692. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4-members.html +81 -0
  693. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.html +126 -0
  694. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.png +0 -0
  695. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4-members.html +81 -0
  696. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4.html +106 -0
  697. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4.png +0 -0
  698. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4-members.html +81 -0
  699. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.html +126 -0
  700. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.png +0 -0
  701. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4-members.html +81 -0
  702. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.html +106 -0
  703. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.png +0 -0
  704. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4-members.html +81 -0
  705. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.html +126 -0
  706. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.png +0 -0
  707. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4-members.html +81 -0
  708. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.html +106 -0
  709. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.png +0 -0
  710. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4-members.html +99 -0
  711. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +467 -0
  712. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.png +0 -0
  713. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4-members.html +89 -0
  714. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +367 -0
  715. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.png +0 -0
  716. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4-members.html +81 -0
  717. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.html +106 -0
  718. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.png +0 -0
  719. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4-members.html +81 -0
  720. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4.html +126 -0
  721. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4.png +0 -0
  722. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4-members.html +81 -0
  723. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.html +126 -0
  724. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.png +0 -0
  725. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4-members.html +81 -0
  726. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.html +106 -0
  727. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.png +0 -0
  728. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4-members.html +81 -0
  729. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html +126 -0
  730. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.png +0 -0
  731. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4-members.html +81 -0
  732. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +126 -0
  733. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.png +0 -0
  734. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4-members.html +81 -0
  735. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.html +106 -0
  736. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.png +0 -0
  737. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4-members.html +81 -0
  738. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +106 -0
  739. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.png +0 -0
  740. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4-members.html +81 -0
  741. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +126 -0
  742. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4.png +0 -0
  743. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4-members.html +81 -0
  744. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html +106 -0
  745. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.png +0 -0
  746. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4-members.html +81 -0
  747. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4.html +126 -0
  748. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4.png +0 -0
  749. package/SVF-doxygen/html/html/structSVF_1_1Inverse-members.html +82 -0
  750. package/SVF-doxygen/html/html/structSVF_1_1Inverse.html +154 -0
  751. package/SVF-doxygen/html/html/structSVF_1_1pointee__iter-members.html +111 -0
  752. package/SVF-doxygen/html/html/structSVF_1_1pointee__iter.html +279 -0
  753. package/SVF-doxygen/html/html/structSVF_1_1pointee__iter.png +0 -0
  754. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  755. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  756. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  757. package/SVF-doxygen/html/html/svf-ex_8cpp.html +9 -9
  758. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
  759. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +4 -4
  760. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  761. package/include/Graphs/CFLGraph.h +6 -6
  762. package/include/Graphs/CHG.h +6 -6
  763. package/include/Graphs/ConsG.h +6 -6
  764. package/include/Graphs/DOTGraphTraits.h +3 -3
  765. package/include/Graphs/GenericGraph.h +10 -9
  766. package/include/Graphs/GraphPrinter.h +2 -2
  767. package/include/Graphs/GraphTraits.h +29 -29
  768. package/include/Graphs/GraphWriter.h +6 -6
  769. package/include/Graphs/ICFG.h +6 -6
  770. package/include/Graphs/IRGraph.h +6 -7
  771. package/include/Graphs/PTACallGraph.h +6 -6
  772. package/include/Graphs/SVFG.h +6 -6
  773. package/include/Graphs/VFG.h +6 -6
  774. package/include/MTA/TCT.h +6 -6
  775. package/include/SABER/SrcSnkSolver.h +2 -2
  776. package/include/SVF-LLVM/DCHG.h +6 -6
  777. package/include/SVF-LLVM/LLVMUtil.h +5 -0
  778. package/include/SVF-LLVM/SymbolTableBuilder.h +0 -3
  779. package/include/SVFIR/SVFValue.h +2 -11
  780. package/include/SVFIR/SVFVariables.h +5 -5
  781. package/include/Util/GraphReachSolver.h +2 -2
  782. package/include/Util/SCC.h +1 -1
  783. package/include/Util/iterator.h +32 -32
  784. package/include/Util/iterator_range.h +11 -11
  785. package/include/WPA/WPASolver.h +1 -1
  786. package/lib/Graphs/CFLGraph.cpp +2 -2
  787. package/lib/Graphs/CHG.cpp +2 -2
  788. package/lib/Graphs/ConsG.cpp +2 -2
  789. package/lib/Graphs/GraphWriter.cpp +1 -1
  790. package/lib/Graphs/ICFG.cpp +2 -2
  791. package/lib/Graphs/IRGraph.cpp +2 -2
  792. package/lib/Graphs/PTACallGraph.cpp +2 -2
  793. package/lib/Graphs/SVFG.cpp +1 -1
  794. package/lib/Graphs/VFG.cpp +2 -2
  795. package/lib/MTA/TCT.cpp +1 -1
  796. package/lib/SVF-LLVM/LLVMModule.cpp +0 -2
  797. package/lib/SVF-LLVM/LLVMUtil.cpp +40 -0
  798. package/lib/SVF-LLVM/SVFIRBuilder.cpp +1 -1
  799. package/lib/SVF-LLVM/SymbolTableBuilder.cpp +0 -34
  800. package/lib/SVFIR/SVFValue.cpp +0 -1
  801. package/package.json +1 -1
@@ -66,31 +66,30 @@ $(function() {
66
66
  <div class="title">ICFG.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="ICFG_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- ICFG.cpp -- Sparse value-flow graph-----------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2018&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * ICFG.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Sep 11, 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="Options_8h.html">Util/Options.h</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFModule_8h.html">SVFIR/SVFModule.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFG_8h.html">Graphs/ICFG.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIR_8h.html">SVFIR/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryICFGNode.html#a15fd95468e2200d92d650625d4fa2f31"> 40</a></span>&#160;<a class="code" href="classSVF_1_1FunEntryICFGNode.html#a15fd95468e2200d92d650625d4fa2f31">FunEntryICFGNode::FunEntryICFGNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f) : <a class="code" href="classSVF_1_1InterICFGNode.html">InterICFGNode</a>(id, FunEntryBlock)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a> = f;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// if function is implemented</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">if</span> (f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a49a6e9c0661135ceda2dd4d84c4b24ae">begin</a>() != f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a2f274c3af098ae6a5919246b1b88e7b7">end</a>())</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html#a0cd08725df3e8665762ee37b5d4c138a">bb</a> = f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitICFGNode.html#a84f43a81c2b6df125f32ddcb47b8858b"> 50</a></span>&#160;<a class="code" href="classSVF_1_1FunExitICFGNode.html#a84f43a81c2b6df125f32ddcb47b8858b">FunExitICFGNode::FunExitICFGNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f) : <a class="code" href="classSVF_1_1InterICFGNode.html">InterICFGNode</a>(id, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a>), formalRet(nullptr)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a> = f;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// if function is implemented</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a49a6e9c0661135ceda2dd4d84c4b24ae">begin</a>() != f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a2f274c3af098ae6a5919246b1b88e7b7">end</a>())</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html#a0cd08725df3e8665762ee37b5d4c138a">bb</a> = f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a8ca4fa87f4c26b71c6e03c8f32db1071">getExitBB</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a"> 62</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">ICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97"> 70</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97">ICFGNode::dump</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; this-&gt;<a class="code" href="classSVF_1_1FunExitICFGNode.html#aa73e5a5e577b789842987fec2fb307f9">toString</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1GlobalICFGNode.html#ada960e5bdba75c165a67b33c09819c47"> 75</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1GlobalICFGNode.html#ada960e5bdba75c165a67b33c09819c47">GlobalICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;GlobalICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; stmt-&gt;toString();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;}</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraICFGNode.html#a85d3e05cb5a95c2f9d678d9f010419a5"> 86</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1IntraICFGNode.html#a85d3e05cb5a95c2f9d678d9f010419a5">IntraICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;IntraICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; {fun: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() &lt;&lt; getInst()-&gt;getSourceLoc() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; stmt-&gt;toString();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().empty())</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; getInst()-&gt;toString();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;}</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryICFGNode.html#a3e9032ea2388682e568b6324fe8e4882"> 100</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1FunEntryICFGNode.html#a3e9032ea2388682e568b6324fe8e4882">FunEntryICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;FunEntryICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; {fun: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>())==<span class="keyword">false</span>)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; stmt-&gt;toString();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;}</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitICFGNode.html#aa73e5a5e577b789842987fec2fb307f9"> 114</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1FunExitICFGNode.html#aa73e5a5e577b789842987fec2fb307f9">FunExitICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;FunExitICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; {fun: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>())==<span class="keyword">false</span>)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a8ca4fa87f4c26b71c6e03c8f32db1071">getExitBB</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; stmt-&gt;toString();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;}</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classSVF_1_1CallICFGNode.html#ab07e504bbc100fa3e111d62de815a88c"> 129</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CallICFGNode.html#ab07e504bbc100fa3e111d62de815a88c">CallICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CallICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; {fun: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() &lt;&lt; getCallSite()-&gt;getSourceLoc() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; stmt-&gt;toString();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1RetICFGNode.html#ab0b54268167a593e2db9d02d3dd9c4f1"> 140</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1RetICFGNode.html#ab0b54268167a593e2db9d02d3dd9c4f1">RetICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;RetICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; {fun: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() &lt;&lt; getCallSite()-&gt;getSourceLoc() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; stmt-&gt;toString();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;}</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGEdge.html#a7233609f62f278b738036e8de9bbbfc8"> 151</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ICFGEdge.html#a7233609f62f278b738036e8de9bbbfc8">ICFGEdge::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ICFGEdge: [ICFGNode&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot; &lt;-- ICFGNode&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;}</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraCFGEdge.html#a1e63286b4d6f757ac1220f5f03ae62de"> 159</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1IntraCFGEdge.html#a1e63286b4d6f757ac1220f5f03ae62de">IntraCFGEdge::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span>(getCondition() == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;IntraCFGEdge: [ICFGNode&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot; &lt;-- ICFGNode&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;IntraCFGEdge: [ICFGNode&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot; &lt;-- ICFGNode&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;] (branchCondition:&quot;</span> &lt;&lt; getCondition()-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;) (succCondValue: &quot;</span> &lt;&lt; getSuccessorCondValue() &lt;&lt; <span class="stringliteral">&quot;) \t&quot;</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1CallCFGEdge.html#a2ad72b065dcb752e0779de9ff69c443a"> 171</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CallCFGEdge.html#a2ad72b065dcb752e0779de9ff69c443a">CallCFGEdge::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CallCFGEdge &quot;</span> &lt;&lt; <span class="stringliteral">&quot; [ICFGNode&quot;</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; rawstr &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot; &lt;-- ICFGNode&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t CallSite: &quot;</span> &lt;&lt; cs-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1RetCFGEdge.html#aca97e28617505e482b014dc805cb70aa"> 180</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1RetCFGEdge.html#aca97e28617505e482b014dc805cb70aa">RetCFGEdge::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;RetCFGEdge &quot;</span> &lt;&lt; <span class="stringliteral">&quot; [ICFGNode&quot;</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; rawstr &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot; &lt;-- ICFGNode&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t CallSite: &quot;</span> &lt;&lt; cs-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;}</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a683f33b8ad507a33809511954c7c1acb"> 197</a></span>&#160;<a class="code" href="classSVF_1_1ICFG.html#a683f33b8ad507a33809511954c7c1acb">ICFG::ICFG</a>(): totalICFGNode(0)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;{</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#abdaf7551b7cd46bada3396c135e68584"> 201</a></span>&#160;<a class="code" href="classSVF_1_1ICFG.html#abdaf7551b7cd46bada3396c135e68584">ICFG::~ICFG</a>()</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="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFLoop*&gt;</a> loops;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: <a class="code" href="classSVF_1_1ICFG.html#a7d6aeecb00d77600a204a72d60023d54">icfgNodeToSVFLoopVec</a>)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;loop: it.second)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; loops.insert(loop);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: loops)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">delete</span> it;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; icfgNodeToSVFLoopVec.clear();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;}</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#aeaecbb856265565d198a3493f722087f"> 220</a></span>&#160;<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">ICFG::getICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4af4db2fe43846609d2ed1d7022b1be1">SVFUtil::isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; node = <a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#abb2bbf6e0dc5adae2140a519259e6f17">SVFUtil::isIntrinsicInst</a>(inst))</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; node = <a class="code" href="classSVF_1_1ICFG.html#aaf521832909781894659725300cf4f49">getIntraICFGNode</a>(inst);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment">// assert (false &amp;&amp; &quot;associating an intrinsic instruction with an ICFGNode!&quot;);</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; node = <a class="code" href="classSVF_1_1ICFG.html#aaf521832909781894659725300cf4f49">getIntraICFGNode</a>(inst);</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; assert (node!=<span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;no ICFGNode for this instruction?&quot;</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;}</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="l00236"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213"> 236</a></span>&#160;<a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">ICFG::getCallICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#afdc3358522417de9a0d3a181a329f722">SVFUtil::isCallSite</a>(inst) ==<span class="keyword">false</span>)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; inst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">toString</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#afdc3358522417de9a0d3a181a329f722">SVFUtil::isCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;not a call instruction?&quot;</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4af4db2fe43846609d2ed1d7022b1be1">SVFUtil::isNonInstricCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;associating an intrinsic debug instruction with an ICFGNode!&quot;</span>);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* node = <a class="code" href="classSVF_1_1ICFG.html#a1490b28446b9d8efee567ec02e2abcf3">getCallBlock</a>(inst);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span>(node==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; node = <a class="code" href="classSVF_1_1ICFG.html#ac51c8f38efbd2576e150a9fc26a4a41b">addCallBlock</a>(inst);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; assert (node!=<span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;no CallICFGNode for this instruction?&quot;</span>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;}</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf"> 249</a></span>&#160;<a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* <a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">ICFG::getRetICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</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; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#afdc3358522417de9a0d3a181a329f722">SVFUtil::isCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;not a call instruction?&quot;</span>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4af4db2fe43846609d2ed1d7022b1be1">SVFUtil::isNonInstricCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;associating an intrinsic debug instruction with an ICFGNode!&quot;</span>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* node = <a class="code" href="classSVF_1_1ICFG.html#a5ad71237256b2a8ce94a7d79a84afe55">getRetBlock</a>(inst);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span>(node==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; node = <a class="code" href="classSVF_1_1ICFG.html#ac58aa82eb74616a6608ff51d92f5baf6">addRetBlock</a>(inst);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; assert (node!=<span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;no RetICFGNode for this instruction?&quot;</span>);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#aaf521832909781894659725300cf4f49"> 260</a></span>&#160;<a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* <a class="code" href="classSVF_1_1ICFG.html#aaf521832909781894659725300cf4f49">ICFG::getIntraICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</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; <a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* node = <a class="code" href="classSVF_1_1ICFG.html#afeee2b61f8a84e1276f8955c4f6cf22d">getIntraBlock</a>(inst);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span>(node==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; node = <a class="code" href="classSVF_1_1ICFG.html#ad0183e8975e7190a121d8cb2aeec3d94">addIntraBlock</a>(inst);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;}</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076"> 269</a></span>&#160;<a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">ICFG::getFunEntryICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</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; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a> = <a class="code" href="classSVF_1_1ICFG.html#acc261924103bd0c357acd3acfa6cf38a">getFunEntryBlock</a>(fun);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span> (b == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFG.html#a1af9ae1c2efb4cb7897d5234d035c06b">addFunEntryBlock</a>(fun);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;}</div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919"> 278</a></span>&#160;<a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">ICFG::getFunExitICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</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; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a> = <a class="code" href="classSVF_1_1ICFG.html#a22d7f37a0cb2df90f73c1f2e3eaa71c6">getFunExitBlock</a>(fun);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span> (b == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFG.html#a6b716225b38638d6a34703995b749ad2">addFunExitBlock</a>(fun);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>;</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="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709"> 290</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">ICFG::hasIntraICFGEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* src, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dst, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429">ICFGEdge::ICFGEdgeK</a> kind)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;{</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> edge(src,dst,kind);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; assert(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> outEdge;</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">else</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</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;</div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1"> 307</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">ICFG::hasInterICFGEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* src, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dst, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429">ICFGEdge::ICFGEdgeK</a> kind)</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; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> edge(src,dst, kind);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</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; assert(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> outEdge;</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</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="l00324"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a29fb70d6638765ce291c5a8a11fbea64"> 324</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#a29fb70d6638765ce291c5a8a11fbea64">ICFG::hasThreadICFGEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* src, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dst, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429">ICFGEdge::ICFGEdgeK</a> kind)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;{</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> edge(src,dst,kind);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; assert(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">return</span> outEdge;</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="keywordflow">else</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</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="l00342"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475"> 342</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475">ICFG::getICFGEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dst, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429">ICFGEdge::ICFGEdgeK</a> kind)</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;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> * edge = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> counter = 0;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">for</span> (ICFGEdge::ICFGEdgeSetTy::iterator iter = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; iter != src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); ++iter)</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> ((*iter)-&gt;getDstID() == dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &amp;&amp; (*iter)-&gt;getEdgeKind() == kind)</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; counter++;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; edge = (*iter);</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; assert(counter &lt;= 1 &amp;&amp; <span class="stringliteral">&quot;there&#39;s more than one edge between two ICFG nodes&quot;</span>);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> edge;</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;}</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc"> 364</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">ICFG::addIntraEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* srcNode, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dstNode)</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; <a class="code" href="classSVF_1_1ICFG.html#a70421a19a494eb6131a9ae72ef1a64d6">checkIntraEdgeParents</a>(srcNode, dstNode);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">hasIntraICFGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">ICFGEdge::IntraCF</a>);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; assert(edge-&gt;<a class="code" href="classSVF_1_1ICFGEdge.html#a4e6d228dfc678618a423e8293877f04c">isIntraCFGEdge</a>() &amp;&amp; <span class="stringliteral">&quot;this should be an intra CFG edge!&quot;</span>);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>* intraEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(intraEdge) ? intraEdge : <span class="keyword">nullptr</span>);</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="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a1589272ab8eff17c1973f17038ef6eb3"> 383</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#a1589272ab8eff17c1973f17038ef6eb3">ICFG::addConditionalIntraEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* srcNode, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dstNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* condition, <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> branchCondVal)</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;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="classSVF_1_1ICFG.html#a70421a19a494eb6131a9ae72ef1a64d6">checkIntraEdgeParents</a>(srcNode, dstNode);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">hasIntraICFGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">ICFGEdge::IntraCF</a>);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; assert(edge-&gt;<a class="code" href="classSVF_1_1ICFGEdge.html#a4e6d228dfc678618a423e8293877f04c">isIntraCFGEdge</a>() &amp;&amp; <span class="stringliteral">&quot;this should be an intra CFG edge!&quot;</span>);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>* intraEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; intraEdge-&gt;<a class="code" href="classSVF_1_1IntraCFGEdge.html#a0ceb4d967e1059c9a53d1a230a79571b">setBranchCondition</a>(condition,branchCondVal);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(intraEdge) ? intraEdge : <span class="keyword">nullptr</span>);</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="l00405"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a2ad6c1e49cc847df18342cbbe6224863"> 405</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#a2ad6c1e49cc847df18342cbbe6224863">ICFG::addCallEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* srcNode, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dstNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* cs)</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;{</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">ICFGEdge::CallCF</a>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; assert(edge-&gt;<a class="code" href="classSVF_1_1ICFGEdge.html#a2ecc0bc3bb3655bf3db3adb732747b49">isCallCFGEdge</a>() &amp;&amp; <span class="stringliteral">&quot;this should be a call CFG edge!&quot;</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>* callEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>(srcNode,dstNode,cs);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(callEdge) ? callEdge : <span class="keyword">nullptr</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;}</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a8a5e7571e804702a2d0af7d420f21b33"> 423</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#a8a5e7571e804702a2d0af7d420f21b33">ICFG::addRetEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* srcNode, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dstNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* cs)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;{</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">ICFGEdge::RetCF</a>);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><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; assert(edge-&gt;<a class="code" href="classSVF_1_1ICFGEdge.html#ae3e7a6596de9fd3a25a28242a06ddd80">isRetCFGEdge</a>() &amp;&amp; <span class="stringliteral">&quot;this should be a return CFG edge!&quot;</span>);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">else</span></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="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>* retEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>(srcNode,dstNode,cs);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(retEdge) ? retEdge : <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;}</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;</div><div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba"> 442</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">ICFG::dump</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; file, <span class="keywordtype">bool</span> simple)</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;{</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>(), file, <span class="keyword">this</span>, simple);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;}</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a0d16e302515ffa0033e02ee8f6b3b590"> 450</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFG.html#a0d16e302515ffa0033e02ee8f6b3b590">ICFG::view</a>()</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;{</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="namespacellvm.html#a470c5592e4cd36a22901d15832b9c41b">llvm::ViewGraph</a>(<span class="keyword">this</span>, <span class="stringliteral">&quot;Interprocedural Control-Flow Graph&quot;</span>);</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;</div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a5a00682b75726cacc1b4d88bbf40c824"> 458</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFG.html#a5a00682b75726cacc1b4d88bbf40c824">ICFG::updateCallGraph</a>(<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* callgraph)</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; PTACallGraph::CallEdgeMap::const_iterator iter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().begin();</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; PTACallGraph::CallEdgeMap::const_iterator eiter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().end();</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">for</span> (; iter != eiter; iter++)</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlock = iter-&gt;first;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* cs = callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>();</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; assert(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#aa11226a2e4fa6a7b1d78006cc8ca0518">isIndirectCall</a>() &amp;&amp; <span class="stringliteral">&quot;this is not an indirect call?&quot;</span>);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> &amp; functions = iter-&gt;second;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div><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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = *func_iter;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = <a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(cs);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = <a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(cs);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee))</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">addIntraEdge</a>(callBlockNode, retBlockNode);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* calleeEntryNode = <a class="code" href="classSVF_1_1ICFG.html#acc261924103bd0c357acd3acfa6cf38a">getFunEntryBlock</a>(callee);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* calleeExitNode = <a class="code" href="classSVF_1_1ICFG.html#a22d7f37a0cb2df90f73c1f2e3eaa71c6">getFunExitBlock</a>(callee);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* callEdge = <a class="code" href="classSVF_1_1ICFG.html#a2ad6c1e49cc847df18342cbbe6224863">addCallEdge</a>(callBlockNode, calleeEntryNode, cs))</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : callBlockNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *callPE = SVFUtil::dyn_cast&lt;CallPE&gt;(stmt))</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span>(callPE-&gt;getFunEntryICFGNode() == calleeEntryNode)</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; SVFUtil::cast&lt;CallCFGEdge&gt;(callEdge)-&gt;addCallPE(callPE);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* retEdge = <a class="code" href="classSVF_1_1ICFG.html#a8a5e7571e804702a2d0af7d420f21b33">addRetEdge</a>(calleeExitNode, retBlockNode, cs))</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : retBlockNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *retPE = SVFUtil::dyn_cast&lt;RetPE&gt;(stmt))</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">if</span>(retPE-&gt;getFunExitICFGNode() == calleeExitNode)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; SVFUtil::cast&lt;RetCFGEdge&gt;(retEdge)-&gt;addRetPE(retPE);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">hasIntraICFGEdge</a>(callBlockNode,retBlockNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">ICFGEdge::IntraCF</a>))</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1ICFG.html#a534625b10673efe5b0f344bfebf9b3cf">removeICFGEdge</a>(edge);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div><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; <span class="comment">// dump ICFG</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#aea29a835c54fab800117e57de00e0b1e">Options::DumpICFG</a>)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <a class="code" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">dump</a>(<span class="stringliteral">&quot;icfg_final&quot;</span>);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;}</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacellvm.html">llvm</a></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;{</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00523"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html"> 523</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structllvm_1_1DOTGraphTraits.html">DOTGraphTraits</a>&lt;<a class="code" href="classSVF_1_1ICFG.html">ICFG</a>*&gt; : <span class="keyword">public</span> <a class="code" href="structllvm_1_1DOTGraphTraits.html">DOTGraphTraits&lt;SVFIR*&gt;</a></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;{</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a7ef3894da60c3e3350b8d2de3e94a562"> 526</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a7ef3894da60c3e3350b8d2de3e94a562">NodeType</a>;</div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a72d303201f61fdec14f08bddabf649e5"> 527</a></span>&#160; <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a72d303201f61fdec14f08bddabf649e5">DOTGraphTraits</a>(<span class="keywordtype">bool</span> isSimple = <span class="keyword">false</span>) :</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="structllvm_1_1DOTGraphTraits.html">DOTGraphTraits</a>&lt;<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>*&gt;(isSimple)</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; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div><div class="line"><a name="l00533"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a46226ebac48103764df6427119a322ce"> 533</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a46226ebac48103764df6427119a322ce">getGraphName</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a>*)</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; {</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ICFG&quot;</span>;</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;</div><div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#aaab33f12ee11b03d7d55a55f46178a2c"> 538</a></span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#aaab33f12ee11b03d7d55a55f46178a2c">getNodeLabel</a>(NodeType *node, <a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *graph)</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">return</span> getSimpleNodeLabel(node, graph);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00544"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a1cf0470d3e9821152416e3bf5236e553"> 544</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a1cf0470d3e9821152416e3bf5236e553">getSimpleNodeLabel</a>(NodeType *node, <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>*)</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; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>();</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;</div><div class="line"><a name="l00549"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#aef77eaa614a202f39964d0a0917b5140"> 549</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#aef77eaa614a202f39964d0a0917b5140">getNodeAttributes</a>(NodeType *node, <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>*)</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; std::stringstream rawstr(str);</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; <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraICFGNode&gt;(node))</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=black&quot;</span>;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FunEntryICFGNode&gt;(node))</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; rawstr &lt;&lt; <span class="stringliteral">&quot;color=yellow&quot;</span>;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FunExitICFGNode&gt;(node))</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=green&quot;</span>;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; }</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;CallICFGNode&gt;(node))</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=red&quot;</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;RetICFGNode&gt;(node))</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=blue&quot;</span>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalICFGNode&gt;(node))</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=purple&quot;</span>;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such kind of node!!&quot;</span>);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a74b0725d64b6e9c3060f2366633425f5"> 587</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a74b0725d64b6e9c3060f2366633425f5">getEdgeAttributes</a>(NodeType*, EdgeIter EI, <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>*)</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallCFGEdge&gt;(edge))</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid,color=red&quot;</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetCFGEdge&gt;(edge))</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid,color=blue&quot;</span>;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid&quot;</span>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</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; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a6255edef186d9268868d683b4bbda133"> 601</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a6255edef186d9268868d683b4bbda133">getEdgeSourceLabel</a>(NodeType*, EdgeIter EI)</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>* dirCall = SVFUtil::dyn_cast&lt;CallCFGEdge&gt;(edge))</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; rawstr &lt;&lt; dirCall-&gt;getCallSite();</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>* dirRet = SVFUtil::dyn_cast&lt;RetCFGEdge&gt;(edge))</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; rawstr &lt;&lt; dirRet-&gt;getCallSite();</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;};</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;} <span class="comment">// End namespace llvm</span></div><div class="ttc" id="classSVF_1_1IntraCFGEdge_html_a1e63286b4d6f757ac1220f5f03ae62de"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html#a1e63286b4d6f757ac1220f5f03ae62de">SVF::IntraCFGEdge::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00159">ICFG.cpp:159</a></div></div>
69
+ <a href="ICFG_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- ICFG.cpp -- Sparse value-flow graph-----------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2018&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * ICFG.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Sep 11, 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="Options_8h.html">Util/Options.h</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFModule_8h.html">SVFIR/SVFModule.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFG_8h.html">Graphs/ICFG.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIR_8h.html">SVFIR/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryICFGNode.html#a15fd95468e2200d92d650625d4fa2f31"> 40</a></span>&#160;<a class="code" href="classSVF_1_1FunEntryICFGNode.html#a15fd95468e2200d92d650625d4fa2f31">FunEntryICFGNode::FunEntryICFGNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f) : <a class="code" href="classSVF_1_1InterICFGNode.html">InterICFGNode</a>(id, FunEntryBlock)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a> = f;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// if function is implemented</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">if</span> (f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a49a6e9c0661135ceda2dd4d84c4b24ae">begin</a>() != f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a2f274c3af098ae6a5919246b1b88e7b7">end</a>())</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html#a0cd08725df3e8665762ee37b5d4c138a">bb</a> = f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitICFGNode.html#a84f43a81c2b6df125f32ddcb47b8858b"> 50</a></span>&#160;<a class="code" href="classSVF_1_1FunExitICFGNode.html#a84f43a81c2b6df125f32ddcb47b8858b">FunExitICFGNode::FunExitICFGNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f) : <a class="code" href="classSVF_1_1InterICFGNode.html">InterICFGNode</a>(id, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a>), formalRet(nullptr)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a> = f;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// if function is implemented</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a49a6e9c0661135ceda2dd4d84c4b24ae">begin</a>() != f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a2f274c3af098ae6a5919246b1b88e7b7">end</a>())</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html#a0cd08725df3e8665762ee37b5d4c138a">bb</a> = f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a8ca4fa87f4c26b71c6e03c8f32db1071">getExitBB</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a"> 62</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">ICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97"> 70</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97">ICFGNode::dump</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; this-&gt;<a class="code" href="classSVF_1_1FunExitICFGNode.html#aa73e5a5e577b789842987fec2fb307f9">toString</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1GlobalICFGNode.html#ada960e5bdba75c165a67b33c09819c47"> 75</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1GlobalICFGNode.html#ada960e5bdba75c165a67b33c09819c47">GlobalICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;GlobalICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; stmt-&gt;toString();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;}</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraICFGNode.html#a85d3e05cb5a95c2f9d678d9f010419a5"> 86</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1IntraICFGNode.html#a85d3e05cb5a95c2f9d678d9f010419a5">IntraICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;IntraICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; {fun: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() &lt;&lt; getInst()-&gt;getSourceLoc() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; stmt-&gt;toString();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().empty())</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; getInst()-&gt;toString();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;}</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryICFGNode.html#a3e9032ea2388682e568b6324fe8e4882"> 100</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1FunEntryICFGNode.html#a3e9032ea2388682e568b6324fe8e4882">FunEntryICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;FunEntryICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; {fun: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>())==<span class="keyword">false</span>)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; stmt-&gt;toString();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;}</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitICFGNode.html#aa73e5a5e577b789842987fec2fb307f9"> 114</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1FunExitICFGNode.html#aa73e5a5e577b789842987fec2fb307f9">FunExitICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;FunExitICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; {fun: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>())==<span class="keyword">false</span>)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a8ca4fa87f4c26b71c6e03c8f32db1071">getExitBB</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; stmt-&gt;toString();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;}</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classSVF_1_1CallICFGNode.html#ab07e504bbc100fa3e111d62de815a88c"> 129</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CallICFGNode.html#ab07e504bbc100fa3e111d62de815a88c">CallICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CallICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; {fun: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() &lt;&lt; getCallSite()-&gt;getSourceLoc() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; stmt-&gt;toString();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1RetICFGNode.html#ab0b54268167a593e2db9d02d3dd9c4f1"> 140</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1RetICFGNode.html#ab0b54268167a593e2db9d02d3dd9c4f1">RetICFGNode::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;RetICFGNode&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; {fun: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() &lt;&lt; getCallSite()-&gt;getSourceLoc() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; stmt-&gt;toString();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;}</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGEdge.html#a7233609f62f278b738036e8de9bbbfc8"> 151</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ICFGEdge.html#a7233609f62f278b738036e8de9bbbfc8">ICFGEdge::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ICFGEdge: [ICFGNode&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot; &lt;-- ICFGNode&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;}</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraCFGEdge.html#a1e63286b4d6f757ac1220f5f03ae62de"> 159</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1IntraCFGEdge.html#a1e63286b4d6f757ac1220f5f03ae62de">IntraCFGEdge::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span>(getCondition() == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;IntraCFGEdge: [ICFGNode&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot; &lt;-- ICFGNode&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;IntraCFGEdge: [ICFGNode&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot; &lt;-- ICFGNode&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;] (branchCondition:&quot;</span> &lt;&lt; getCondition()-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;) (succCondValue: &quot;</span> &lt;&lt; getSuccessorCondValue() &lt;&lt; <span class="stringliteral">&quot;) \t&quot;</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1CallCFGEdge.html#a2ad72b065dcb752e0779de9ff69c443a"> 171</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CallCFGEdge.html#a2ad72b065dcb752e0779de9ff69c443a">CallCFGEdge::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CallCFGEdge &quot;</span> &lt;&lt; <span class="stringliteral">&quot; [ICFGNode&quot;</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; rawstr &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot; &lt;-- ICFGNode&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t CallSite: &quot;</span> &lt;&lt; cs-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1RetCFGEdge.html#aca97e28617505e482b014dc805cb70aa"> 180</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1RetCFGEdge.html#aca97e28617505e482b014dc805cb70aa">RetCFGEdge::toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;RetCFGEdge &quot;</span> &lt;&lt; <span class="stringliteral">&quot; [ICFGNode&quot;</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; rawstr &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot; &lt;-- ICFGNode&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t CallSite: &quot;</span> &lt;&lt; cs-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;}</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a683f33b8ad507a33809511954c7c1acb"> 197</a></span>&#160;<a class="code" href="classSVF_1_1ICFG.html#a683f33b8ad507a33809511954c7c1acb">ICFG::ICFG</a>(): totalICFGNode(0)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;{</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#abdaf7551b7cd46bada3396c135e68584"> 201</a></span>&#160;<a class="code" href="classSVF_1_1ICFG.html#abdaf7551b7cd46bada3396c135e68584">ICFG::~ICFG</a>()</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="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFLoop*&gt;</a> loops;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: <a class="code" href="classSVF_1_1ICFG.html#a7d6aeecb00d77600a204a72d60023d54">icfgNodeToSVFLoopVec</a>)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;loop: it.second)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; loops.insert(loop);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: loops)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">delete</span> it;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; icfgNodeToSVFLoopVec.clear();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;}</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#aeaecbb856265565d198a3493f722087f"> 220</a></span>&#160;<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">ICFG::getICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4af4db2fe43846609d2ed1d7022b1be1">SVFUtil::isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; node = <a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#abb2bbf6e0dc5adae2140a519259e6f17">SVFUtil::isIntrinsicInst</a>(inst))</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; node = <a class="code" href="classSVF_1_1ICFG.html#aaf521832909781894659725300cf4f49">getIntraICFGNode</a>(inst);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment">// assert (false &amp;&amp; &quot;associating an intrinsic instruction with an ICFGNode!&quot;);</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; node = <a class="code" href="classSVF_1_1ICFG.html#aaf521832909781894659725300cf4f49">getIntraICFGNode</a>(inst);</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; assert (node!=<span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;no ICFGNode for this instruction?&quot;</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;}</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="l00236"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213"> 236</a></span>&#160;<a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">ICFG::getCallICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#afdc3358522417de9a0d3a181a329f722">SVFUtil::isCallSite</a>(inst) ==<span class="keyword">false</span>)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; inst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">toString</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#afdc3358522417de9a0d3a181a329f722">SVFUtil::isCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;not a call instruction?&quot;</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4af4db2fe43846609d2ed1d7022b1be1">SVFUtil::isNonInstricCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;associating an intrinsic debug instruction with an ICFGNode!&quot;</span>);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* node = <a class="code" href="classSVF_1_1ICFG.html#a1490b28446b9d8efee567ec02e2abcf3">getCallBlock</a>(inst);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span>(node==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; node = <a class="code" href="classSVF_1_1ICFG.html#ac51c8f38efbd2576e150a9fc26a4a41b">addCallBlock</a>(inst);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; assert (node!=<span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;no CallICFGNode for this instruction?&quot;</span>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;}</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf"> 249</a></span>&#160;<a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* <a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">ICFG::getRetICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</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; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#afdc3358522417de9a0d3a181a329f722">SVFUtil::isCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;not a call instruction?&quot;</span>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4af4db2fe43846609d2ed1d7022b1be1">SVFUtil::isNonInstricCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;associating an intrinsic debug instruction with an ICFGNode!&quot;</span>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* node = <a class="code" href="classSVF_1_1ICFG.html#a5ad71237256b2a8ce94a7d79a84afe55">getRetBlock</a>(inst);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span>(node==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; node = <a class="code" href="classSVF_1_1ICFG.html#ac58aa82eb74616a6608ff51d92f5baf6">addRetBlock</a>(inst);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; assert (node!=<span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;no RetICFGNode for this instruction?&quot;</span>);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#aaf521832909781894659725300cf4f49"> 260</a></span>&#160;<a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* <a class="code" href="classSVF_1_1ICFG.html#aaf521832909781894659725300cf4f49">ICFG::getIntraICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</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; <a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* node = <a class="code" href="classSVF_1_1ICFG.html#afeee2b61f8a84e1276f8955c4f6cf22d">getIntraBlock</a>(inst);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span>(node==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; node = <a class="code" href="classSVF_1_1ICFG.html#ad0183e8975e7190a121d8cb2aeec3d94">addIntraBlock</a>(inst);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;}</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076"> 269</a></span>&#160;<a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">ICFG::getFunEntryICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</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; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a> = <a class="code" href="classSVF_1_1ICFG.html#acc261924103bd0c357acd3acfa6cf38a">getFunEntryBlock</a>(fun);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span> (b == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFG.html#a1af9ae1c2efb4cb7897d5234d035c06b">addFunEntryBlock</a>(fun);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;}</div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919"> 278</a></span>&#160;<a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">ICFG::getFunExitICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</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; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a> = <a class="code" href="classSVF_1_1ICFG.html#a22d7f37a0cb2df90f73c1f2e3eaa71c6">getFunExitBlock</a>(fun);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span> (b == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFG.html#a6b716225b38638d6a34703995b749ad2">addFunExitBlock</a>(fun);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>;</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="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709"> 290</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">ICFG::hasIntraICFGEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* src, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dst, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429">ICFGEdge::ICFGEdgeK</a> kind)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;{</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> edge(src,dst,kind);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; assert(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> outEdge;</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">else</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</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;</div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1"> 307</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">ICFG::hasInterICFGEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* src, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dst, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429">ICFGEdge::ICFGEdgeK</a> kind)</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; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> edge(src,dst, kind);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</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; assert(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> outEdge;</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</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="l00324"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a29fb70d6638765ce291c5a8a11fbea64"> 324</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#a29fb70d6638765ce291c5a8a11fbea64">ICFG::hasThreadICFGEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* src, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dst, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429">ICFGEdge::ICFGEdgeK</a> kind)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;{</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> edge(src,dst,kind);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; assert(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">return</span> outEdge;</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="keywordflow">else</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</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="l00342"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475"> 342</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475">ICFG::getICFGEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dst, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429">ICFGEdge::ICFGEdgeK</a> kind)</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;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> * edge = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> counter = 0;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">for</span> (ICFGEdge::ICFGEdgeSetTy::iterator iter = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; iter != src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); ++iter)</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> ((*iter)-&gt;getDstID() == dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &amp;&amp; (*iter)-&gt;getEdgeKind() == kind)</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; counter++;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; edge = (*iter);</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; assert(counter &lt;= 1 &amp;&amp; <span class="stringliteral">&quot;there&#39;s more than one edge between two ICFG nodes&quot;</span>);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> edge;</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;}</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc"> 364</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">ICFG::addIntraEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* srcNode, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dstNode)</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; <a class="code" href="classSVF_1_1ICFG.html#a70421a19a494eb6131a9ae72ef1a64d6">checkIntraEdgeParents</a>(srcNode, dstNode);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">hasIntraICFGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">ICFGEdge::IntraCF</a>);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; assert(edge-&gt;<a class="code" href="classSVF_1_1ICFGEdge.html#a4e6d228dfc678618a423e8293877f04c">isIntraCFGEdge</a>() &amp;&amp; <span class="stringliteral">&quot;this should be an intra CFG edge!&quot;</span>);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>* intraEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(intraEdge) ? intraEdge : <span class="keyword">nullptr</span>);</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="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a1589272ab8eff17c1973f17038ef6eb3"> 383</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#a1589272ab8eff17c1973f17038ef6eb3">ICFG::addConditionalIntraEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* srcNode, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dstNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* condition, <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> branchCondVal)</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;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="classSVF_1_1ICFG.html#a70421a19a494eb6131a9ae72ef1a64d6">checkIntraEdgeParents</a>(srcNode, dstNode);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">hasIntraICFGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">ICFGEdge::IntraCF</a>);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; assert(edge-&gt;<a class="code" href="classSVF_1_1ICFGEdge.html#a4e6d228dfc678618a423e8293877f04c">isIntraCFGEdge</a>() &amp;&amp; <span class="stringliteral">&quot;this should be an intra CFG edge!&quot;</span>);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>* intraEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; intraEdge-&gt;<a class="code" href="classSVF_1_1IntraCFGEdge.html#a0ceb4d967e1059c9a53d1a230a79571b">setBranchCondition</a>(condition,branchCondVal);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(intraEdge) ? intraEdge : <span class="keyword">nullptr</span>);</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="l00405"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a2ad6c1e49cc847df18342cbbe6224863"> 405</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#a2ad6c1e49cc847df18342cbbe6224863">ICFG::addCallEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* srcNode, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dstNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* cs)</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;{</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">ICFGEdge::CallCF</a>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; assert(edge-&gt;<a class="code" href="classSVF_1_1ICFGEdge.html#a2ecc0bc3bb3655bf3db3adb732747b49">isCallCFGEdge</a>() &amp;&amp; <span class="stringliteral">&quot;this should be a call CFG edge!&quot;</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>* callEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>(srcNode,dstNode,cs);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(callEdge) ? callEdge : <span class="keyword">nullptr</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;}</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a8a5e7571e804702a2d0af7d420f21b33"> 423</a></span>&#160;<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* <a class="code" href="classSVF_1_1ICFG.html#a8a5e7571e804702a2d0af7d420f21b33">ICFG::addRetEdge</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* srcNode, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dstNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* cs)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;{</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">ICFGEdge::RetCF</a>);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><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; assert(edge-&gt;<a class="code" href="classSVF_1_1ICFGEdge.html#ae3e7a6596de9fd3a25a28242a06ddd80">isRetCFGEdge</a>() &amp;&amp; <span class="stringliteral">&quot;this should be a return CFG edge!&quot;</span>);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">else</span></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="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>* retEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>(srcNode,dstNode,cs);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(retEdge) ? retEdge : <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;}</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;</div><div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba"> 442</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">ICFG::dump</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; file, <span class="keywordtype">bool</span> simple)</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;{</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="classSVF_1_1GraphPrinter.html#a014217fb0d05c8f2a2f1a6c5b19d3e10">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>(), file, <span class="keyword">this</span>, simple);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;}</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a0d16e302515ffa0033e02ee8f6b3b590"> 450</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFG.html#a0d16e302515ffa0033e02ee8f6b3b590">ICFG::view</a>()</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;{</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="namespaceSVF.html#a4582a7d33a5631a5a38973f50035327e">SVF::ViewGraph</a>(<span class="keyword">this</span>, <span class="stringliteral">&quot;Interprocedural Control-Flow Graph&quot;</span>);</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;</div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFG.html#a5a00682b75726cacc1b4d88bbf40c824"> 458</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFG.html#a5a00682b75726cacc1b4d88bbf40c824">ICFG::updateCallGraph</a>(<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* callgraph)</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; PTACallGraph::CallEdgeMap::const_iterator iter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().begin();</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; PTACallGraph::CallEdgeMap::const_iterator eiter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().end();</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">for</span> (; iter != eiter; iter++)</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlock = iter-&gt;first;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* cs = callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>();</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; assert(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#aa11226a2e4fa6a7b1d78006cc8ca0518">isIndirectCall</a>() &amp;&amp; <span class="stringliteral">&quot;this is not an indirect call?&quot;</span>);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> &amp; functions = iter-&gt;second;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div><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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = *func_iter;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = <a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(cs);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = <a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(cs);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee))</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">addIntraEdge</a>(callBlockNode, retBlockNode);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* calleeEntryNode = <a class="code" href="classSVF_1_1ICFG.html#acc261924103bd0c357acd3acfa6cf38a">getFunEntryBlock</a>(callee);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* calleeExitNode = <a class="code" href="classSVF_1_1ICFG.html#a22d7f37a0cb2df90f73c1f2e3eaa71c6">getFunExitBlock</a>(callee);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* callEdge = <a class="code" href="classSVF_1_1ICFG.html#a2ad6c1e49cc847df18342cbbe6224863">addCallEdge</a>(callBlockNode, calleeEntryNode, cs))</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : callBlockNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *callPE = SVFUtil::dyn_cast&lt;CallPE&gt;(stmt))</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span>(callPE-&gt;getFunEntryICFGNode() == calleeEntryNode)</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; SVFUtil::cast&lt;CallCFGEdge&gt;(callEdge)-&gt;addCallPE(callPE);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* retEdge = <a class="code" href="classSVF_1_1ICFG.html#a8a5e7571e804702a2d0af7d420f21b33">addRetEdge</a>(calleeExitNode, retBlockNode, cs))</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt : retBlockNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *retPE = SVFUtil::dyn_cast&lt;RetPE&gt;(stmt))</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">if</span>(retPE-&gt;getFunExitICFGNode() == calleeExitNode)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; SVFUtil::cast&lt;RetCFGEdge&gt;(retEdge)-&gt;addRetPE(retPE);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">hasIntraICFGEdge</a>(callBlockNode,retBlockNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">ICFGEdge::IntraCF</a>))</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1ICFG.html#a534625b10673efe5b0f344bfebf9b3cf">removeICFGEdge</a>(edge);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div><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; <span class="comment">// dump ICFG</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#aea29a835c54fab800117e57de00e0b1e">Options::DumpICFG</a>)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <a class="code" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">dump</a>(<span class="stringliteral">&quot;icfg_final&quot;</span>);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;}</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;{</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00523"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html"> 523</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits</a>&lt;<a class="code" href="classSVF_1_1ICFG.html">ICFG</a>*&gt; : <span class="keyword">public</span> <a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits&lt;SVFIR*&gt;</a></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;{</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a4a53de3cf04961b3d00e6b474b838fcd"> 526</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a4a53de3cf04961b3d00e6b474b838fcd">NodeType</a>;</div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#af0d447adf06f88bad4b25ba8fd14efd5"> 527</a></span>&#160; <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#af0d447adf06f88bad4b25ba8fd14efd5">DOTGraphTraits</a>(<span class="keywordtype">bool</span> isSimple = <span class="keyword">false</span>) :</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits</a>&lt;<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>*&gt;(isSimple)</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; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div><div class="line"><a name="l00533"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a4938f51cfb9a5b63b89ab02d9e1950ad"> 533</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a4938f51cfb9a5b63b89ab02d9e1950ad">getGraphName</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a>*)</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; {</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ICFG&quot;</span>;</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;</div><div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a04de29b725e362137f9469850cf24eed"> 538</a></span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a04de29b725e362137f9469850cf24eed">getNodeLabel</a>(NodeType *node, <a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *graph)</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">return</span> getSimpleNodeLabel(node, graph);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00544"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a8964f2454b3e0887de6a0f3c9731e0aa"> 544</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a8964f2454b3e0887de6a0f3c9731e0aa">getSimpleNodeLabel</a>(NodeType *node, <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>*)</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; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>();</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;</div><div class="line"><a name="l00549"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#ada6dd55df689908741823e8e3a3cf289"> 549</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#ada6dd55df689908741823e8e3a3cf289">getNodeAttributes</a>(NodeType *node, <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>*)</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; std::stringstream rawstr(str);</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; <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraICFGNode&gt;(node))</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=black&quot;</span>;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FunEntryICFGNode&gt;(node))</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; rawstr &lt;&lt; <span class="stringliteral">&quot;color=yellow&quot;</span>;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FunExitICFGNode&gt;(node))</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=green&quot;</span>;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; }</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;CallICFGNode&gt;(node))</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=red&quot;</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;RetICFGNode&gt;(node))</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=blue&quot;</span>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalICFGNode&gt;(node))</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=purple&quot;</span>;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such kind of node!!&quot;</span>);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a9967092a5e97b6d684abcc718fe6e688"> 587</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a9967092a5e97b6d684abcc718fe6e688">getEdgeAttributes</a>(NodeType*, EdgeIter EI, <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>*)</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallCFGEdge&gt;(edge))</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid,color=red&quot;</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetCFGEdge&gt;(edge))</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid,color=blue&quot;</span>;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid&quot;</span>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</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; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a977a85211fc236f357f107b6721feaa0"> 601</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a977a85211fc236f357f107b6721feaa0">getEdgeSourceLabel</a>(NodeType*, EdgeIter EI)</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>* dirCall = SVFUtil::dyn_cast&lt;CallCFGEdge&gt;(edge))</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; rawstr &lt;&lt; dirCall-&gt;getCallSite();</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>* dirRet = SVFUtil::dyn_cast&lt;RetCFGEdge&gt;(edge))</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; rawstr &lt;&lt; dirRet-&gt;getCallSite();</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;};</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;} <span class="comment">// End namespace llvm</span></div><div class="ttc" id="classSVF_1_1IntraCFGEdge_html_a1e63286b4d6f757ac1220f5f03ae62de"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html#a1e63286b4d6f757ac1220f5f03ae62de">SVF::IntraCFGEdge::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00159">ICFG.cpp:159</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00044">ICFGEdge.h:44</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1ICFG_html_a6b716225b38638d6a34703995b749ad2"><div class="ttname"><a href="classSVF_1_1ICFG.html#a6b716225b38638d6a34703995b749ad2">SVF::ICFG::addFunExitBlock</a></div><div class="ttdeci">FunExitICFGNode * addFunExitBlock(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00262">ICFG.h:262</a></div></div>
72
- <div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00195">GenericGraph.h:195</a></div></div>
73
- <div class="ttc" id="classSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00579">SVFValue.h:579</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00196">GenericGraph.h:196</a></div></div>
73
+ <div class="ttc" id="classSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00570">SVFValue.h:570</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00545">SVFStatements.h:545</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1ICFGNode_html_a03587dbd558d8fffe25307b42e3195be"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">SVF::ICFGNode::fun</a></div><div class="ttdeci">const SVFFunction * fun</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00132">ICFGNode.h:132</a></div></div>
76
- <div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00192">CFLGraph.h:192</a></div></div>
77
76
  <div class="ttc" id="classSVF_1_1ICFG_html_ad0183e8975e7190a121d8cb2aeec3d94"><div class="ttname"><a href="classSVF_1_1ICFG.html#ad0183e8975e7190a121d8cb2aeec3d94">SVF::ICFG::addIntraBlock</a></div><div class="ttdeci">IntraICFGNode * addIntraBlock(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00230">ICFG.h:230</a></div></div>
78
77
  <div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
79
78
  <div class="ttc" id="classSVF_1_1IntraCFGEdge_html_a0ceb4d967e1059c9a53d1a230a79571b"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html#a0ceb4d967e1059c9a53d1a230a79571b">SVF::IntraCFGEdge::setBranchCondition</a></div><div class="ttdeci">void setBranchCondition(const SVFValue *c, s32_t bVal)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00148">ICFGEdge.h:148</a></div></div>
80
79
  <div class="ttc" id="classSVF_1_1CallCFGEdge_html_a2ad72b065dcb752e0779de9ff69c443a"><div class="ttname"><a href="classSVF_1_1CallCFGEdge.html#a2ad72b065dcb752e0779de9ff69c443a">SVF::CallCFGEdge::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00171">ICFG.cpp:171</a></div></div>
81
80
  <div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">SVF::ICFGEdge::RetCF</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00055">ICFGEdge.h:55</a></div></div>
82
- <div class="ttc" id="classSVF_1_1SVFValue_html_a68b40576b24c4cb81cc3ba75550f4654"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">SVF::SVFValue::getName</a></div><div class="ttdeci">virtual const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00215">SVFValue.h:215</a></div></div>
81
+ <div class="ttc" id="classSVF_1_1SVFValue_html_a68b40576b24c4cb81cc3ba75550f4654"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">SVF::SVFValue::getName</a></div><div class="ttdeci">virtual const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00210">SVFValue.h:210</a></div></div>
83
82
  <div class="ttc" id="PTACallGraph_8h_html"><div class="ttname"><a href="PTACallGraph_8h.html">PTACallGraph.h</a></div></div>
84
- <div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00207">GenericGraph.h:207</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00208">GenericGraph.h:208</a></div></div>
85
84
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_ad49fa2a288945f6910deb11acdf6a42d"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">SVF::PTACallGraph::getIndCallMap</a></div><div class="ttdeci">CallEdgeMap &amp; getIndCallMap()</div><div class="ttdoc">Get callees from an indirect callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00280">PTACallGraph.h:280</a></div></div>
86
85
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
87
86
  <div class="ttc" id="classSVF_1_1ICFG_html_a1af9ae1c2efb4cb7897d5234d035c06b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a1af9ae1c2efb4cb7897d5234d035c06b">SVF::ICFG::addFunEntryBlock</a></div><div class="ttdeci">FunEntryICFGNode * addFunEntryBlock(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00246">ICFG.h:246</a></div></div>
88
87
  <div class="ttc" id="classSVF_1_1ICFG_html_a5ad71237256b2a8ce94a7d79a84afe55"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5ad71237256b2a8ce94a7d79a84afe55">SVF::ICFG::getRetBlock</a></div><div class="ttdeci">RetICFGNode * getRetBlock(const SVFInstruction *cs)</div><div class="ttdoc">Get/Add a return node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00287">ICFG.h:287</a></div></div>
89
88
  <div class="ttc" id="classSVF_1_1FunEntryICFGNode_html_a15fd95468e2200d92d650625d4fa2f31"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html#a15fd95468e2200d92d650625d4fa2f31">SVF::FunEntryICFGNode::FunEntryICFGNode</a></div><div class="ttdeci">FunEntryICFGNode(NodeID id, const SVFFunction *f)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00040">ICFG.cpp:40</a></div></div>
90
- <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="SVFValue_8h_source.html#l00266">SVFValue.h:266</a></div></div>
89
+ <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="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
91
90
  <div class="ttc" id="classSVF_1_1ICFG_html_afeee2b61f8a84e1276f8955c4f6cf22d"><div class="ttname"><a href="classSVF_1_1ICFG.html#afeee2b61f8a84e1276f8955c4f6cf22d">SVF::ICFG::getIntraBlock</a></div><div class="ttdeci">IntraICFGNode * getIntraBlock(const SVFInstruction *inst)</div><div class="ttdoc">Get/Add IntraBlock ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00223">ICFG.h:223</a></div></div>
92
91
  <div class="ttc" id="classSVF_1_1CallCFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallCFGEdge.html">SVF::CallCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00168">ICFGEdge.h:168</a></div></div>
93
- <div class="ttc" id="classSVF_1_1GenericNode_html_a0931220d7a38e03f206cbdc6465d32ad"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">SVF::GenericNode::hasOutgoingEdge</a></div><div class="ttdeci">bool hasOutgoingEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00199">GenericGraph.h:199</a></div></div>
92
+ <div class="ttc" id="classSVF_1_1GenericNode_html_a0931220d7a38e03f206cbdc6465d32ad"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">SVF::GenericNode::hasOutgoingEdge</a></div><div class="ttdeci">bool hasOutgoingEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00200">GenericGraph.h:200</a></div></div>
94
93
  <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
95
94
  <div class="ttc" id="classSVF_1_1ICFGEdge_html_a2ecc0bc3bb3655bf3db3adb732747b49"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a2ecc0bc3bb3655bf3db3adb732747b49">SVF::ICFGEdge::isCallCFGEdge</a></div><div class="ttdeci">bool isCallCFGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00076">ICFGEdge.h:76</a></div></div>
96
95
  <div class="ttc" id="classSVF_1_1ICFG_html_af1b2d2839f811a00103df87342dfc919"><div class="ttname"><a href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitICFGNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00278">ICFG.cpp:278</a></div></div>
@@ -98,7 +97,6 @@ $(function() {
98
97
  <div class="ttc" id="classSVF_1_1ICFG_html_a683f33b8ad507a33809511954c7c1acb"><div class="ttname"><a href="classSVF_1_1ICFG.html#a683f33b8ad507a33809511954c7c1acb">SVF::ICFG::ICFG</a></div><div class="ttdeci">ICFG()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00197">ICFG.cpp:197</a></div></div>
99
98
  <div class="ttc" id="classSVF_1_1CallICFGNode_html_ab07e504bbc100fa3e111d62de815a88c"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#ab07e504bbc100fa3e111d62de815a88c">SVF::CallICFGNode::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00129">ICFG.cpp:129</a></div></div>
100
99
  <div class="ttc" id="classSVF_1_1ICFG_html_a881fe977f3a6fde223bd786121e35fcf"><div class="ttname"><a href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00249">ICFG.cpp:249</a></div></div>
101
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a46226ebac48103764df6427119a322ce"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a46226ebac48103764df6427119a322ce">llvm::DOTGraphTraits&lt; ICFG * &gt;::getGraphName</a></div><div class="ttdeci">static std::string getGraphName(ICFG *)</div><div class="ttdoc">Return name of the graph. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00533">ICFG.cpp:533</a></div></div>
102
100
  <div class="ttc" id="classSVF_1_1ICFGNode_html_a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">SVF::ICFGNode::FunExitBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00062">ICFGNode.h:62</a></div></div>
103
101
  <div class="ttc" id="classSVF_1_1ICFG_html_a0d16e302515ffa0033e02ee8f6b3b590"><div class="ttname"><a href="classSVF_1_1ICFG.html#a0d16e302515ffa0033e02ee8f6b3b590">SVF::ICFG::view</a></div><div class="ttdeci">void view()</div><div class="ttdoc">View graph from the debugger. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00450">ICFG.cpp:450</a></div></div>
104
102
  <div class="ttc" id="SVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
@@ -107,19 +105,21 @@ $(function() {
107
105
  <div class="ttc" id="classSVF_1_1ICFG_html_aa41516cdd2be5066adf22798a4fe2213"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00236">ICFG.cpp:236</a></div></div>
108
106
  <div class="ttc" id="classSVF_1_1GlobalICFGNode_html_ada960e5bdba75c165a67b33c09819c47"><div class="ttname"><a href="classSVF_1_1GlobalICFGNode.html#ada960e5bdba75c165a67b33c09819c47">SVF::GlobalICFGNode::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00075">ICFG.cpp:75</a></div></div>
109
107
  <div class="ttc" id="classSVF_1_1IntraICFGNode_html_a85d3e05cb5a95c2f9d678d9f010419a5"><div class="ttname"><a href="classSVF_1_1IntraICFGNode.html#a85d3e05cb5a95c2f9d678d9f010419a5">SVF::IntraICFGNode::toString</a></div><div class="ttdeci">const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00086">ICFG.cpp:86</a></div></div>
108
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_af0d447adf06f88bad4b25ba8fd14efd5"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#af0d447adf06f88bad4b25ba8fd14efd5">SVF::DOTGraphTraits&lt; ICFG * &gt;::DOTGraphTraits</a></div><div class="ttdeci">DOTGraphTraits(bool isSimple=false)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00527">ICFG.cpp:527</a></div></div>
110
109
  <div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429">SVF::ICFGEdge::ICFGEdgeK</a></div><div class="ttdeci">ICFGEdgeK</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00051">ICFGEdge.h:51</a></div></div>
111
110
  <div class="ttc" id="classSVF_1_1CallICFGNode_html_a90fd0b8e44fba1a7eb76d15bce085d66"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const SVFInstruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00380">ICFGNode.h:380</a></div></div>
112
111
  <div class="ttc" id="classSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00147">SVFValue.h:147</a></div></div>
113
- <div class="ttc" id="classSVF_1_1SVFFunction_html_a793f485e92d12cf407f2ffa41861eb3d"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">SVF::SVFFunction::getEntryBlock</a></div><div class="ttdeci">const SVFBasicBlock * getEntryBlock() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00376">SVFValue.h:376</a></div></div>
112
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_a793f485e92d12cf407f2ffa41861eb3d"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">SVF::SVFFunction::getEntryBlock</a></div><div class="ttdeci">const SVFBasicBlock * getEntryBlock() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00367">SVFValue.h:367</a></div></div>
114
113
  <div class="ttc" id="cJSON_8h_html_a1a175e87536301df98c805ac0636ad7c"><div class="ttname"><a href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a></div><div class="ttdeci">const cJSON *const b</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00255">cJSON.h:255</a></div></div>
115
114
  <div class="ttc" id="classSVF_1_1FunEntryICFGNode_html_a3e9032ea2388682e568b6324fe8e4882"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html#a3e9032ea2388682e568b6324fe8e4882">SVF::FunEntryICFGNode::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00100">ICFG.cpp:100</a></div></div>
116
115
  <div class="ttc" id="classSVF_1_1RetICFGNode_html"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html">SVF::RetICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00458">ICFGNode.h:458</a></div></div>
117
116
  <div class="ttc" id="classSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00488">SVFStatements.h:488</a></div></div>
118
117
  <div class="ttc" id="classSVF_1_1RetICFGNode_html_ab0b54268167a593e2db9d02d3dd9c4f1"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html#ab0b54268167a593e2db9d02d3dd9c4f1">SVF::RetICFGNode::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00140">ICFG.cpp:140</a></div></div>
119
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_aaab33f12ee11b03d7d55a55f46178a2c"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#aaab33f12ee11b03d7d55a55f46178a2c">llvm::DOTGraphTraits&lt; ICFG * &gt;::getNodeLabel</a></div><div class="ttdeci">std::string getNodeLabel(NodeType *node, ICFG *graph)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00538">ICFG.cpp:538</a></div></div>
118
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a4a53de3cf04961b3d00e6b474b838fcd"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a4a53de3cf04961b3d00e6b474b838fcd">SVF::DOTGraphTraits&lt; ICFG * &gt;::NodeType</a></div><div class="ttdeci">ICFGNode NodeType</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00526">ICFG.cpp:526</a></div></div>
120
119
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_abb2bbf6e0dc5adae2140a519259e6f17"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#abb2bbf6e0dc5adae2140a519259e6f17">SVF::SVFUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const SVFInstruction *inst)</div><div class="ttdoc">Return true if it is an llvm intrinsic instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00246">SVFUtil.cpp:246</a></div></div>
121
120
  <div class="ttc" id="classSVF_1_1FunEntryICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html">SVF::FunEntryICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00251">ICFGNode.h:251</a></div></div>
122
- <div class="ttc" id="classSVF_1_1SVFFunction_html_a49a6e9c0661135ceda2dd4d84c4b24ae"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a49a6e9c0661135ceda2dd4d84c4b24ae">SVF::SVFFunction::begin</a></div><div class="ttdeci">const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00398">SVFValue.h:398</a></div></div>
121
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_a49a6e9c0661135ceda2dd4d84c4b24ae"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a49a6e9c0661135ceda2dd4d84c4b24ae">SVF::SVFFunction::begin</a></div><div class="ttdeci">const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00389">SVFValue.h:389</a></div></div>
122
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a4938f51cfb9a5b63b89ab02d9e1950ad"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a4938f51cfb9a5b63b89ab02d9e1950ad">SVF::DOTGraphTraits&lt; ICFG * &gt;::getGraphName</a></div><div class="ttdeci">static std::string getGraphName(ICFG *)</div><div class="ttdoc">Return name of the graph. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00533">ICFG.cpp:533</a></div></div>
123
123
  <div class="ttc" id="classSVF_1_1ICFG_html_acc261924103bd0c357acd3acfa6cf38a"><div class="ttname"><a href="classSVF_1_1ICFG.html#acc261924103bd0c357acd3acfa6cf38a">SVF::ICFG::getFunEntryBlock</a></div><div class="ttdeci">FunEntryICFGNode * getFunEntryBlock(const SVFFunction *fun)</div><div class="ttdoc">Get/Add a function entry node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00239">ICFG.h:239</a></div></div>
124
124
  <div class="ttc" id="classSVF_1_1ICFG_html_a2ad6c1e49cc847df18342cbbe6224863"><div class="ttname"><a href="classSVF_1_1ICFG.html#a2ad6c1e49cc847df18342cbbe6224863">SVF::ICFG::addCallEdge</a></div><div class="ttdeci">ICFGEdge * addCallEdge(ICFGNode *srcNode, ICFGNode *dstNode, const SVFInstruction *cs)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00405">ICFG.cpp:405</a></div></div>
125
125
  <div class="ttc" id="classSVF_1_1ICFG_html_a86535e50d1feba706b19491d905baef1"><div class="ttname"><a href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">SVF::ICFG::hasInterICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasInterICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00307">ICFG.cpp:307</a></div></div>
@@ -127,31 +127,32 @@ $(function() {
127
127
  <div class="ttc" id="classSVF_1_1ICFG_html_ac58aa82eb74616a6608ff51d92f5baf6"><div class="ttname"><a href="classSVF_1_1ICFG.html#ac58aa82eb74616a6608ff51d92f5baf6">SVF::ICFG::addRetBlock</a></div><div class="ttdeci">RetICFGNode * addRetBlock(const SVFInstruction *cs)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00294">ICFG.h:294</a></div></div>
128
128
  <div class="ttc" id="classSVF_1_1IntraCFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html">SVF::IntraCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00113">ICFGEdge.h:113</a></div></div>
129
129
  <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00094">SVFType.h:94</a></div></div>
130
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_aef77eaa614a202f39964d0a0917b5140"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#aef77eaa614a202f39964d0a0917b5140">llvm::DOTGraphTraits&lt; ICFG * &gt;::getNodeAttributes</a></div><div class="ttdeci">static std::string getNodeAttributes(NodeType *node, ICFG *)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00549">ICFG.cpp:549</a></div></div>
131
- <div class="ttc" id="classSVF_1_1SVFValue_html_aa678ca4616a3e69b53726b33d0b9c5a2"><div class="ttname"><a href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">SVF::SVFValue::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdoc">Needs to be implemented by a specific SVF front end (e.g., the implementation in LLVMUtil) ...</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00641">LLVMUtil.cpp:641</a></div></div>
130
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a8964f2454b3e0887de6a0f3c9731e0aa"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a8964f2454b3e0887de6a0f3c9731e0aa">SVF::DOTGraphTraits&lt; ICFG * &gt;::getSimpleNodeLabel</a></div><div class="ttdeci">static std::string getSimpleNodeLabel(NodeType *node, ICFG *)</div><div class="ttdoc">Return the label of an ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00544">ICFG.cpp:544</a></div></div>
131
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_html"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits.html">SVF::DOTGraphTraits</a></div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00181">DOTGraphTraits.h:181</a></div></div>
132
+ <div class="ttc" id="classSVF_1_1SVFValue_html_aa678ca4616a3e69b53726b33d0b9c5a2"><div class="ttname"><a href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">SVF::SVFValue::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdoc">Needs to be implemented by a specific SVF front end (e.g., the implementation in LLVMUtil) ...</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00681">LLVMUtil.cpp:681</a></div></div>
132
133
  <div class="ttc" id="classSVF_1_1PTACallGraph_html"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html">SVF::PTACallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00218">PTACallGraph.h:218</a></div></div>
133
134
  <div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
134
135
  <div class="ttc" id="classSVF_1_1CallICFGNode_html_aa11226a2e4fa6a7b1d78006cc8ca0518"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#aa11226a2e4fa6a7b1d78006cc8ca0518">SVF::CallICFGNode::isIndirectCall</a></div><div class="ttdeci">bool isIndirectCall() const</div><div class="ttdoc">Return true if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00411">ICFGNode.h:411</a></div></div>
135
136
  <div class="ttc" id="classSVF_1_1ICFG_html_aaf521832909781894659725300cf4f49"><div class="ttname"><a href="classSVF_1_1ICFG.html#aaf521832909781894659725300cf4f49">SVF::ICFG::getIntraICFGNode</a></div><div class="ttdeci">IntraICFGNode * getIntraICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00260">ICFG.cpp:260</a></div></div>
136
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a74b0725d64b6e9c3060f2366633425f5"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a74b0725d64b6e9c3060f2366633425f5">llvm::DOTGraphTraits&lt; ICFG * &gt;::getEdgeAttributes</a></div><div class="ttdeci">static std::string getEdgeAttributes(NodeType *, EdgeIter EI, ICFG *)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00587">ICFG.cpp:587</a></div></div>
137
- <div class="ttc" id="classllvm_1_1GraphPrinter_html_af6ed328e74882d2b5e2b4039cb836928"><div class="ttname"><a href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">llvm::GraphPrinter::WriteGraphToFile</a></div><div class="ttdeci">static void WriteGraphToFile(SVF::OutStream &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>
138
137
  <div class="ttc" id="classSVF_1_1ICFGEdge_html_a4e6d228dfc678618a423e8293877f04c"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a4e6d228dfc678618a423e8293877f04c">SVF::ICFGEdge::isIntraCFGEdge</a></div><div class="ttdeci">bool isIntraCFGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00084">ICFGEdge.h:84</a></div></div>
139
138
  <div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">SVF::ICFGEdge::CallCF</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00054">ICFGEdge.h:54</a></div></div>
140
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a7ef3894da60c3e3350b8d2de3e94a562"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a7ef3894da60c3e3350b8d2de3e94a562">llvm::DOTGraphTraits&lt; ICFG * &gt;::NodeType</a></div><div class="ttdeci">ICFGNode NodeType</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00526">ICFG.cpp:526</a></div></div>
141
139
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::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>
140
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a04de29b725e362137f9469850cf24eed"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a04de29b725e362137f9469850cf24eed">SVF::DOTGraphTraits&lt; ICFG * &gt;::getNodeLabel</a></div><div class="ttdeci">std::string getNodeLabel(NodeType *node, ICFG *graph)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00538">ICFG.cpp:538</a></div></div>
141
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_ada6dd55df689908741823e8e3a3cf289"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#ada6dd55df689908741823e8e3a3cf289">SVF::DOTGraphTraits&lt; ICFG * &gt;::getNodeAttributes</a></div><div class="ttdeci">static std::string getNodeAttributes(NodeType *node, ICFG *)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00549">ICFG.cpp:549</a></div></div>
142
142
  <div class="ttc" id="classSVF_1_1InterICFGNode_html"><div class="ttname"><a href="classSVF_1_1InterICFGNode.html">SVF::InterICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00213">ICFGNode.h:213</a></div></div>
143
143
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_afdc3358522417de9a0d3a181a329f722"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#afdc3358522417de9a0d3a181a329f722">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00172">SVFUtil.h:172</a></div></div>
144
144
  <div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">SVF::ICFGEdge::IntraCF</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00053">ICFGEdge.h:53</a></div></div>
145
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_html"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits.html">llvm::DOTGraphTraits</a></div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00181">DOTGraphTraits.h:181</a></div></div>
146
145
  <div class="ttc" id="ICFG_8h_html"><div class="ttname"><a href="ICFG_8h.html">ICFG.h</a></div></div>
147
146
  <div class="ttc" id="classSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00087">ICFG.h:87</a></div></div>
148
147
  <div class="ttc" id="classSVF_1_1ICFG_html_a462f590c2604184d69e4efe3d85a7b5b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">SVF::ICFG::addICFGEdge</a></div><div class="ttdeci">bool addICFGEdge(ICFGEdge *edge)</div><div class="ttdoc">Add ICFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00178">ICFG.h:178</a></div></div>
149
- <div class="ttc" id="classSVF_1_1SVFValue_html_a7effb0f37f486745e0cdc3ae5e9c732b"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">SVF::SVFValue::getSourceLoc</a></div><div class="ttdeci">virtual const std::string getSourceLoc() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00248">SVFValue.h:248</a></div></div>
150
- <div class="ttc" id="classSVF_1_1SVFFunction_html_a8ca4fa87f4c26b71c6e03c8f32db1071"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a8ca4fa87f4c26b71c6e03c8f32db1071">SVF::SVFFunction::getExitBB</a></div><div class="ttdeci">const SVFBasicBlock * getExitBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00382">SVFValue.h:382</a></div></div>
148
+ <div class="ttc" id="classSVF_1_1SVFValue_html_a7effb0f37f486745e0cdc3ae5e9c732b"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">SVF::SVFValue::getSourceLoc</a></div><div class="ttdeci">virtual const std::string getSourceLoc() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00239">SVFValue.h:239</a></div></div>
149
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a977a85211fc236f357f107b6721feaa0"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a977a85211fc236f357f107b6721feaa0">SVF::DOTGraphTraits&lt; ICFG * &gt;::getEdgeSourceLabel</a></div><div class="ttdeci">static std::string getEdgeSourceLabel(NodeType *, EdgeIter EI)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00601">ICFG.cpp:601</a></div></div>
150
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_a8ca4fa87f4c26b71c6e03c8f32db1071"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a8ca4fa87f4c26b71c6e03c8f32db1071">SVF::SVFFunction::getExitBB</a></div><div class="ttdeci">const SVFBasicBlock * getExitBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00373">SVFValue.h:373</a></div></div>
151
151
  <div class="ttc" id="classSVF_1_1FunExitICFGNode_html_a84f43a81c2b6df125f32ddcb47b8858b"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html#a84f43a81c2b6df125f32ddcb47b8858b">SVF::FunExitICFGNode::FunExitICFGNode</a></div><div class="ttdeci">FunExitICFGNode(NodeID id, const SVFFunction *f)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00050">ICFG.cpp:50</a></div></div>
152
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a9967092a5e97b6d684abcc718fe6e688"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a9967092a5e97b6d684abcc718fe6e688">SVF::DOTGraphTraits&lt; ICFG * &gt;::getEdgeAttributes</a></div><div class="ttdeci">static std::string getEdgeAttributes(NodeType *, EdgeIter EI, ICFG *)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00587">ICFG.cpp:587</a></div></div>
152
153
  <div class="ttc" id="classSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00047">ICFG.h:47</a></div></div>
153
154
  <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
154
- <div class="ttc" id="classSVF_1_1SVFBasicBlock_html_a7bde256bc906af7f7204929019f4a33e"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">SVF::SVFBasicBlock::front</a></div><div class="ttdeci">const SVFInstruction * front() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00546">SVFValue.h:546</a></div></div>
155
+ <div class="ttc" id="classSVF_1_1SVFBasicBlock_html_a7bde256bc906af7f7204929019f4a33e"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">SVF::SVFBasicBlock::front</a></div><div class="ttdeci">const SVFInstruction * front() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00537">SVFValue.h:537</a></div></div>
155
156
  <div class="ttc" id="classSVF_1_1ICFG_html_ac51c8f38efbd2576e150a9fc26a4a41b"><div class="ttname"><a href="classSVF_1_1ICFG.html#ac51c8f38efbd2576e150a9fc26a4a41b">SVF::ICFG::addCallBlock</a></div><div class="ttdeci">CallICFGNode * addCallBlock(const SVFInstruction *cs)</div><div class="ttdoc">Get/Add a call node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00271">ICFG.h:271</a></div></div>
156
157
  <div class="ttc" id="classSVF_1_1ICFG_html_a5a00682b75726cacc1b4d88bbf40c824"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5a00682b75726cacc1b4d88bbf40c824">SVF::ICFG::updateCallGraph</a></div><div class="ttdeci">void updateCallGraph(PTACallGraph *callgraph)</div><div class="ttdoc">update ICFG for indirect calls </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00458">ICFG.cpp:458</a></div></div>
157
158
  <div class="ttc" id="classSVF_1_1ICFG_html_a22d7f37a0cb2df90f73c1f2e3eaa71c6"><div class="ttname"><a href="classSVF_1_1ICFG.html#a22d7f37a0cb2df90f73c1f2e3eaa71c6">SVF::ICFG::getFunExitBlock</a></div><div class="ttdeci">FunExitICFGNode * getFunExitBlock(const SVFFunction *fun)</div><div class="ttdoc">Get/Add a function exit node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00255">ICFG.h:255</a></div></div>
@@ -159,16 +160,13 @@ $(function() {
159
160
  <div class="ttc" id="classSVF_1_1ICFG_html_a8a5e7571e804702a2d0af7d420f21b33"><div class="ttname"><a href="classSVF_1_1ICFG.html#a8a5e7571e804702a2d0af7d420f21b33">SVF::ICFG::addRetEdge</a></div><div class="ttdeci">ICFGEdge * addRetEdge(ICFGNode *srcNode, ICFGNode *dstNode, const SVFInstruction *cs)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00423">ICFG.cpp:423</a></div></div>
160
161
  <div class="ttc" id="classSVF_1_1ICFGNode_html_a0cd08725df3e8665762ee37b5d4c138a"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a0cd08725df3e8665762ee37b5d4c138a">SVF::ICFGNode::bb</a></div><div class="ttdeci">const SVFBasicBlock * bb</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00133">ICFGNode.h:133</a></div></div>
161
162
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
162
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a72d303201f61fdec14f08bddabf649e5"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a72d303201f61fdec14f08bddabf649e5">llvm::DOTGraphTraits&lt; ICFG * &gt;::DOTGraphTraits</a></div><div class="ttdeci">DOTGraphTraits(bool isSimple=false)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00527">ICFG.cpp:527</a></div></div>
163
163
  <div class="ttc" id="classSVF_1_1Options_html_aea29a835c54fab800117e57de00e0b1e"><div class="ttname"><a href="classSVF_1_1Options.html#aea29a835c54fab800117e57de00e0b1e">SVF::Options::DumpICFG</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; DumpICFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00136">Options.h:136</a></div></div>
164
164
  <div class="ttc" id="classSVF_1_1ICFGNode_html_af1b6fd9ea200ab0ff51d48a4872c921a"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">SVF::ICFGNode::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00062">ICFG.cpp:62</a></div></div>
165
165
  <div class="ttc" id="classSVF_1_1ICFG_html_aa662baae5682ef6ec5084fa4147c9709"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">SVF::ICFG::hasIntraICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasIntraICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdoc">Whether we has a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00290">ICFG.cpp:290</a></div></div>
166
166
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
167
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a6255edef186d9268868d683b4bbda133"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a6255edef186d9268868d683b4bbda133">llvm::DOTGraphTraits&lt; ICFG * &gt;::getEdgeSourceLabel</a></div><div class="ttdeci">static std::string getEdgeSourceLabel(NodeType *, EdgeIter EI)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00601">ICFG.cpp:601</a></div></div>
168
167
  <div class="ttc" id="classSVF_1_1FunExitICFGNode_html_a54dfbbebbfe18a8a493656d6ad8663be"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">SVF::FunExitICFGNode::getFun</a></div><div class="ttdeci">const SVFFunction * getFun() const</div><div class="ttdoc">Return function. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00317">ICFGNode.h:317</a></div></div>
169
168
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4af4db2fe43846609d2ed1d7022b1be1"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4af4db2fe43846609d2ed1d7022b1be1">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00186">SVFUtil.h:186</a></div></div>
170
- <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#l00170">GenericGraph.h:170</a></div></div>
171
- <div class="ttc" id="namespacellvm_html_a470c5592e4cd36a22901d15832b9c41b"><div class="ttname"><a href="namespacellvm.html#a470c5592e4cd36a22901d15832b9c41b">llvm::ViewGraph</a></div><div class="ttdeci">void ViewGraph(const GraphType &amp;G, const std::string &amp;name, bool ShortNames=false, GraphProgram::Name Program=GraphProgram::DOT)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00371">GraphWriter.h:371</a></div></div>
169
+ <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#l00171">GenericGraph.h:171</a></div></div>
172
170
  <div class="ttc" id="classSVF_1_1ICFG_html_abdaf7551b7cd46bada3396c135e68584"><div class="ttname"><a href="classSVF_1_1ICFG.html#abdaf7551b7cd46bada3396c135e68584">SVF::ICFG::~ICFG</a></div><div class="ttdeci">virtual ~ICFG()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00201">ICFG.cpp:201</a></div></div>
173
171
  <div class="ttc" id="classSVF_1_1ICFG_html_a0dca4655c2f6112a5be1f921b8e81076"><div class="ttname"><a href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">SVF::ICFG::getFunEntryICFGNode</a></div><div class="ttdeci">FunEntryICFGNode * getFunEntryICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function entry node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00269">ICFG.cpp:269</a></div></div>
174
172
  <div class="ttc" id="classSVF_1_1FunExitICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html">SVF::FunExitICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00308">ICFGNode.h:308</a></div></div>
@@ -177,17 +175,18 @@ $(function() {
177
175
  <div class="ttc" id="classSVF_1_1ICFGEdge_html_ae3e7a6596de9fd3a25a28242a06ddd80"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#ae3e7a6596de9fd3a25a28242a06ddd80">SVF::ICFGEdge::isRetCFGEdge</a></div><div class="ttdeci">bool isRetCFGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00080">ICFGEdge.h:80</a></div></div>
178
176
  <div class="ttc" id="classSVF_1_1ICFG_html_a70421a19a494eb6131a9ae72ef1a64d6"><div class="ttname"><a href="classSVF_1_1ICFG.html#a70421a19a494eb6131a9ae72ef1a64d6">SVF::ICFG::checkIntraEdgeParents</a></div><div class="ttdeci">void checkIntraEdgeParents(const ICFGNode *srcNode, const ICFGNode *dstNode)</div><div class="ttdoc">sanitize Intra edges, verify that both nodes belong to the same function. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00167">ICFG.h:167</a></div></div>
179
177
  <div class="ttc" id="classSVF_1_1RetCFGEdge_html_aca97e28617505e482b014dc805cb70aa"><div class="ttname"><a href="classSVF_1_1RetCFGEdge.html#aca97e28617505e482b014dc805cb70aa">SVF::RetCFGEdge::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00180">ICFG.cpp:180</a></div></div>
180
- <div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00211">GenericGraph.h:211</a></div></div>
178
+ <div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00212">GenericGraph.h:212</a></div></div>
179
+ <div class="ttc" id="classSVF_1_1GraphPrinter_html_a014217fb0d05c8f2a2f1a6c5b19d3e10"><div class="ttname"><a href="classSVF_1_1GraphPrinter.html#a014217fb0d05c8f2a2f1a6c5b19d3e10">SVF::GraphPrinter::WriteGraphToFile</a></div><div class="ttdeci">static void WriteGraphToFile(SVF::OutStream &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>
181
180
  <div class="ttc" id="classSVF_1_1IntraICFGNode_html"><div class="ttname"><a href="classSVF_1_1IntraICFGNode.html">SVF::IntraICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00175">ICFGNode.h:175</a></div></div>
181
+ <div class="ttc" id="namespaceSVF_html_a4582a7d33a5631a5a38973f50035327e"><div class="ttname"><a href="namespaceSVF.html#a4582a7d33a5631a5a38973f50035327e">SVF::ViewGraph</a></div><div class="ttdeci">void ViewGraph(const GraphType &amp;G, const std::string &amp;name, bool ShortNames=false, GraphProgram::Name Program=GraphProgram::DOT)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00371">GraphWriter.h:371</a></div></div>
182
182
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
183
183
  <div class="ttc" id="classSVF_1_1ICFG_html_a5dd4ac55123501c47c628adcf27e2475"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475">SVF::ICFG::getICFGEdge</a></div><div class="ttdeci">ICFGEdge * getICFGEdge(const ICFGNode *src, const ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdoc">Get a SVFG edge according to src and dst. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00342">ICFG.cpp:342</a></div></div>
184
184
  <div class="ttc" id="classSVF_1_1ICFGEdge_html_a7233609f62f278b738036e8de9bbbfc8"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a7233609f62f278b738036e8de9bbbfc8">SVF::ICFGEdge::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00151">ICFG.cpp:151</a></div></div>
185
- <div class="ttc" id="classSVF_1_1SVFFunction_html_a2f274c3af098ae6a5919246b1b88e7b7"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a2f274c3af098ae6a5919246b1b88e7b7">SVF::SVFFunction::end</a></div><div class="ttdeci">const_iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00403">SVFValue.h:403</a></div></div>
185
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_a2f274c3af098ae6a5919246b1b88e7b7"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a2f274c3af098ae6a5919246b1b88e7b7">SVF::SVFFunction::end</a></div><div class="ttdeci">const_iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00394">SVFValue.h:394</a></div></div>
186
186
  <div class="ttc" id="classSVF_1_1ICFGNode_html_a6c68f52dd90728073fb79141df9b0661"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">SVF::ICFGNode::getSVFStmts</a></div><div class="ttdeci">const SVFStmtList &amp; getSVFStmts() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00121">ICFGNode.h:121</a></div></div>
187
187
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
188
188
  <div class="ttc" id="classSVF_1_1ICFG_html_adafd8bbb91507a9a78a3f16305812afc"><div class="ttname"><a href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">SVF::ICFG::addIntraEdge</a></div><div class="ttdeci">ICFGEdge * addIntraEdge(ICFGNode *srcNode, ICFGNode *dstNode)</div><div class="ttdoc">Add control-flow edges for top level pointers. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00364">ICFG.cpp:364</a></div></div>
189
189
  <div class="ttc" id="classSVF_1_1RetCFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetCFGEdge.html">SVF::RetCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00216">ICFGEdge.h:216</a></div></div>
190
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a1cf0470d3e9821152416e3bf5236e553"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a1cf0470d3e9821152416e3bf5236e553">llvm::DOTGraphTraits&lt; ICFG * &gt;::getSimpleNodeLabel</a></div><div class="ttdeci">static std::string getSimpleNodeLabel(NodeType *node, ICFG *)</div><div class="ttdoc">Return the label of an ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00544">ICFG.cpp:544</a></div></div>
191
190
  <div class="ttc" id="classSVF_1_1FunExitICFGNode_html_aa73e5a5e577b789842987fec2fb307f9"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html#aa73e5a5e577b789842987fec2fb307f9">SVF::FunExitICFGNode::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00114">ICFG.cpp:114</a></div></div>
192
191
  <div class="ttc" id="classSVF_1_1ICFG_html_a1589272ab8eff17c1973f17038ef6eb3"><div class="ttname"><a href="classSVF_1_1ICFG.html#a1589272ab8eff17c1973f17038ef6eb3">SVF::ICFG::addConditionalIntraEdge</a></div><div class="ttdeci">ICFGEdge * addConditionalIntraEdge(ICFGNode *srcNode, ICFGNode *dstNode, const SVFValue *condition, s32_t branchCondVal)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00383">ICFG.cpp:383</a></div></div>
193
192
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00295">SVFUtil.h:295</a></div></div>