svf-tools 1.0.596 → 1.0.598

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 (802) hide show
  1. package/README.md +1 -1
  2. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +4 -4
  3. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -7
  5. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +11 -11
  6. package/SVF-doxygen/html/html/Andersen_8h_source.html +5 -5
  7. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +7 -7
  8. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +5 -5
  9. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +8 -8
  10. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +4 -4
  11. package/SVF-doxygen/html/html/CFLGraph_8cpp.html +3 -2
  12. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +15 -16
  13. package/SVF-doxygen/html/html/CFLGraph_8h.html +4 -6
  14. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +19 -20
  15. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +4 -4
  16. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +8 -8
  18. package/SVF-doxygen/html/html/CHG_8cpp.html +6 -5
  19. package/SVF-doxygen/html/html/CHG_8cpp_source.html +26 -27
  20. package/SVF-doxygen/html/html/CHG_8h.html +4 -6
  21. package/SVF-doxygen/html/html/CHG_8h_source.html +13 -14
  22. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +3 -3
  24. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +7 -7
  25. package/SVF-doxygen/html/html/ConsG_8cpp.html +3 -2
  26. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +27 -28
  27. package/SVF-doxygen/html/html/ConsG_8h.html +4 -6
  28. package/SVF-doxygen/html/html/ConsG_8h_source.html +10 -11
  29. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +7 -7
  30. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  31. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +4 -4
  32. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +21 -21
  33. package/SVF-doxygen/html/html/DCHG_8h.html +4 -6
  34. package/SVF-doxygen/html/html/DCHG_8h_source.html +15 -16
  35. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  36. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  37. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
  38. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
  40. package/SVF-doxygen/html/html/DOTGraphTraits_8h.html +4 -3
  41. package/SVF-doxygen/html/html/DOTGraphTraits_8h_source.html +24 -24
  42. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +4 -4
  43. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  44. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -5
  45. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +12 -12
  47. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  50. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
  52. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +6 -6
  53. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +2 -2
  55. package/SVF-doxygen/html/html/GenericGraph_8h.html +8 -9
  56. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +125 -125
  57. package/SVF-doxygen/html/html/GraphPrinter_8h.html +3 -2
  58. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +7 -7
  59. package/SVF-doxygen/html/html/GraphReachSolver_8h_source.html +4 -4
  60. package/SVF-doxygen/html/html/GraphTraits_8h.html +20 -19
  61. package/SVF-doxygen/html/html/GraphTraits_8h_source.html +13 -13
  62. package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/html/GraphWriter_8h.html +23 -22
  64. package/SVF-doxygen/html/html/GraphWriter_8h_source.html +48 -48
  65. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +7 -7
  66. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +2 -2
  67. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +7 -7
  68. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +7 -7
  69. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
  70. package/SVF-doxygen/html/html/ICFG_8cpp.html +3 -2
  71. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +27 -28
  72. package/SVF-doxygen/html/html/ICFG_8h.html +4 -6
  73. package/SVF-doxygen/html/html/ICFG_8h_source.html +14 -15
  74. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
  75. package/SVF-doxygen/html/html/IRGraph_8cpp.html +3 -2
  76. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -21
  77. package/SVF-doxygen/html/html/IRGraph_8h.html +4 -6
  78. package/SVF-doxygen/html/html/IRGraph_8h_source.html +9 -10
  79. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +7 -7
  80. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +38 -39
  81. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +19 -19
  82. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +16 -9
  83. package/SVF-doxygen/html/html/LLVMUtil_8h.html +6 -0
  84. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +6 -4
  85. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +6 -6
  86. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
  88. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +23 -23
  89. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
  90. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +6 -6
  91. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +3 -3
  92. package/SVF-doxygen/html/html/MHP_8cpp_source.html +23 -23
  93. package/SVF-doxygen/html/html/MHP_8h_source.html +4 -4
  94. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +3 -3
  95. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
  96. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
  97. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +3 -3
  98. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +8 -8
  99. package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
  100. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  101. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  102. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +18 -18
  103. package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
  104. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +21 -21
  105. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  106. package/SVF-doxygen/html/html/PCG_8cpp_source.html +18 -18
  107. package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
  108. package/SVF-doxygen/html/html/PTACallGraph_8cpp.html +3 -2
  109. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +27 -28
  110. package/SVF-doxygen/html/html/PTACallGraph_8h.html +4 -6
  111. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +17 -18
  112. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +6 -6
  113. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
  114. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +3 -3
  115. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
  116. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +3 -3
  117. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +7 -7
  118. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
  119. package/SVF-doxygen/html/html/SCC_8h_source.html +4 -4
  120. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
  121. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +3 -3
  122. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +3 -3
  123. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +14 -14
  124. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +9 -9
  125. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +3 -3
  126. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +7 -7
  127. package/SVF-doxygen/html/html/SVFG_8cpp.html +3 -2
  128. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +23 -24
  129. package/SVF-doxygen/html/html/SVFG_8h.html +1 -3
  130. package/SVF-doxygen/html/html/SVFG_8h_source.html +13 -14
  131. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +15 -14
  132. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +4 -4
  133. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +8 -8
  134. package/SVF-doxygen/html/html/SVFIR_8h_source.html +4 -4
  135. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  136. package/SVF-doxygen/html/html/SVFModule_8h_source.html +4 -4
  137. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +9 -9
  138. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +9 -9
  139. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +12 -12
  140. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +4 -4
  141. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +9 -9
  142. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +16 -19
  143. package/SVF-doxygen/html/html/SVFValue_8h.html +3 -3
  144. package/SVF-doxygen/html/html/SVFValue_8h_source.html +210 -213
  145. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +7 -7
  146. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +13 -14
  147. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +3 -3
  148. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +17 -17
  149. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +6 -6
  150. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
  151. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +7 -7
  152. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  153. package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +3 -4
  154. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +3 -3
  155. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -10
  156. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -4
  157. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
  158. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
  159. package/SVF-doxygen/html/html/TCT_8cpp.html +3 -2
  160. package/SVF-doxygen/html/html/TCT_8cpp_source.html +38 -39
  161. package/SVF-doxygen/html/html/TCT_8h.html +4 -6
  162. package/SVF-doxygen/html/html/TCT_8h_source.html +27 -28
  163. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +10 -10
  164. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +6 -6
  165. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  166. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +7 -7
  167. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +8 -8
  168. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +6 -6
  169. package/SVF-doxygen/html/html/VFGNode_8h_source.html +8 -8
  170. package/SVF-doxygen/html/html/VFG_8cpp.html +3 -2
  171. package/SVF-doxygen/html/html/VFG_8cpp_source.html +20 -21
  172. package/SVF-doxygen/html/html/VFG_8h.html +4 -6
  173. package/SVF-doxygen/html/html/VFG_8h_source.html +14 -15
  174. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  175. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +10 -10
  176. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +3 -3
  177. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +8 -8
  178. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  179. package/SVF-doxygen/html/html/WPASolver_8h_source.html +4 -4
  180. package/SVF-doxygen/html/html/annotated.html +291 -291
  181. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +4 -4
  183. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +4 -4
  184. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +3 -3
  185. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +3 -3
  186. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  187. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  188. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +1 -1
  190. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  191. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +33 -33
  193. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +1 -1
  194. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +7 -7
  195. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +1 -1
  196. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +10 -10
  197. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +7 -7
  199. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
  200. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +4 -4
  202. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +4 -4
  204. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +12 -12
  205. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  206. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
  207. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +4 -4
  208. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
  209. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +11 -11
  210. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +4 -4
  211. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +4 -4
  212. package/SVF-doxygen/html/html/classSVF_1_1CFLNode-members.html +45 -44
  213. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +29 -29
  214. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +4 -4
  215. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
  216. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +16 -16
  217. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +17 -17
  218. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +3 -3
  219. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +2 -2
  221. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  222. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +7 -7
  223. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  224. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +1 -1
  225. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  226. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +56 -56
  227. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  228. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
  229. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  230. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +30 -30
  231. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +18 -18
  232. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +12 -12
  233. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  234. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +2 -2
  237. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +2 -2
  238. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  239. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +2 -2
  240. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +2 -2
  241. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +35 -35
  242. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  243. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +16 -16
  244. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  245. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  246. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +2 -2
  247. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  248. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +2 -2
  249. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
  250. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  251. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +6 -6
  253. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +3 -4
  254. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +1 -1
  255. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +4 -4
  256. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +2 -2
  257. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +8 -8
  258. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  259. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +1 -1
  260. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +21 -21
  261. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +17 -17
  262. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +29 -29
  263. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  264. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  265. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +3 -3
  266. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +3 -3
  267. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +6 -6
  268. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +8 -8
  269. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +31 -31
  270. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +44 -44
  271. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +98 -97
  272. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  273. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -4
  274. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  275. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  276. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -4
  277. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  278. package/SVF-doxygen/html/html/classSVF_1_1GraphPrinter-members.html +83 -0
  279. package/SVF-doxygen/html/html/classSVF_1_1GraphPrinter.html +236 -0
  280. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver-members.html +2 -2
  281. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.html +12 -12
  282. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter-members.html +100 -0
  283. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter.html +882 -0
  284. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +19 -19
  285. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +12 -12
  286. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +7 -7
  287. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  288. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
  289. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +11 -11
  290. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
  291. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  292. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +3 -3
  293. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +2 -2
  294. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +3 -3
  295. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +2 -2
  296. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  297. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +6 -6
  298. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  299. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
  301. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +7 -7
  302. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +69 -69
  303. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +2 -2
  304. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +22 -22
  305. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  307. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +3 -3
  308. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +50 -50
  309. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +7 -7
  310. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +55 -55
  311. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +1 -1
  312. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +22 -22
  313. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  314. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +4 -4
  315. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +3 -3
  316. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
  317. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
  318. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +37 -37
  319. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +9 -9
  320. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  321. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +36 -36
  322. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +3 -3
  323. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +4 -4
  324. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +3 -4
  325. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
  326. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +28 -28
  327. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +3 -3
  328. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +25 -25
  329. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +3 -3
  330. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +7 -7
  331. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +9 -9
  332. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  333. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +40 -40
  334. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +7 -7
  335. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +4 -4
  336. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +1 -1
  337. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +3 -3
  338. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +2 -2
  339. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +5 -5
  340. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  341. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  342. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
  343. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection-members.html +1 -1
  344. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +8 -8
  345. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +7 -9
  346. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +16 -20
  347. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +8 -10
  348. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +56 -63
  349. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +6 -8
  350. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +7 -11
  351. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +12 -14
  352. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +34 -38
  353. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +6 -8
  354. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +5 -9
  355. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +6 -8
  356. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +7 -11
  357. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +6 -8
  358. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +10 -14
  359. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +6 -8
  360. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +14 -18
  361. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +6 -8
  362. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +7 -11
  363. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +23 -25
  364. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +115 -119
  365. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +16 -16
  366. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  367. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +43 -43
  368. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +9 -9
  369. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +9 -11
  370. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +14 -18
  371. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +35 -35
  372. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +48 -47
  373. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +11 -13
  374. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +31 -35
  375. package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo.html +2 -2
  376. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +6 -8
  377. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +7 -11
  378. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +3 -3
  379. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +6 -8
  380. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +5 -9
  381. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +9 -9
  382. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +9 -9
  383. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +3 -3
  384. package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +25 -28
  385. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +38 -128
  386. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +12 -12
  387. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +14 -16
  388. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +29 -33
  389. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +46 -46
  390. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +13 -13
  391. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +2 -2
  392. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +2 -2
  393. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +16 -16
  394. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver-members.html +2 -2
  395. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.html +12 -12
  396. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +1 -1
  397. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +9 -9
  398. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +5 -5
  399. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  400. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +2 -2
  401. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +2 -3
  402. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +21 -54
  403. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
  404. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +72 -72
  405. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  406. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  407. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  408. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +11 -11
  409. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
  410. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  411. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +4 -4
  412. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +4 -4
  413. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  414. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +1 -1
  415. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +12 -12
  416. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +5 -5
  417. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +3 -3
  418. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +21 -21
  419. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +13 -13
  420. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  421. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +3 -4
  422. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
  423. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +1 -1
  424. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +35 -35
  425. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +6 -6
  426. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +4 -4
  427. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +1 -1
  428. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +4 -4
  429. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +7 -7
  430. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +9 -9
  431. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +4 -4
  432. package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +1 -1
  433. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +8 -8
  434. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base-members.html +112 -0
  435. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +633 -0
  436. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.png +0 -0
  437. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base-members.html +102 -0
  438. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base.html +787 -0
  439. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base.png +0 -0
  440. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy-members.html +84 -0
  441. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +229 -0
  442. package/SVF-doxygen/html/html/classSVF_1_1iter__range-members.html +87 -0
  443. package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +342 -0
  444. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter-members.html +112 -0
  445. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +322 -0
  446. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.png +0 -0
  447. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator-members.html +113 -0
  448. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +343 -0
  449. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.png +0 -0
  450. package/SVF-doxygen/html/html/classes.html +59 -59
  451. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  452. package/SVF-doxygen/html/html/fastcluster__R__dm_8cpp_8inc_source.html +2 -2
  453. package/SVF-doxygen/html/html/functions_a.html +1 -1
  454. package/SVF-doxygen/html/html/functions_b.html +4 -4
  455. package/SVF-doxygen/html/html/functions_c.html +20 -18
  456. package/SVF-doxygen/html/html/functions_d.html +20 -20
  457. package/SVF-doxygen/html/html/functions_e.html +14 -16
  458. package/SVF-doxygen/html/html/functions_eval_i.html +2 -2
  459. package/SVF-doxygen/html/html/functions_f.html +1 -1
  460. package/SVF-doxygen/html/html/functions_func.html +1 -1
  461. package/SVF-doxygen/html/html/functions_func_b.html +2 -2
  462. package/SVF-doxygen/html/html/functions_func_c.html +4 -4
  463. package/SVF-doxygen/html/html/functions_func_d.html +14 -14
  464. package/SVF-doxygen/html/html/functions_func_e.html +8 -8
  465. package/SVF-doxygen/html/html/functions_func_g.html +72 -72
  466. package/SVF-doxygen/html/html/functions_func_h.html +4 -7
  467. package/SVF-doxygen/html/html/functions_func_i.html +17 -20
  468. package/SVF-doxygen/html/html/functions_func_m.html +1 -1
  469. package/SVF-doxygen/html/html/functions_func_n.html +3 -3
  470. package/SVF-doxygen/html/html/functions_func_o.html +24 -24
  471. package/SVF-doxygen/html/html/functions_func_p.html +4 -4
  472. package/SVF-doxygen/html/html/functions_func_r.html +2 -2
  473. package/SVF-doxygen/html/html/functions_func_s.html +15 -18
  474. package/SVF-doxygen/html/html/functions_func_w.html +8 -8
  475. package/SVF-doxygen/html/html/functions_g.html +84 -82
  476. package/SVF-doxygen/html/html/functions_h.html +6 -12
  477. package/SVF-doxygen/html/html/functions_i.html +40 -43
  478. package/SVF-doxygen/html/html/functions_l.html +3 -3
  479. package/SVF-doxygen/html/html/functions_m.html +1 -1
  480. package/SVF-doxygen/html/html/functions_n.html +30 -30
  481. package/SVF-doxygen/html/html/functions_o.html +39 -43
  482. package/SVF-doxygen/html/html/functions_p.html +16 -16
  483. package/SVF-doxygen/html/html/functions_r.html +8 -6
  484. package/SVF-doxygen/html/html/functions_rela.html +3 -3
  485. package/SVF-doxygen/html/html/functions_s.html +22 -25
  486. package/SVF-doxygen/html/html/functions_t.html +3 -3
  487. package/SVF-doxygen/html/html/functions_type_b.html +1 -1
  488. package/SVF-doxygen/html/html/functions_type_c.html +7 -7
  489. package/SVF-doxygen/html/html/functions_type_d.html +4 -4
  490. package/SVF-doxygen/html/html/functions_type_e.html +4 -4
  491. package/SVF-doxygen/html/html/functions_type_g.html +6 -6
  492. package/SVF-doxygen/html/html/functions_type_i.html +4 -4
  493. package/SVF-doxygen/html/html/functions_type_n.html +27 -27
  494. package/SVF-doxygen/html/html/functions_type_p.html +3 -3
  495. package/SVF-doxygen/html/html/functions_type_r.html +2 -2
  496. package/SVF-doxygen/html/html/functions_type_v.html +2 -2
  497. package/SVF-doxygen/html/html/functions_v.html +5 -5
  498. package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
  499. package/SVF-doxygen/html/html/functions_vars_d.html +1 -1
  500. package/SVF-doxygen/html/html/functions_vars_e.html +1 -1
  501. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  502. package/SVF-doxygen/html/html/functions_vars_g.html +7 -5
  503. package/SVF-doxygen/html/html/functions_vars_h.html +0 -3
  504. package/SVF-doxygen/html/html/functions_vars_i.html +6 -6
  505. package/SVF-doxygen/html/html/functions_vars_o.html +1 -1
  506. package/SVF-doxygen/html/html/functions_vars_p.html +1 -1
  507. package/SVF-doxygen/html/html/functions_w.html +17 -17
  508. package/SVF-doxygen/html/html/hierarchy.html +159 -159
  509. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +4 -4
  510. package/SVF-doxygen/html/html/iterator_8h.html +16 -15
  511. package/SVF-doxygen/html/html/iterator_8h_source.html +53 -53
  512. package/SVF-doxygen/html/html/iterator__range_8h.html +9 -8
  513. package/SVF-doxygen/html/html/iterator__range_8h_source.html +11 -11
  514. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  515. package/SVF-doxygen/html/html/namespaceSVF.html +575 -9
  516. package/SVF-doxygen/html/html/namespaceSVF_1_1DOT.html +107 -0
  517. package/SVF-doxygen/html/html/namespaceSVF_1_1GraphProgram.html +122 -0
  518. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +65 -7
  519. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +3 -3
  520. package/SVF-doxygen/html/html/namespacellvm.html +1 -572
  521. package/SVF-doxygen/html/html/namespacemembers_c.html +3 -3
  522. package/SVF-doxygen/html/html/namespacemembers_d.html +1 -1
  523. package/SVF-doxygen/html/html/namespacemembers_e.html +1 -1
  524. package/SVF-doxygen/html/html/namespacemembers_enum.html +1 -1
  525. package/SVF-doxygen/html/html/namespacemembers_eval.html +5 -5
  526. package/SVF-doxygen/html/html/namespacemembers_f.html +1 -1
  527. package/SVF-doxygen/html/html/namespacemembers_func_c.html +2 -2
  528. package/SVF-doxygen/html/html/namespacemembers_func_e.html +1 -1
  529. package/SVF-doxygen/html/html/namespacemembers_func_i.html +8 -5
  530. package/SVF-doxygen/html/html/namespacemembers_func_m.html +4 -4
  531. package/SVF-doxygen/html/html/namespacemembers_func_n.html +1 -1
  532. package/SVF-doxygen/html/html/namespacemembers_func_v.html +1 -1
  533. package/SVF-doxygen/html/html/namespacemembers_func_w.html +1 -1
  534. package/SVF-doxygen/html/html/namespacemembers_g.html +1 -1
  535. package/SVF-doxygen/html/html/namespacemembers_i.html +6 -3
  536. package/SVF-doxygen/html/html/namespacemembers_m.html +4 -4
  537. package/SVF-doxygen/html/html/namespacemembers_n.html +3 -3
  538. package/SVF-doxygen/html/html/namespacemembers_r.html +1 -1
  539. package/SVF-doxygen/html/html/namespacemembers_t.html +1 -1
  540. package/SVF-doxygen/html/html/namespacemembers_type_g.html +1 -1
  541. package/SVF-doxygen/html/html/namespacemembers_type_r.html +1 -1
  542. package/SVF-doxygen/html/html/namespacemembers_v.html +1 -1
  543. package/SVF-doxygen/html/html/namespacemembers_w.html +1 -1
  544. package/SVF-doxygen/html/html/namespaces.html +5 -5
  545. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  546. package/SVF-doxygen/html/html/search/all_1.js +1 -1
  547. package/SVF-doxygen/html/html/search/all_10.js +12 -12
  548. package/SVF-doxygen/html/html/search/all_11.js +7 -7
  549. package/SVF-doxygen/html/html/search/all_12.js +7 -6
  550. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  551. package/SVF-doxygen/html/html/search/all_15.js +4 -4
  552. package/SVF-doxygen/html/html/search/all_16.js +10 -10
  553. package/SVF-doxygen/html/html/search/all_2.js +3 -3
  554. package/SVF-doxygen/html/html/search/all_3.js +7 -7
  555. package/SVF-doxygen/html/html/search/all_4.js +20 -20
  556. package/SVF-doxygen/html/html/search/all_5.js +9 -9
  557. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  558. package/SVF-doxygen/html/html/search/all_7.js +87 -87
  559. package/SVF-doxygen/html/html/search/all_8.js +1 -3
  560. package/SVF-doxygen/html/html/search/all_9.js +23 -23
  561. package/SVF-doxygen/html/html/search/all_c.js +2 -4
  562. package/SVF-doxygen/html/html/search/all_d.js +5 -5
  563. package/SVF-doxygen/html/html/search/all_e.js +11 -11
  564. package/SVF-doxygen/html/html/search/all_f.js +19 -19
  565. package/SVF-doxygen/html/html/search/classes_3.js +13 -13
  566. package/SVF-doxygen/html/html/search/classes_6.js +64 -64
  567. package/SVF-doxygen/html/html/search/classes_8.js +10 -10
  568. package/SVF-doxygen/html/html/search/classes_a.js +1 -1
  569. package/SVF-doxygen/html/html/search/classes_d.js +2 -2
  570. package/SVF-doxygen/html/html/search/classes_e.js +1 -1
  571. package/SVF-doxygen/html/html/search/enums_8.js +1 -1
  572. package/SVF-doxygen/html/html/search/enumvalues_10.js +1 -1
  573. package/SVF-doxygen/html/html/search/enumvalues_2.js +1 -1
  574. package/SVF-doxygen/html/html/search/enumvalues_3.js +1 -1
  575. package/SVF-doxygen/html/html/search/enumvalues_5.js +1 -1
  576. package/SVF-doxygen/html/html/search/enumvalues_8.js +2 -2
  577. package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -1
  578. package/SVF-doxygen/html/html/search/functions_0.js +1 -1
  579. package/SVF-doxygen/html/html/search/functions_1.js +1 -1
  580. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  581. package/SVF-doxygen/html/html/search/functions_11.js +1 -2
  582. package/SVF-doxygen/html/html/search/functions_14.js +1 -1
  583. package/SVF-doxygen/html/html/search/functions_15.js +8 -8
  584. package/SVF-doxygen/html/html/search/functions_2.js +4 -4
  585. package/SVF-doxygen/html/html/search/functions_3.js +5 -5
  586. package/SVF-doxygen/html/html/search/functions_4.js +7 -7
  587. package/SVF-doxygen/html/html/search/functions_6.js +21 -21
  588. package/SVF-doxygen/html/html/search/functions_7.js +1 -2
  589. package/SVF-doxygen/html/html/search/functions_8.js +8 -8
  590. package/SVF-doxygen/html/html/search/functions_c.js +5 -5
  591. package/SVF-doxygen/html/html/search/functions_d.js +4 -4
  592. package/SVF-doxygen/html/html/search/functions_e.js +14 -14
  593. package/SVF-doxygen/html/html/search/functions_f.js +4 -4
  594. package/SVF-doxygen/html/html/search/namespaces_0.js +0 -2
  595. package/SVF-doxygen/html/html/search/namespaces_1.js +2 -0
  596. package/SVF-doxygen/html/html/search/related_9.js +3 -3
  597. package/SVF-doxygen/html/html/search/typedefs_1.js +1 -1
  598. package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
  599. package/SVF-doxygen/html/html/search/typedefs_2.js +2 -2
  600. package/SVF-doxygen/html/html/search/typedefs_3.js +2 -2
  601. package/SVF-doxygen/html/html/search/typedefs_4.js +1 -1
  602. package/SVF-doxygen/html/html/search/typedefs_6.js +3 -3
  603. package/SVF-doxygen/html/html/search/typedefs_7.js +2 -2
  604. package/SVF-doxygen/html/html/search/typedefs_c.js +4 -4
  605. package/SVF-doxygen/html/html/search/typedefs_e.js +2 -2
  606. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -2
  607. package/SVF-doxygen/html/html/search/variables_10.js +1 -1
  608. package/SVF-doxygen/html/html/search/variables_13.js +3 -3
  609. package/SVF-doxygen/html/html/search/variables_2.js +1 -1
  610. package/SVF-doxygen/html/html/search/variables_4.js +1 -1
  611. package/SVF-doxygen/html/html/search/variables_5.js +1 -1
  612. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  613. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  614. package/SVF-doxygen/html/html/search/variables_8.js +0 -1
  615. package/SVF-doxygen/html/html/search/variables_9.js +5 -5
  616. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  617. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  618. package/SVF-doxygen/html/html/search/variables_f.js +1 -1
  619. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits-members.html +99 -0
  620. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits.html +193 -0
  621. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits.png +0 -0
  622. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4-members.html +105 -0
  623. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +443 -0
  624. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.png +0 -0
  625. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4-members.html +104 -0
  626. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +388 -0
  627. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.png +0 -0
  628. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4-members.html +106 -0
  629. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +481 -0
  630. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.png +0 -0
  631. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4-members.html +106 -0
  632. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +475 -0
  633. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.png +0 -0
  634. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4-members.html +107 -0
  635. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +486 -0
  636. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.png +0 -0
  637. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4-members.html +106 -0
  638. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +457 -0
  639. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.png +0 -0
  640. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4-members.html +108 -0
  641. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +595 -0
  642. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.png +0 -0
  643. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4-members.html +105 -0
  644. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +409 -0
  645. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4.png +0 -0
  646. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4-members.html +107 -0
  647. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +543 -0
  648. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4.png +0 -0
  649. package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits-members.html +99 -0
  650. package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits.html +855 -0
  651. package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits.png +0 -0
  652. package/SVF-doxygen/html/html/structSVF_1_1GenericEdge_1_1equalGEdge.html +3 -3
  653. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits-members.html +81 -0
  654. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits.html +116 -0
  655. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4-members.html +81 -0
  656. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.html +106 -0
  657. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.png +0 -0
  658. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4-members.html +81 -0
  659. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +110 -0
  660. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.png +0 -0
  661. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4-members.html +81 -0
  662. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.html +110 -0
  663. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.png +0 -0
  664. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4-members.html +81 -0
  665. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.html +110 -0
  666. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.png +0 -0
  667. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4-members.html +81 -0
  668. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.html +110 -0
  669. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.png +0 -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-members.html +88 -0
  671. 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
  672. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4-members.html +81 -0
  673. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.html +110 -0
  674. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.png +0 -0
  675. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4-members.html +81 -0
  676. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.html +110 -0
  677. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.png +0 -0
  678. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4-members.html +81 -0
  679. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.html +110 -0
  680. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.png +0 -0
  681. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4-members.html +81 -0
  682. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +110 -0
  683. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.png +0 -0
  684. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4-members.html +81 -0
  685. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html +110 -0
  686. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.png +0 -0
  687. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4-members.html +81 -0
  688. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +126 -0
  689. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.png +0 -0
  690. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4-members.html +81 -0
  691. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +106 -0
  692. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.png +0 -0
  693. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4-members.html +81 -0
  694. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.html +126 -0
  695. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.png +0 -0
  696. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4-members.html +81 -0
  697. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4.html +106 -0
  698. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4.png +0 -0
  699. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4-members.html +81 -0
  700. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.html +126 -0
  701. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.png +0 -0
  702. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4-members.html +81 -0
  703. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.html +106 -0
  704. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.png +0 -0
  705. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4-members.html +81 -0
  706. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.html +126 -0
  707. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.png +0 -0
  708. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4-members.html +81 -0
  709. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.html +106 -0
  710. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.png +0 -0
  711. 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
  712. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +467 -0
  713. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.png +0 -0
  714. 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
  715. 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
  716. 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
  717. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4-members.html +81 -0
  718. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.html +106 -0
  719. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.png +0 -0
  720. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4-members.html +81 -0
  721. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4.html +126 -0
  722. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4.png +0 -0
  723. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4-members.html +81 -0
  724. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.html +126 -0
  725. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.png +0 -0
  726. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4-members.html +81 -0
  727. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.html +106 -0
  728. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.png +0 -0
  729. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4-members.html +81 -0
  730. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html +126 -0
  731. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.png +0 -0
  732. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4-members.html +81 -0
  733. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +126 -0
  734. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.png +0 -0
  735. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4-members.html +81 -0
  736. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.html +106 -0
  737. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.png +0 -0
  738. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4-members.html +81 -0
  739. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +106 -0
  740. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.png +0 -0
  741. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4-members.html +81 -0
  742. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +126 -0
  743. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4.png +0 -0
  744. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4-members.html +81 -0
  745. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html +106 -0
  746. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.png +0 -0
  747. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4-members.html +81 -0
  748. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4.html +126 -0
  749. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4.png +0 -0
  750. package/SVF-doxygen/html/html/structSVF_1_1Inverse-members.html +82 -0
  751. package/SVF-doxygen/html/html/structSVF_1_1Inverse.html +154 -0
  752. package/SVF-doxygen/html/html/structSVF_1_1pointee__iter-members.html +111 -0
  753. package/SVF-doxygen/html/html/structSVF_1_1pointee__iter.html +279 -0
  754. package/SVF-doxygen/html/html/structSVF_1_1pointee__iter.png +0 -0
  755. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  756. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  757. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  758. package/SVF-doxygen/html/html/svf-ex_8cpp.html +9 -9
  759. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
  760. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +4 -4
  761. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  762. package/include/Graphs/CFLGraph.h +6 -6
  763. package/include/Graphs/CHG.h +6 -6
  764. package/include/Graphs/ConsG.h +6 -6
  765. package/include/Graphs/DOTGraphTraits.h +3 -3
  766. package/include/Graphs/GenericGraph.h +10 -9
  767. package/include/Graphs/GraphPrinter.h +2 -2
  768. package/include/Graphs/GraphTraits.h +29 -29
  769. package/include/Graphs/GraphWriter.h +6 -6
  770. package/include/Graphs/ICFG.h +6 -6
  771. package/include/Graphs/IRGraph.h +6 -7
  772. package/include/Graphs/PTACallGraph.h +6 -6
  773. package/include/Graphs/SVFG.h +6 -6
  774. package/include/Graphs/VFG.h +6 -6
  775. package/include/MTA/TCT.h +6 -6
  776. package/include/SABER/SrcSnkSolver.h +2 -2
  777. package/include/SVF-LLVM/DCHG.h +6 -6
  778. package/include/SVF-LLVM/LLVMUtil.h +5 -0
  779. package/include/SVF-LLVM/SymbolTableBuilder.h +0 -3
  780. package/include/SVFIR/SVFValue.h +2 -11
  781. package/include/SVFIR/SVFVariables.h +5 -5
  782. package/include/Util/GraphReachSolver.h +2 -2
  783. package/include/Util/SCC.h +1 -1
  784. package/include/Util/iterator.h +32 -32
  785. package/include/Util/iterator_range.h +11 -11
  786. package/include/WPA/WPASolver.h +1 -1
  787. package/lib/Graphs/CFLGraph.cpp +2 -2
  788. package/lib/Graphs/CHG.cpp +2 -2
  789. package/lib/Graphs/ConsG.cpp +2 -2
  790. package/lib/Graphs/GraphWriter.cpp +1 -1
  791. package/lib/Graphs/ICFG.cpp +2 -2
  792. package/lib/Graphs/IRGraph.cpp +2 -2
  793. package/lib/Graphs/PTACallGraph.cpp +2 -2
  794. package/lib/Graphs/SVFG.cpp +1 -1
  795. package/lib/Graphs/VFG.cpp +2 -2
  796. package/lib/MTA/TCT.cpp +1 -1
  797. package/lib/SVF-LLVM/LLVMModule.cpp +0 -2
  798. package/lib/SVF-LLVM/LLVMUtil.cpp +40 -0
  799. package/lib/SVF-LLVM/SVFIRBuilder.cpp +1 -1
  800. package/lib/SVF-LLVM/SymbolTableBuilder.cpp +0 -34
  801. package/lib/SVFIR/SVFValue.cpp +0 -1
  802. package/package.json +1 -1
@@ -66,24 +66,23 @@ $(function() {
66
66
  <div class="title">PTACallGraph.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="PTACallGraph_8h.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">//===- PTACallGraph.h -- Call graph representation----------------------------//</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-2017&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"> * PTACallGraph.h</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: Nov 7, 2013</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">#ifndef PTACALLGRAPH_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define PTACALLGRAPH_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="GenericGraph_8h.html">Graphs/GenericGraph.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="SVFValue_8h.html">SVFIR/SVFValue.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFG_8h.html">Graphs/ICFG.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></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"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">class </span>PTACallGraphNode;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespaceSVF.html#acd909bf6784bb6e2178aa0f5d27da0ca"> 42</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * Call Graph edge representing a calling relation between two functions</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * Multiple calls from function A to B are merged into one call edge</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * Each call edge has a set of direct callsites and a set of indirect callsites</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericEdge.html">GenericEdge&lt;PTACallGraphNode&gt;</a> <a class="code" href="namespaceSVF.html#acd909bf6784bb6e2178aa0f5d27da0ca">GenericCallGraphEdgeTy</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html"> 51</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a> : <span class="keyword">public</span> GenericCallGraphEdgeTy</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const CallICFGNode*&gt;</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">CallInstSet</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7"> 56</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7">CEDGEK</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"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7a2d65840140263a0808f5b9d553a4bff5"> 58</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7aa968b68fb87a0135833105f4e6413c69">CallRetEdge</a>,<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">TDForkEdge</a>,<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7a2d65840140263a0808f5b9d553a4bff5">TDJoinEdge</a>,<a class="code" href="classSVF_1_1HareParForEdge.html">HareParForEdge</a></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"> 62</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a2f3e4b61225c4ca37b0f70e3edc61920"> 63</a></span>&#160; CallInstSet <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a2f3e4b61225c4ca37b0f70e3edc61920">directCalls</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a66491523e4ccfdf2ff57e10cfd6f3074"> 64</a></span>&#160; CallInstSet <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a66491523e4ccfdf2ff57e10cfd6f3074">indirectCalls</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999"> 65</a></span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999">csId</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#aa34123e6c62c3f152b579510c09984e6"> 68</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#aa34123e6c62c3f152b579510c09984e6">PTACallGraphEdge</a>(<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* s, <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* d, <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7">CEDGEK</a> kind, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> cs) :</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; GenericCallGraphEdgeTy(s, d, <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a4eaeb2765fdcc455116537dbe2119800">makeEdgeFlagWithInvokeID</a>(kind, cs)), csId(cs)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#af17fd69ee1061b7348af1b2739f145a9"> 73</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#af17fd69ee1061b7348af1b2739f145a9">~PTACallGraphEdge</a>()</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"> 75</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a4eaeb2765fdcc455116537dbe2119800"> 77</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a4eaeb2765fdcc455116537dbe2119800">makeEdgeFlagWithInvokeID</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> cs)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> (cs &lt;&lt; <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#af9ca9cfffbba3b68838d41be62c914ac"> 83</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#af9ca9cfffbba3b68838d41be62c914ac">getCallSiteID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999">csId</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a8c46ccaa41f6792ca4a31a56548a554a"> 87</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a8c46ccaa41f6792ca4a31a56548a554a">isDirectCallEdge</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> !directCalls.empty() &amp;&amp; indirectCalls.empty();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a74692d47f929dc2188eede497acb91b7"> 91</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a74692d47f929dc2188eede497acb91b7">isIndirectCallEdge</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> directCalls.empty() &amp;&amp; !indirectCalls.empty();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#af0e9f86be3cf263b868f80d374641fc9"> 95</a></span>&#160; <span class="keyword">inline</span> CallInstSet&amp; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#af0e9f86be3cf263b868f80d374641fc9">getDirectCalls</a>()</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a2f3e4b61225c4ca37b0f70e3edc61920">directCalls</a>;</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"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a76aa19edf03a4cacfa3e27a21abfcd07"> 99</a></span>&#160; <span class="keyword">inline</span> CallInstSet&amp; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a76aa19edf03a4cacfa3e27a21abfcd07">getIndirectCalls</a>()</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a66491523e4ccfdf2ff57e10cfd6f3074">indirectCalls</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a6310e7684d6b6ecd345f557eda899160"> 103</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallInstSet&amp; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a6310e7684d6b6ecd345f557eda899160">getDirectCalls</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a2f3e4b61225c4ca37b0f70e3edc61920">directCalls</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a51dbd8a7b9d0a4602215f71e3fdfee5f"> 107</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallInstSet&amp; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a51dbd8a7b9d0a4602215f71e3fdfee5f">getIndirectCalls</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a66491523e4ccfdf2ff57e10cfd6f3074">indirectCalls</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9ccc3f85568639abb8540eb61f6d3158">addDirectCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#ad9faf0a90691497984fb1d8709491a20">addInDirectCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5"> 122</a></span>&#160; <span class="keyword">inline</span> CallInstSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">directCallsBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> directCalls.begin();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970"> 126</a></span>&#160; <span class="keyword">inline</span> CallInstSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">directCallsEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> directCalls.end();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679"> 131</a></span>&#160; <span class="keyword">inline</span> CallInstSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">indirectCallsBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> indirectCalls.begin();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495"> 135</a></span>&#160; <span class="keyword">inline</span> CallInstSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">indirectCallsEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> indirectCalls.end();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#adb10c32eff8a794d9f2b1b4a47d85d21"> 143</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adb10c32eff8a794d9f2b1b4a47d85d21">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>*)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#afb092fc0502837b52ebcaa3c0dedb736"> 147</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#afb092fc0502837b52ebcaa3c0dedb736">classof</a>(<span class="keyword">const</span> GenericCallGraphEdgeTy *edge)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7aa968b68fb87a0135833105f4e6413c69">PTACallGraphEdge::CallRetEdge</a> ||</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">PTACallGraphEdge::TDForkEdge</a> ||</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7a2d65840140263a0808f5b9d553a4bff5">PTACallGraphEdge::TDJoinEdge</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a28737afd36ff7c2c6062883b20a572e5"> 157</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a>&amp; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a28737afd36ff7c2c6062883b20a572e5">operator&lt;&lt; </a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp;o, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a> &amp;edge)</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"> 159</span>&#160; o &lt;&lt; edge.<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a27979e812ced26f114369b46e1536b02">toString</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a27979e812ced26f114369b46e1536b02">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#aa96d6bc3ffd3a5537b871a4c87c65888"> 166</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GenericNode&lt;PTACallGraphNode,PTACallGraphEdge&gt;::GEdgeSetTy</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#aa96d6bc3ffd3a5537b871a4c87c65888">CallGraphEdgeSet</a>;</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;};</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;<span class="comment">/*</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> * Call Graph node representing a function</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a673ed8bf673a4c426a9d91aa8987e31c"> 173</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html">GenericNode&lt;PTACallGraphNode,PTACallGraphEdge&gt;</a> <a class="code" href="namespaceSVF.html#a673ed8bf673a4c426a9d91aa8987e31c">GenericCallGraphNodeTy</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html"> 174</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a> : <span class="keyword">public</span> GenericCallGraphNodeTy</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#a9cc3b4b46aaf45fd6d08a4995957646c"> 178</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#aa96d6bc3ffd3a5537b871a4c87c65888">PTACallGraphEdge::CallGraphEdgeSet</a> <a class="code" href="classSVF_1_1PTACallGraphNode.html#a9cc3b4b46aaf45fd6d08a4995957646c">CallGraphEdgeSet</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#a796994541eec90f2b540e24816120aff"> 179</a></span>&#160; <span class="keyword">typedef</span> PTACallGraphEdge::CallGraphEdgeSet::iterator <a class="code" href="classSVF_1_1PTACallGraphNode.html#a796994541eec90f2b540e24816120aff">iterator</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec"> 180</a></span>&#160; <span class="keyword">typedef</span> PTACallGraphEdge::CallGraphEdgeSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">const_iterator</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#a1453299fc45dc51d2c9842ff4de1b860"> 183</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1PTACallGraphNode.html#a1453299fc45dc51d2c9842ff4de1b860">fun</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#aed9cda1f8347b0078d8cd26691421876"> 187</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html#aed9cda1f8347b0078d8cd26691421876">PTACallGraphNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f) : GenericCallGraphNodeTy(i,0), fun(f)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09"> 193</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> fun;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">bool</span> isReachableFromProgEntry() <span class="keyword">const</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#a340e93b40e7cbf6f0d23df399a9b9fff"> 204</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a>&amp; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a28737afd36ff7c2c6062883b20a572e5">operator&lt;&lt; </a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp;o, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a> &amp;node)</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; o &lt;&lt; node.<a class="code" href="classSVF_1_1PTACallGraphNode.html#a57f173a28c2a153d37cb63d451e62973">toString</a>();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</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; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a27979e812ced26f114369b46e1536b02">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;};</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ab6fe492db79077a60254f8a03cfce180"> 217</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericGraph.html">GenericGraph&lt;PTACallGraphNode,PTACallGraphEdge&gt;</a> <a class="code" href="namespaceSVF.html#ab6fe492db79077a60254f8a03cfce180">GenericCallGraphTy</a>;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html"> 218</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a> : <span class="keyword">public</span> GenericCallGraphTy</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;{</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a1ad288117daa4031e195eb35d805cac6"> 222</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#aa96d6bc3ffd3a5537b871a4c87c65888">PTACallGraphEdge::CallGraphEdgeSet</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a1ad288117daa4031e195eb35d805cac6">CallGraphEdgeSet</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a049bc978a93f0db1fe91efb6feb22b14"> 223</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, PTACallGraphNode *&gt;</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a049bc978a93f0db1fe91efb6feb22b14">FunToCallGraphNodeMap</a>;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a09245c929079024095cfe0d6570b70e8"> 224</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallICFGNode*, CallGraphEdgeSet&gt;</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a09245c929079024095cfe0d6570b70e8">CallInstToCallGraphEdgesMap</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a178d9971028e8ce26ab8894c5c6b5784"> 225</a></span>&#160; <span class="keyword">typedef</span> std::pair&lt;const CallICFGNode*, const SVFFunction*&gt; <a class="code" href="classSVF_1_1PTACallGraph.html#a178d9971028e8ce26ab8894c5c6b5784">CallSitePair</a>;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#ae4e3e5f108bc1e47af8f58d2e43345d2"> 226</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;CallSitePair, CallSiteID&gt;</a> <a class="code" href="classSVF_1_1PTACallGraph.html#ae4e3e5f108bc1e47af8f58d2e43345d2">CallSiteToIdMap</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a5f626f5c9254b9e643d943e59068efba"> 227</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;CallSiteID, CallSitePair&gt;</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f626f5c9254b9e643d943e59068efba">IdToCallSiteMap</a>;</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a"> 228</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFFunction*&gt;</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">FunctionSet</a>;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a4948c9e7ff7f1c86d0f27c49e7208aa3"> 229</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const CallICFGNode*, FunctionSet&gt;</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a4948c9e7ff7f1c86d0f27c49e7208aa3">CallEdgeMap</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a2f28a1ce0c7d6a0bc2fc2627e90acf1c"> 230</a></span>&#160; <span class="keyword">typedef</span> CallGraphEdgeSet::iterator <a class="code" href="classSVF_1_1PTACallGraph.html#a2f28a1ce0c7d6a0bc2fc2627e90acf1c">CallGraphEdgeIter</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a9b7f6979a95244c620fdb791e053237b"> 231</a></span>&#160; <span class="keyword">typedef</span> CallGraphEdgeSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraph.html#a9b7f6979a95244c620fdb791e053237b">CallGraphEdgeConstIter</a>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1c"> 233</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1c">CGEK</a></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"><a class="line" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1ca4fe819bb1488afc48b04c1b7bef04bc2"> 235</a></span>&#160; NormCallGraph, ThdCallGraph</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; };</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a6a5927a58cc777a0745bd0ca635f25b1"> 239</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1c">CGEK</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a6a5927a58cc777a0745bd0ca635f25b1">kind</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#adcae44bd6788954e2e4e007bff03462c"> 242</a></span>&#160; CallEdgeMap <a class="code" href="classSVF_1_1PTACallGraph.html#adcae44bd6788954e2e4e007bff03462c">indirectCallMap</a>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a75ffe4f24d59ad42601b7550aa988187"> 245</a></span>&#160; <span class="keyword">static</span> CallSiteToIdMap <a class="code" href="classSVF_1_1PTACallGraph.html#a75ffe4f24d59ad42601b7550aa988187">csToIdMap</a>; </div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a5d6f63baad19589a9fd1e069631e18fa"> 246</a></span>&#160; <span class="keyword">static</span> IdToCallSiteMap <a class="code" href="classSVF_1_1PTACallGraph.html#a5d6f63baad19589a9fd1e069631e18fa">idToCSMap</a>; </div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a276338e88cc286f6a1808b1fcdf74d9a"> 247</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a276338e88cc286f6a1808b1fcdf74d9a">totalCallSiteNum</a>; </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a97986d6e6732c78b04cc053f0e9d1367"> 250</a></span>&#160; FunToCallGraphNodeMap <a class="code" href="classSVF_1_1PTACallGraph.html#a97986d6e6732c78b04cc053f0e9d1367">funToCallGraphNodeMap</a>; </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#ab29003352d8152b9d0fd37919ac212c5"> 251</a></span>&#160; CallInstToCallGraphEdgesMap <a class="code" href="classSVF_1_1PTACallGraph.html#ab29003352d8152b9d0fd37919ac212c5">callinstToCallGraphEdgesMap</a>; </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#af0e1a940677fb7f6c4aaef2f9c46c3e5"> 253</a></span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1PTACallGraph.html#af0e1a940677fb7f6c4aaef2f9c46c3e5">callGraphNodeNum</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#adf05313ea8bcc7973acebd3fbcd75c92"> 254</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PTACallGraph.html#adf05313ea8bcc7973acebd3fbcd75c92">numOfResolvedIndCallEdge</a>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordtype">void</span> destroy();</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;<span class="keyword">public</span>:</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>(<a class="code" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1c">CGEK</a> k = NormCallGraph);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordtype">void</span> addCallGraphNode(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a7f1ee630caa4ec5e7ad309e1f3865e2e"> 267</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a7f1ee630caa4ec5e7ad309e1f3865e2e">~PTACallGraph</a>()</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; destroy();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#ac6a294ec1c88862c8f7d54000f04e1f7"> 273</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1c">CGEK</a> <a class="code" href="classSVF_1_1PTACallGraph.html#ac6a294ec1c88862c8f7d54000f04e1f7">getKind</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> kind;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d"> 280</a></span>&#160; <span class="keyword">inline</span> CallEdgeMap&amp; <a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>()</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> indirectCallMap;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a71a63c53a093ea8e450fb53fd60c9424"> 284</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a71a63c53a093ea8e450fb53fd60c9424">hasIndCSCallees</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> (indirectCallMap.find(cs) != indirectCallMap.end());</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#ac106536778c829d6925d6ed2149aeb44"> 288</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> FunctionSet&amp; <a class="code" href="classSVF_1_1PTACallGraph.html#ac106536778c829d6925d6ed2149aeb44">getIndCSCallees</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; CallEdgeMap::const_iterator it = indirectCallMap.find(cs);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; assert(it!=indirectCallMap.end() &amp;&amp; <span class="stringliteral">&quot;not an indirect callsite!&quot;</span>);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#aab4214b734d00f5db59385535419ca58"> 295</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PTACallGraph.html#aab4214b734d00f5db59385535419ca58">getTotalCallSiteNumber</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> totalCallSiteNum;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a12c899013f8a9ddd895bfb5027a84d4c"> 300</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a12c899013f8a9ddd895bfb5027a84d4c">getNumOfResolvedIndCallEdge</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> numOfResolvedIndCallEdge;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a368306a46d84ccc6d07d94833aded629"> 305</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallInstToCallGraphEdgesMap&amp; <a class="code" href="classSVF_1_1PTACallGraph.html#a368306a46d84ccc6d07d94833aded629">getCallInstToCallGraphEdgesMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">return</span> callinstToCallGraphEdgesMap;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordtype">void</span> verifyCallGraph();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1"> 315</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* <a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> getGNode(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#ae3ee76be0e959a736c868dc7e0128077"> 319</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* <a class="code" href="classSVF_1_1PTACallGraph.html#ae3ee76be0e959a736c868dc7e0128077">getCallGraphNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; FunToCallGraphNodeMap::const_iterator it = funToCallGraphNodeMap.find(fun);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; assert(it!=funToCallGraphNodeMap.end() &amp;&amp; <span class="stringliteral">&quot;call graph node not found!!&quot;</span>);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a979359fc784e647c574de90c7af2cf40"> 330</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a979359fc784e647c574de90c7af2cf40">addCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; std::pair&lt;const CallICFGNode*, const SVFFunction*&gt; newCS(std::make_pair(cs, callee));</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; CallSiteToIdMap::const_iterator it = csToIdMap.find(newCS);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="comment">//assert(it == csToIdMap.end() &amp;&amp; &quot;cannot add a callsite twice&quot;);</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span>(it == csToIdMap.end())</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span> = totalCallSiteNum++;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; csToIdMap.insert(std::make_pair(newCS, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; idToCSMap.insert(std::make_pair(<span class="keywordtype">id</span>, newCS));</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">return</span> id;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</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"><a class="line" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b"> 344</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">getCallSiteID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee)<span class="keyword"> const</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; CallSitePair newCS(std::make_pair(cs, callee));</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; CallSiteToIdMap::const_iterator it = csToIdMap.find(newCS);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; assert(it != csToIdMap.end() &amp;&amp; <span class="stringliteral">&quot;callsite id not found! This maybe a partially resolved callgraph, please check the indCallEdge limit&quot;</span>);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#aa8dbda3e46533680173e55d396f36756"> 351</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTACallGraph.html#aa8dbda3e46533680173e55d396f36756">hasCallSiteID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee)<span class="keyword"> const</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; CallSitePair newCS(std::make_pair(cs, callee));</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; CallSiteToIdMap::const_iterator it = csToIdMap.find(newCS);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">return</span> it != csToIdMap.end();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a9155629ddc58f71c6a6f2aec978e4610"> 357</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallSitePair&amp; <a class="code" href="classSVF_1_1PTACallGraph.html#a9155629ddc58f71c6a6f2aec978e4610">getCallSitePair</a>(<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; IdToCallSiteMap::const_iterator it = idToCSMap.find(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; assert(it != idToCSMap.end() &amp;&amp; <span class="stringliteral">&quot;cannot find call site for this CallSiteID&quot;</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> (it-&gt;second);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154"> 363</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154">getCallSite</a>(<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> getCallSitePair(<span class="keywordtype">id</span>).first;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a42035e9669204ddd5d38583db21af3d7"> 367</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1PTACallGraph.html#a42035e9669204ddd5d38583db21af3d7">getCallerOfCallSite</a>(<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> getCallSite(<span class="keywordtype">id</span>)-&gt;getCaller();</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#aacd5f35171717cb4d758c17bef828a0f"> 371</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1PTACallGraph.html#aacd5f35171717cb4d758c17bef828a0f">getCalleeOfCallSite</a>(<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span> getCallSitePair(<span class="keywordtype">id</span>).second;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* hasGraphEdge(<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</a>,<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7">PTACallGraphEdge::CEDGEK</a> kind, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999">csId</a>) <span class="keyword">const</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* getGraphEdge(<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* src, <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* dst,<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7">PTACallGraphEdge::CEDGEK</a> kind, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec"> 382</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, FunctionSet&amp; callees)</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span>(hasCallGraphEdge(cs))</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; <span class="keywordflow">for</span> (CallGraphEdgeSet::const_iterator it = getCallEdgeBegin(cs), eit =</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; getCallEdgeEnd(cs); it != eit; ++it)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; callees.insert((*it)-&gt;getDstNode()-&gt;getFunction());</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</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;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> hasCallGraphEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> callinstToCallGraphEdgesMap.find(inst)!=callinstToCallGraphEdgesMap.end();</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"><a class="line" href="classSVF_1_1PTACallGraph.html#a4ed2fd37007de9c873d5e197a0b3bd4e"> 401</a></span>&#160; <span class="keyword">inline</span> CallGraphEdgeSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraph.html#a4ed2fd37007de9c873d5e197a0b3bd4e">getCallEdgeBegin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; CallInstToCallGraphEdgesMap::const_iterator it = callinstToCallGraphEdgesMap.find(inst);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; assert(it!=callinstToCallGraphEdgesMap.end()</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; &amp;&amp; <span class="stringliteral">&quot;call instruction does not have a valid callee&quot;</span>);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> it-&gt;second.begin();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a170a33ac22673dfd363c3e3b96987737"> 408</a></span>&#160; <span class="keyword">inline</span> CallGraphEdgeSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraph.html#a170a33ac22673dfd363c3e3b96987737">getCallEdgeEnd</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; CallInstToCallGraphEdgesMap::const_iterator it = callinstToCallGraphEdgesMap.find(inst);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; assert(it!=callinstToCallGraphEdgesMap.end()</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; &amp;&amp; <span class="stringliteral">&quot;call instruction does not have a valid callee&quot;</span>);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">return</span> it-&gt;second.end();</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> addEdge(<a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge)</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; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;addIncomingEdge(edge);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;addOutgoingEdge(edge);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordtype">void</span> addDirectCallGraphEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callerFun, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* calleeFun);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordtype">void</span> addIndirectCallGraphEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs,<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callerFun, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* calleeFun);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</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="keywordtype">void</span> getAllCallSitesInvokingCallee(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a>&amp; csSet);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordtype">void</span> getDirCallSitesInvokingCallee(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a>&amp; csSet);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordtype">void</span> getIndCallSitesInvokingCallee(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a>&amp; csSet);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordtype">bool</span> isReachableBetweenFunctions(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* srcFn, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* dstFn) <span class="keyword">const</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordtype">void</span> <a class="code" href="namespaceSVF.html#aae350f79ebcb9efd22ec9efa6678cd13">dump</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; filename);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordtype">void</span> view();</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;};</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacellvm.html">llvm</a></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="comment">/* !</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="comment"> * GraphTraits specializations for generic graph algorithms.</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="comment"> * Provide graph traits for traversing from a constraint node using standard graph traversals.</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.html"> 454</a></span>&#160;<span class="keyword">template</span>&lt;&gt; <span class="keyword">struct </span><a class="code" href="structllvm_1_1GraphTraits.html">GraphTraits</a>&lt;<a class="code" href="namespaceSVF.html">SVF</a>::PTACallGraphNode*&gt; : <span class="keyword">public</span> <a class="code" href="structllvm_1_1GraphTraits.html">GraphTraits</a>&lt;SVF::GenericNode&lt;SVF::PTACallGraphNode,SVF::PTACallGraphEdge&gt;* &gt;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;{</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;};</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.html"> 460</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structllvm_1_1GraphTraits.html">GraphTraits</a>&lt;<a class="code" href="structllvm_1_1Inverse.html">Inverse</a>&lt;SVF::PTACallGraphNode *&gt; &gt; : <span class="keyword">public</span> <a class="code" href="structllvm_1_1GraphTraits.html">GraphTraits</a>&lt;Inverse&lt;SVF::GenericNode&lt;SVF::PTACallGraphNode,SVF::PTACallGraphEdge&gt;* &gt; &gt;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;{</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;};</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html"> 464</a></span>&#160;<span class="keyword">template</span>&lt;&gt; <span class="keyword">struct </span><a class="code" href="structllvm_1_1GraphTraits.html">GraphTraits</a>&lt;SVF::PTACallGraph*&gt; : <span class="keyword">public</span> <a class="code" href="structllvm_1_1GraphTraits.html">GraphTraits</a>&lt;SVF::GenericGraph&lt;SVF::PTACallGraphNode,SVF::PTACallGraphEdge&gt;* &gt;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;{</div><div class="line"><a name="l00466"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html#a616c61ef97851d0737b81ae34f82d53a"> 466</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a> *<a class="code" href="structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html#a616c61ef97851d0737b81ae34f82d53a">NodeRef</a>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;};</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;} <span class="comment">// End namespace llvm</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* PTACALLGRAPH_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a711bd8ad385f8454fbfcd20f134efe1b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
69
+ <a href="PTACallGraph_8h.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">//===- PTACallGraph.h -- Call graph representation----------------------------//</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-2017&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"> * PTACallGraph.h</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: Nov 7, 2013</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">#ifndef PTACALLGRAPH_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define PTACALLGRAPH_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="GenericGraph_8h.html">Graphs/GenericGraph.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="SVFValue_8h.html">SVFIR/SVFValue.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFG_8h.html">Graphs/ICFG.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></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"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">class </span>PTACallGraphNode;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespaceSVF.html#acd909bf6784bb6e2178aa0f5d27da0ca"> 42</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * Call Graph edge representing a calling relation between two functions</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * Multiple calls from function A to B are merged into one call edge</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * Each call edge has a set of direct callsites and a set of indirect callsites</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericEdge.html">GenericEdge&lt;PTACallGraphNode&gt;</a> <a class="code" href="namespaceSVF.html#acd909bf6784bb6e2178aa0f5d27da0ca">GenericCallGraphEdgeTy</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html"> 51</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a> : <span class="keyword">public</span> GenericCallGraphEdgeTy</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const CallICFGNode*&gt;</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">CallInstSet</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7"> 56</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7">CEDGEK</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"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7a2d65840140263a0808f5b9d553a4bff5"> 58</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7aa968b68fb87a0135833105f4e6413c69">CallRetEdge</a>,<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">TDForkEdge</a>,<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7a2d65840140263a0808f5b9d553a4bff5">TDJoinEdge</a>,<a class="code" href="classSVF_1_1HareParForEdge.html">HareParForEdge</a></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"> 62</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a2f3e4b61225c4ca37b0f70e3edc61920"> 63</a></span>&#160; CallInstSet <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a2f3e4b61225c4ca37b0f70e3edc61920">directCalls</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a66491523e4ccfdf2ff57e10cfd6f3074"> 64</a></span>&#160; CallInstSet <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a66491523e4ccfdf2ff57e10cfd6f3074">indirectCalls</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999"> 65</a></span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999">csId</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#aa34123e6c62c3f152b579510c09984e6"> 68</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#aa34123e6c62c3f152b579510c09984e6">PTACallGraphEdge</a>(<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* s, <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* d, <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7">CEDGEK</a> kind, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> cs) :</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; GenericCallGraphEdgeTy(s, d, <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a4eaeb2765fdcc455116537dbe2119800">makeEdgeFlagWithInvokeID</a>(kind, cs)), csId(cs)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#af17fd69ee1061b7348af1b2739f145a9"> 73</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#af17fd69ee1061b7348af1b2739f145a9">~PTACallGraphEdge</a>()</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"> 75</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a4eaeb2765fdcc455116537dbe2119800"> 77</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a4eaeb2765fdcc455116537dbe2119800">makeEdgeFlagWithInvokeID</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> cs)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> (cs &lt;&lt; <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#af9ca9cfffbba3b68838d41be62c914ac"> 83</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#af9ca9cfffbba3b68838d41be62c914ac">getCallSiteID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999">csId</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a8c46ccaa41f6792ca4a31a56548a554a"> 87</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a8c46ccaa41f6792ca4a31a56548a554a">isDirectCallEdge</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> !directCalls.empty() &amp;&amp; indirectCalls.empty();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a74692d47f929dc2188eede497acb91b7"> 91</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a74692d47f929dc2188eede497acb91b7">isIndirectCallEdge</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> directCalls.empty() &amp;&amp; !indirectCalls.empty();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#af0e9f86be3cf263b868f80d374641fc9"> 95</a></span>&#160; <span class="keyword">inline</span> CallInstSet&amp; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#af0e9f86be3cf263b868f80d374641fc9">getDirectCalls</a>()</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a2f3e4b61225c4ca37b0f70e3edc61920">directCalls</a>;</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"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a76aa19edf03a4cacfa3e27a21abfcd07"> 99</a></span>&#160; <span class="keyword">inline</span> CallInstSet&amp; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a76aa19edf03a4cacfa3e27a21abfcd07">getIndirectCalls</a>()</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a66491523e4ccfdf2ff57e10cfd6f3074">indirectCalls</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a6310e7684d6b6ecd345f557eda899160"> 103</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallInstSet&amp; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a6310e7684d6b6ecd345f557eda899160">getDirectCalls</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a2f3e4b61225c4ca37b0f70e3edc61920">directCalls</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a51dbd8a7b9d0a4602215f71e3fdfee5f"> 107</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallInstSet&amp; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a51dbd8a7b9d0a4602215f71e3fdfee5f">getIndirectCalls</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a66491523e4ccfdf2ff57e10cfd6f3074">indirectCalls</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9ccc3f85568639abb8540eb61f6d3158">addDirectCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#ad9faf0a90691497984fb1d8709491a20">addInDirectCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5"> 122</a></span>&#160; <span class="keyword">inline</span> CallInstSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">directCallsBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> directCalls.begin();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970"> 126</a></span>&#160; <span class="keyword">inline</span> CallInstSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">directCallsEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> directCalls.end();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679"> 131</a></span>&#160; <span class="keyword">inline</span> CallInstSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">indirectCallsBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> indirectCalls.begin();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495"> 135</a></span>&#160; <span class="keyword">inline</span> CallInstSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">indirectCallsEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> indirectCalls.end();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#adb10c32eff8a794d9f2b1b4a47d85d21"> 143</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adb10c32eff8a794d9f2b1b4a47d85d21">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>*)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#afb092fc0502837b52ebcaa3c0dedb736"> 147</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#afb092fc0502837b52ebcaa3c0dedb736">classof</a>(<span class="keyword">const</span> GenericCallGraphEdgeTy *edge)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7aa968b68fb87a0135833105f4e6413c69">PTACallGraphEdge::CallRetEdge</a> ||</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">PTACallGraphEdge::TDForkEdge</a> ||</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7a2d65840140263a0808f5b9d553a4bff5">PTACallGraphEdge::TDJoinEdge</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#a28737afd36ff7c2c6062883b20a572e5"> 157</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a>&amp; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a28737afd36ff7c2c6062883b20a572e5">operator&lt;&lt; </a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp;o, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a> &amp;edge)</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"> 159</span>&#160; o &lt;&lt; edge.<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a27979e812ced26f114369b46e1536b02">toString</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a27979e812ced26f114369b46e1536b02">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphEdge.html#aa96d6bc3ffd3a5537b871a4c87c65888"> 166</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GenericNode&lt;PTACallGraphNode,PTACallGraphEdge&gt;::GEdgeSetTy</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#aa96d6bc3ffd3a5537b871a4c87c65888">CallGraphEdgeSet</a>;</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;};</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;<span class="comment">/*</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> * Call Graph node representing a function</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a673ed8bf673a4c426a9d91aa8987e31c"> 173</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html">GenericNode&lt;PTACallGraphNode,PTACallGraphEdge&gt;</a> <a class="code" href="namespaceSVF.html#a673ed8bf673a4c426a9d91aa8987e31c">GenericCallGraphNodeTy</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html"> 174</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a> : <span class="keyword">public</span> GenericCallGraphNodeTy</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#a9cc3b4b46aaf45fd6d08a4995957646c"> 178</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#aa96d6bc3ffd3a5537b871a4c87c65888">PTACallGraphEdge::CallGraphEdgeSet</a> <a class="code" href="classSVF_1_1PTACallGraphNode.html#a9cc3b4b46aaf45fd6d08a4995957646c">CallGraphEdgeSet</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#a796994541eec90f2b540e24816120aff"> 179</a></span>&#160; <span class="keyword">typedef</span> PTACallGraphEdge::CallGraphEdgeSet::iterator <a class="code" href="classSVF_1_1PTACallGraphNode.html#a796994541eec90f2b540e24816120aff">iterator</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec"> 180</a></span>&#160; <span class="keyword">typedef</span> PTACallGraphEdge::CallGraphEdgeSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">const_iterator</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#a1453299fc45dc51d2c9842ff4de1b860"> 183</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1PTACallGraphNode.html#a1453299fc45dc51d2c9842ff4de1b860">fun</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#aed9cda1f8347b0078d8cd26691421876"> 187</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html#aed9cda1f8347b0078d8cd26691421876">PTACallGraphNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f) : GenericCallGraphNodeTy(i,0), fun(f)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09"> 193</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> fun;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">bool</span> isReachableFromProgEntry() <span class="keyword">const</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraphNode.html#a340e93b40e7cbf6f0d23df399a9b9fff"> 204</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a>&amp; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a28737afd36ff7c2c6062883b20a572e5">operator&lt;&lt; </a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp;o, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a> &amp;node)</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; o &lt;&lt; node.<a class="code" href="classSVF_1_1PTACallGraphNode.html#a57f173a28c2a153d37cb63d451e62973">toString</a>();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</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; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a27979e812ced26f114369b46e1536b02">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;};</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ab6fe492db79077a60254f8a03cfce180"> 217</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericGraph.html">GenericGraph&lt;PTACallGraphNode,PTACallGraphEdge&gt;</a> <a class="code" href="namespaceSVF.html#ab6fe492db79077a60254f8a03cfce180">GenericCallGraphTy</a>;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html"> 218</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a> : <span class="keyword">public</span> GenericCallGraphTy</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;{</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a1ad288117daa4031e195eb35d805cac6"> 222</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#aa96d6bc3ffd3a5537b871a4c87c65888">PTACallGraphEdge::CallGraphEdgeSet</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a1ad288117daa4031e195eb35d805cac6">CallGraphEdgeSet</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a049bc978a93f0db1fe91efb6feb22b14"> 223</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, PTACallGraphNode *&gt;</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a049bc978a93f0db1fe91efb6feb22b14">FunToCallGraphNodeMap</a>;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a09245c929079024095cfe0d6570b70e8"> 224</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallICFGNode*, CallGraphEdgeSet&gt;</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a09245c929079024095cfe0d6570b70e8">CallInstToCallGraphEdgesMap</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a178d9971028e8ce26ab8894c5c6b5784"> 225</a></span>&#160; <span class="keyword">typedef</span> std::pair&lt;const CallICFGNode*, const SVFFunction*&gt; <a class="code" href="classSVF_1_1PTACallGraph.html#a178d9971028e8ce26ab8894c5c6b5784">CallSitePair</a>;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#ae4e3e5f108bc1e47af8f58d2e43345d2"> 226</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;CallSitePair, CallSiteID&gt;</a> <a class="code" href="classSVF_1_1PTACallGraph.html#ae4e3e5f108bc1e47af8f58d2e43345d2">CallSiteToIdMap</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a5f626f5c9254b9e643d943e59068efba"> 227</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;CallSiteID, CallSitePair&gt;</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f626f5c9254b9e643d943e59068efba">IdToCallSiteMap</a>;</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a"> 228</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFFunction*&gt;</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">FunctionSet</a>;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a4948c9e7ff7f1c86d0f27c49e7208aa3"> 229</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const CallICFGNode*, FunctionSet&gt;</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a4948c9e7ff7f1c86d0f27c49e7208aa3">CallEdgeMap</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a2f28a1ce0c7d6a0bc2fc2627e90acf1c"> 230</a></span>&#160; <span class="keyword">typedef</span> CallGraphEdgeSet::iterator <a class="code" href="classSVF_1_1PTACallGraph.html#a2f28a1ce0c7d6a0bc2fc2627e90acf1c">CallGraphEdgeIter</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a9b7f6979a95244c620fdb791e053237b"> 231</a></span>&#160; <span class="keyword">typedef</span> CallGraphEdgeSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraph.html#a9b7f6979a95244c620fdb791e053237b">CallGraphEdgeConstIter</a>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1c"> 233</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1c">CGEK</a></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"><a class="line" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1ca4fe819bb1488afc48b04c1b7bef04bc2"> 235</a></span>&#160; NormCallGraph, ThdCallGraph</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; };</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a6a5927a58cc777a0745bd0ca635f25b1"> 239</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1c">CGEK</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a6a5927a58cc777a0745bd0ca635f25b1">kind</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#adcae44bd6788954e2e4e007bff03462c"> 242</a></span>&#160; CallEdgeMap <a class="code" href="classSVF_1_1PTACallGraph.html#adcae44bd6788954e2e4e007bff03462c">indirectCallMap</a>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a75ffe4f24d59ad42601b7550aa988187"> 245</a></span>&#160; <span class="keyword">static</span> CallSiteToIdMap <a class="code" href="classSVF_1_1PTACallGraph.html#a75ffe4f24d59ad42601b7550aa988187">csToIdMap</a>; </div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a5d6f63baad19589a9fd1e069631e18fa"> 246</a></span>&#160; <span class="keyword">static</span> IdToCallSiteMap <a class="code" href="classSVF_1_1PTACallGraph.html#a5d6f63baad19589a9fd1e069631e18fa">idToCSMap</a>; </div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a276338e88cc286f6a1808b1fcdf74d9a"> 247</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a276338e88cc286f6a1808b1fcdf74d9a">totalCallSiteNum</a>; </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a97986d6e6732c78b04cc053f0e9d1367"> 250</a></span>&#160; FunToCallGraphNodeMap <a class="code" href="classSVF_1_1PTACallGraph.html#a97986d6e6732c78b04cc053f0e9d1367">funToCallGraphNodeMap</a>; </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#ab29003352d8152b9d0fd37919ac212c5"> 251</a></span>&#160; CallInstToCallGraphEdgesMap <a class="code" href="classSVF_1_1PTACallGraph.html#ab29003352d8152b9d0fd37919ac212c5">callinstToCallGraphEdgesMap</a>; </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#af0e1a940677fb7f6c4aaef2f9c46c3e5"> 253</a></span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1PTACallGraph.html#af0e1a940677fb7f6c4aaef2f9c46c3e5">callGraphNodeNum</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#adf05313ea8bcc7973acebd3fbcd75c92"> 254</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PTACallGraph.html#adf05313ea8bcc7973acebd3fbcd75c92">numOfResolvedIndCallEdge</a>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordtype">void</span> destroy();</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;<span class="keyword">public</span>:</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>(<a class="code" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1c">CGEK</a> k = NormCallGraph);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordtype">void</span> addCallGraphNode(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a7f1ee630caa4ec5e7ad309e1f3865e2e"> 267</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a7f1ee630caa4ec5e7ad309e1f3865e2e">~PTACallGraph</a>()</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; destroy();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#ac6a294ec1c88862c8f7d54000f04e1f7"> 273</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1c">CGEK</a> <a class="code" href="classSVF_1_1PTACallGraph.html#ac6a294ec1c88862c8f7d54000f04e1f7">getKind</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> kind;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d"> 280</a></span>&#160; <span class="keyword">inline</span> CallEdgeMap&amp; <a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>()</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> indirectCallMap;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a71a63c53a093ea8e450fb53fd60c9424"> 284</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a71a63c53a093ea8e450fb53fd60c9424">hasIndCSCallees</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> (indirectCallMap.find(cs) != indirectCallMap.end());</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#ac106536778c829d6925d6ed2149aeb44"> 288</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> FunctionSet&amp; <a class="code" href="classSVF_1_1PTACallGraph.html#ac106536778c829d6925d6ed2149aeb44">getIndCSCallees</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; CallEdgeMap::const_iterator it = indirectCallMap.find(cs);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; assert(it!=indirectCallMap.end() &amp;&amp; <span class="stringliteral">&quot;not an indirect callsite!&quot;</span>);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#aab4214b734d00f5db59385535419ca58"> 295</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PTACallGraph.html#aab4214b734d00f5db59385535419ca58">getTotalCallSiteNumber</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> totalCallSiteNum;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a12c899013f8a9ddd895bfb5027a84d4c"> 300</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a12c899013f8a9ddd895bfb5027a84d4c">getNumOfResolvedIndCallEdge</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> numOfResolvedIndCallEdge;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a368306a46d84ccc6d07d94833aded629"> 305</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallInstToCallGraphEdgesMap&amp; <a class="code" href="classSVF_1_1PTACallGraph.html#a368306a46d84ccc6d07d94833aded629">getCallInstToCallGraphEdgesMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">return</span> callinstToCallGraphEdgesMap;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordtype">void</span> verifyCallGraph();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1"> 315</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* <a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> getGNode(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#ae3ee76be0e959a736c868dc7e0128077"> 319</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* <a class="code" href="classSVF_1_1PTACallGraph.html#ae3ee76be0e959a736c868dc7e0128077">getCallGraphNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; FunToCallGraphNodeMap::const_iterator it = funToCallGraphNodeMap.find(fun);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; assert(it!=funToCallGraphNodeMap.end() &amp;&amp; <span class="stringliteral">&quot;call graph node not found!!&quot;</span>);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a979359fc784e647c574de90c7af2cf40"> 330</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a979359fc784e647c574de90c7af2cf40">addCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; std::pair&lt;const CallICFGNode*, const SVFFunction*&gt; newCS(std::make_pair(cs, callee));</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; CallSiteToIdMap::const_iterator it = csToIdMap.find(newCS);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="comment">//assert(it == csToIdMap.end() &amp;&amp; &quot;cannot add a callsite twice&quot;);</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span>(it == csToIdMap.end())</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span> = totalCallSiteNum++;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; csToIdMap.insert(std::make_pair(newCS, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; idToCSMap.insert(std::make_pair(<span class="keywordtype">id</span>, newCS));</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">return</span> id;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</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"><a class="line" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b"> 344</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">getCallSiteID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee)<span class="keyword"> const</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; CallSitePair newCS(std::make_pair(cs, callee));</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; CallSiteToIdMap::const_iterator it = csToIdMap.find(newCS);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; assert(it != csToIdMap.end() &amp;&amp; <span class="stringliteral">&quot;callsite id not found! This maybe a partially resolved callgraph, please check the indCallEdge limit&quot;</span>);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#aa8dbda3e46533680173e55d396f36756"> 351</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTACallGraph.html#aa8dbda3e46533680173e55d396f36756">hasCallSiteID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee)<span class="keyword"> const</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; CallSitePair newCS(std::make_pair(cs, callee));</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; CallSiteToIdMap::const_iterator it = csToIdMap.find(newCS);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">return</span> it != csToIdMap.end();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a9155629ddc58f71c6a6f2aec978e4610"> 357</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallSitePair&amp; <a class="code" href="classSVF_1_1PTACallGraph.html#a9155629ddc58f71c6a6f2aec978e4610">getCallSitePair</a>(<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; IdToCallSiteMap::const_iterator it = idToCSMap.find(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; assert(it != idToCSMap.end() &amp;&amp; <span class="stringliteral">&quot;cannot find call site for this CallSiteID&quot;</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> (it-&gt;second);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154"> 363</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154">getCallSite</a>(<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> getCallSitePair(<span class="keywordtype">id</span>).first;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a42035e9669204ddd5d38583db21af3d7"> 367</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1PTACallGraph.html#a42035e9669204ddd5d38583db21af3d7">getCallerOfCallSite</a>(<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> getCallSite(<span class="keywordtype">id</span>)-&gt;getCaller();</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#aacd5f35171717cb4d758c17bef828a0f"> 371</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1PTACallGraph.html#aacd5f35171717cb4d758c17bef828a0f">getCalleeOfCallSite</a>(<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span> getCallSitePair(<span class="keywordtype">id</span>).second;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* hasGraphEdge(<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</a>,<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7">PTACallGraphEdge::CEDGEK</a> kind, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999">csId</a>) <span class="keyword">const</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* getGraphEdge(<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* src, <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* dst,<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7">PTACallGraphEdge::CEDGEK</a> kind, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec"> 382</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, FunctionSet&amp; callees)</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span>(hasCallGraphEdge(cs))</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; <span class="keywordflow">for</span> (CallGraphEdgeSet::const_iterator it = getCallEdgeBegin(cs), eit =</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; getCallEdgeEnd(cs); it != eit; ++it)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; callees.insert((*it)-&gt;getDstNode()-&gt;getFunction());</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</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;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> hasCallGraphEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> callinstToCallGraphEdgesMap.find(inst)!=callinstToCallGraphEdgesMap.end();</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"><a class="line" href="classSVF_1_1PTACallGraph.html#a4ed2fd37007de9c873d5e197a0b3bd4e"> 401</a></span>&#160; <span class="keyword">inline</span> CallGraphEdgeSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraph.html#a4ed2fd37007de9c873d5e197a0b3bd4e">getCallEdgeBegin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; CallInstToCallGraphEdgesMap::const_iterator it = callinstToCallGraphEdgesMap.find(inst);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; assert(it!=callinstToCallGraphEdgesMap.end()</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; &amp;&amp; <span class="stringliteral">&quot;call instruction does not have a valid callee&quot;</span>);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> it-&gt;second.begin();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classSVF_1_1PTACallGraph.html#a170a33ac22673dfd363c3e3b96987737"> 408</a></span>&#160; <span class="keyword">inline</span> CallGraphEdgeSet::const_iterator <a class="code" href="classSVF_1_1PTACallGraph.html#a170a33ac22673dfd363c3e3b96987737">getCallEdgeEnd</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; CallInstToCallGraphEdgesMap::const_iterator it = callinstToCallGraphEdgesMap.find(inst);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; assert(it!=callinstToCallGraphEdgesMap.end()</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; &amp;&amp; <span class="stringliteral">&quot;call instruction does not have a valid callee&quot;</span>);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">return</span> it-&gt;second.end();</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> addEdge(<a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge)</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; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;addIncomingEdge(edge);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;addOutgoingEdge(edge);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordtype">void</span> addDirectCallGraphEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callerFun, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* calleeFun);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordtype">void</span> addIndirectCallGraphEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs,<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callerFun, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* calleeFun);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</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="keywordtype">void</span> getAllCallSitesInvokingCallee(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a>&amp; csSet);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordtype">void</span> getDirCallSitesInvokingCallee(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a>&amp; csSet);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordtype">void</span> getIndCallSitesInvokingCallee(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a>&amp; csSet);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordtype">bool</span> isReachableBetweenFunctions(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* srcFn, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* dstFn) <span class="keyword">const</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordtype">void</span> <a class="code" href="namespaceSVF.html#aae350f79ebcb9efd22ec9efa6678cd13">dump</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; filename);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordtype">void</span> view();</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;};</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="comment">/* !</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="comment"> * GenericGraphTraits specializations for generic graph algorithms.</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="comment"> * Provide graph traits for traversing from a constraint node using standard graph traversals.</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.html"> 454</a></span>&#160;<span class="keyword">template</span>&lt;&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1GenericGraphTraits.html">GenericGraphTraits</a>&lt;<a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>*&gt; : <span class="keyword">public</span> <a class="code" href="structSVF_1_1GenericGraphTraits.html">GenericGraphTraits</a>&lt;SVF::GenericNode&lt;SVF::PTACallGraphNode,SVF::PTACallGraphEdge&gt;* &gt;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;{</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;};</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.html"> 460</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1GenericGraphTraits.html">GenericGraphTraits</a>&lt;<a class="code" href="structSVF_1_1Inverse.html">Inverse</a>&lt;SVF::<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a> *&gt; &gt; : <span class="keyword">public</span> <a class="code" href="structSVF_1_1GenericGraphTraits.html">GenericGraphTraits</a>&lt;Inverse&lt;SVF::GenericNode&lt;SVF::PTACallGraphNode,SVF::PTACallGraphEdge&gt;* &gt; &gt;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;{</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;};</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html"> 464</a></span>&#160;<span class="keyword">template</span>&lt;&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1GenericGraphTraits.html">GenericGraphTraits</a>&lt;SVF::<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>*&gt; : <span class="keyword">public</span> <a class="code" href="structSVF_1_1GenericGraphTraits.html">GenericGraphTraits</a>&lt;SVF::GenericGraph&lt;SVF::PTACallGraphNode,SVF::PTACallGraphEdge&gt;* &gt;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;{</div><div class="line"><a name="l00466"></a><span class="lineno"><a class="line" href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html#a4226541df4a405048579a94ec0573296"> 466</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a> *<a class="code" href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html#a4226541df4a405048579a94ec0573296">NodeRef</a>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;};</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;} <span class="comment">// End namespace llvm</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* PTACALLGRAPH_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a711bd8ad385f8454fbfcd20f134efe1b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a16e0017ad3a2d36d7efbc4383e394154"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154">SVF::PTACallGraph::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite(CallSiteID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00363">PTACallGraph.h:363</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a1453299fc45dc51d2c9842ff4de1b860"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a1453299fc45dc51d2c9842ff4de1b860">SVF::PTACallGraphNode::fun</a></div><div class="ttdeci">const SVFFunction * fun</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00183">PTACallGraph.h:183</a></div></div>
72
- <div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00082">GenericGraph.h:82</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00083">GenericGraph.h:83</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_ad9faf0a90691497984fb1d8709491a20"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#ad9faf0a90691497984fb1d8709491a20">SVF::PTACallGraphEdge::addInDirectCallSite</a></div><div class="ttdeci">void addInDirectCallSite(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00052">PTACallGraph.cpp:52</a></div></div>
74
- <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>
75
74
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
76
- <div class="ttc" id="structllvm_1_1GraphTraits_html"><div class="ttname"><a href="structllvm_1_1GraphTraits.html">llvm::GraphTraits</a></div><div class="ttdef"><b>Definition:</b> <a href="GraphTraits_8h_source.html#l00036">GraphTraits.h:36</a></div></div>
77
75
  <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>
78
76
  <div class="ttc" id="classSVF_1_1HareParForEdge_html"><div class="ttname"><a href="classSVF_1_1HareParForEdge.html">SVF::HareParForEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00127">ThreadCallGraph.h:127</a></div></div>
79
77
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_af9ca9cfffbba3b68838d41be62c914ac"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#af9ca9cfffbba3b68838d41be62c914ac">SVF::PTACallGraphEdge::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID() const</div><div class="ttdoc">Get direct and indirect calls. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00083">PTACallGraph.h:83</a></div></div>
80
78
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_aa96d6bc3ffd3a5537b871a4c87c65888"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#aa96d6bc3ffd3a5537b871a4c87c65888">SVF::PTACallGraphEdge::CallGraphEdgeSet</a></div><div class="ttdeci">GenericNode&lt; PTACallGraphNode, PTACallGraphEdge &gt;::GEdgeSetTy CallGraphEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00166">PTACallGraph.h:166</a></div></div>
79
+ <div class="ttc" id="structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4_html_a4226541df4a405048579a94ec0573296"><div class="ttname"><a href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html#a4226541df4a405048579a94ec0573296">SVF::GenericGraphTraits&lt; SVF::PTACallGraph * &gt;::NodeRef</a></div><div class="ttdeci">SVF::PTACallGraphNode * NodeRef</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00466">PTACallGraph.h:466</a></div></div>
81
80
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5d6f63baad19589a9fd1e069631e18fa"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5d6f63baad19589a9fd1e069631e18fa">SVF::PTACallGraph::idToCSMap</a></div><div class="ttdeci">static IdToCallSiteMap idToCSMap</div><div class="ttdoc">Map a callsite ID to a pair of call instruction and callee. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00246">PTACallGraph.h:246</a></div></div>
82
81
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a12c899013f8a9ddd895bfb5027a84d4c"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a12c899013f8a9ddd895bfb5027a84d4c">SVF::PTACallGraph::getNumOfResolvedIndCallEdge</a></div><div class="ttdeci">u32_t getNumOfResolvedIndCallEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00300">PTACallGraph.h:300</a></div></div>
83
82
  <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>
84
83
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a2f3e4b61225c4ca37b0f70e3edc61920"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a2f3e4b61225c4ca37b0f70e3edc61920">SVF::PTACallGraphEdge::directCalls</a></div><div class="ttdeci">CallInstSet directCalls</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00063">PTACallGraph.h:63</a></div></div>
85
84
  <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>
86
- <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>
85
+ <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>
87
86
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_ae3ee76be0e959a736c868dc7e0128077"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#ae3ee76be0e959a736c868dc7e0128077">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(const SVFFunction *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00319">PTACallGraph.h:319</a></div></div>
88
87
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a8c46ccaa41f6792ca4a31a56548a554a"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a8c46ccaa41f6792ca4a31a56548a554a">SVF::PTACallGraphEdge::isDirectCallEdge</a></div><div class="ttdeci">bool isDirectCallEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00087">PTACallGraph.h:87</a></div></div>
89
88
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a27979e812ced26f114369b46e1536b02"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a27979e812ced26f114369b46e1536b02">SVF::PTACallGraphEdge::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00059">PTACallGraph.cpp:59</a></div></div>
@@ -100,22 +99,22 @@ $(function() {
100
99
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_aacd5f35171717cb4d758c17bef828a0f"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aacd5f35171717cb4d758c17bef828a0f">SVF::PTACallGraph::getCalleeOfCallSite</a></div><div class="ttdeci">const SVFFunction * getCalleeOfCallSite(CallSiteID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00371">PTACallGraph.h:371</a></div></div>
101
100
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a494bc8bacca5ca8d266286f3fb303495"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">SVF::PTACallGraphEdge::indirectCallsEnd</a></div><div class="ttdeci">CallInstSet::const_iterator indirectCallsEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00135">PTACallGraph.h:135</a></div></div>
102
101
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_adbedb15ac0f9395c5264f087a63bad3b"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">SVF::PTACallGraphEdge::CallInstSet</a></div><div class="ttdeci">Set&lt; const CallICFGNode * &gt; CallInstSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00055">PTACallGraph.h:55</a></div></div>
103
- <div class="ttc" id="classSVF_1_1GenericEdge_html"><div class="ttname"><a href="classSVF_1_1GenericEdge.html">SVF::GenericEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00043">GenericGraph.h:43</a></div></div>
102
+ <div class="ttc" id="classSVF_1_1GenericEdge_html"><div class="ttname"><a href="classSVF_1_1GenericEdge.html">SVF::GenericEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00044">GenericGraph.h:44</a></div></div>
104
103
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a28737afd36ff7c2c6062883b20a572e5"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a28737afd36ff7c2c6062883b20a572e5">SVF::PTACallGraphEdge::operator&lt;&lt;</a></div><div class="ttdeci">friend OutStream &amp; operator&lt;&lt;(OutStream &amp;o, const PTACallGraphEdge &amp;edge)</div><div class="ttdoc">Overloading operator &lt;&lt; for dumping ICFG node ID. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00157">PTACallGraph.h:157</a></div></div>
105
- <div class="ttc" id="structllvm_1_1Inverse_html"><div class="ttname"><a href="structllvm_1_1Inverse.html">llvm::Inverse</a></div><div class="ttdef"><b>Definition:</b> <a href="GraphTraits_8h_source.html#l00097">GraphTraits.h:97</a></div></div>
106
104
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_ab29003352d8152b9d0fd37919ac212c5"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#ab29003352d8152b9d0fd37919ac212c5">SVF::PTACallGraph::callinstToCallGraphEdgesMap</a></div><div class="ttdeci">CallInstToCallGraphEdgesMap callinstToCallGraphEdgesMap</div><div class="ttdoc">Map a call instruction to its corresponding call edges. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00251">PTACallGraph.h:251</a></div></div>
107
105
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a9738544725458bb022b8d5f2dbd281f7aa968b68fb87a0135833105f4e6413c69"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7aa968b68fb87a0135833105f4e6413c69">SVF::PTACallGraphEdge::CallRetEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00058">PTACallGraph.h:58</a></div></div>
108
106
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5b1fe2b2314db947cd5e709b7285fe1c"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1c">SVF::PTACallGraph::CGEK</a></div><div class="ttdeci">CGEK</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00233">PTACallGraph.h:233</a></div></div>
109
- <div class="ttc" id="classSVF_1_1GenericNode_html_a03c6da4a73c47f84f5c5b47252bc339a"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">SVF::GenericNode::GEdgeSetTy</a></div><div class="ttdeci">OrderedSet&lt; EdgeType *, typename EdgeType::equalGEdge &gt; GEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00141">GenericGraph.h:141</a></div></div>
107
+ <div class="ttc" id="structSVF_1_1Inverse_html"><div class="ttname"><a href="structSVF_1_1Inverse.html">SVF::Inverse</a></div><div class="ttdef"><b>Definition:</b> <a href="GraphTraits_8h_source.html#l00097">GraphTraits.h:97</a></div></div>
108
+ <div class="ttc" id="classSVF_1_1GenericNode_html_a03c6da4a73c47f84f5c5b47252bc339a"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">SVF::GenericNode::GEdgeSetTy</a></div><div class="ttdeci">OrderedSet&lt; EdgeType *, typename EdgeType::equalGEdge &gt; GEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00142">GenericGraph.h:142</a></div></div>
110
109
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_af0e9f86be3cf263b868f80d374641fc9"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#af0e9f86be3cf263b868f80d374641fc9">SVF::PTACallGraphEdge::getDirectCalls</a></div><div class="ttdeci">CallInstSet &amp; getDirectCalls()</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00095">PTACallGraph.h:95</a></div></div>
111
110
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_af17fd69ee1061b7348af1b2739f145a9"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#af17fd69ee1061b7348af1b2739f145a9">SVF::PTACallGraphEdge::~PTACallGraphEdge</a></div><div class="ttdeci">virtual ~PTACallGraphEdge()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00073">PTACallGraph.h:73</a></div></div>
112
- <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00094">GenericGraph.h:94</a></div></div>
111
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00095">GenericGraph.h:95</a></div></div>
113
112
  <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>
114
113
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a75ffe4f24d59ad42601b7550aa988187"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a75ffe4f24d59ad42601b7550aa988187">SVF::PTACallGraph::csToIdMap</a></div><div class="ttdeci">static CallSiteToIdMap csToIdMap</div><div class="ttdoc">Call site information. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00245">PTACallGraph.h:245</a></div></div>
115
114
  <div class="ttc" id="GenericGraph_8h_html"><div class="ttname"><a href="GenericGraph_8h.html">GenericGraph.h</a></div></div>
116
115
  <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>
117
116
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_ac6a294ec1c88862c8f7d54000f04e1f7"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#ac6a294ec1c88862c8f7d54000f04e1f7">SVF::PTACallGraph::getKind</a></div><div class="ttdeci">CGEK getKind() const</div><div class="ttdoc">Return type of this callgraph. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00273">PTACallGraph.h:273</a></div></div>
118
- <div class="ttc" id="classSVF_1_1GenericEdge_html_aab8892b73370c32b48621cd1d0cce614"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">SVF::GenericEdge::GEdgeFlag</a></div><div class="ttdeci">u64_t GEdgeFlag</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00053">GenericGraph.h:53</a></div></div>
117
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_aab8892b73370c32b48621cd1d0cce614"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">SVF::GenericEdge::GEdgeFlag</a></div><div class="ttdeci">u64_t GEdgeFlag</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00054">GenericGraph.h:54</a></div></div>
119
118
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a4948c9e7ff7f1c86d0f27c49e7208aa3"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a4948c9e7ff7f1c86d0f27c49e7208aa3">SVF::PTACallGraph::CallEdgeMap</a></div><div class="ttdeci">OrderedMap&lt; const CallICFGNode *, FunctionSet &gt; CallEdgeMap</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00229">PTACallGraph.h:229</a></div></div>
120
119
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a09245c929079024095cfe0d6570b70e8"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a09245c929079024095cfe0d6570b70e8">SVF::PTACallGraph::CallInstToCallGraphEdgesMap</a></div><div class="ttdeci">Map&lt; const CallICFGNode *, CallGraphEdgeSet &gt; CallInstToCallGraphEdgesMap</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00224">PTACallGraph.h:224</a></div></div>
121
120
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html">SVF::PTACallGraphEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00051">PTACallGraph.h:51</a></div></div>
@@ -130,15 +129,14 @@ $(function() {
130
129
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_adcae44bd6788954e2e4e007bff03462c"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#adcae44bd6788954e2e4e007bff03462c">SVF::PTACallGraph::indirectCallMap</a></div><div class="ttdeci">CallEdgeMap indirectCallMap</div><div class="ttdoc">Indirect call map. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00242">PTACallGraph.h:242</a></div></div>
131
130
  <div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a959445c97605953fbdebbbd999437a09"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">SVF::PTACallGraphNode::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdoc">Get function of this call node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00193">PTACallGraph.h:193</a></div></div>
132
131
  <div class="ttc" id="namespaceSVF_html_acd909bf6784bb6e2178aa0f5d27da0ca"><div class="ttname"><a href="namespaceSVF.html#acd909bf6784bb6e2178aa0f5d27da0ca">SVF::GenericCallGraphEdgeTy</a></div><div class="ttdeci">GenericEdge&lt; PTACallGraphNode &gt; GenericCallGraphEdgeTy</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00042">PTACallGraph.h:42</a></div></div>
133
- <div class="ttc" id="classSVF_1_1GenericEdge_html_aa41cb7482bdab1ba328f4b94f30f3ee4"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">SVF::GenericEdge::dst</a></div><div class="ttdeci">NodeTy * dst</div><div class="ttdoc">destination node </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00057">GenericGraph.h:57</a></div></div>
132
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_aa41cb7482bdab1ba328f4b94f30f3ee4"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">SVF::GenericEdge::dst</a></div><div class="ttdeci">NodeTy * dst</div><div class="ttdoc">destination node </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00058">GenericGraph.h:58</a></div></div>
134
133
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_aa8dbda3e46533680173e55d396f36756"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aa8dbda3e46533680173e55d396f36756">SVF::PTACallGraph::hasCallSiteID</a></div><div class="ttdeci">bool hasCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00351">PTACallGraph.h:351</a></div></div>
135
134
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a7488c5125d55e56ec427ef0d8ee88999"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999">SVF::PTACallGraphEdge::csId</a></div><div class="ttdeci">CallSiteID csId</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00065">PTACallGraph.h:65</a></div></div>
136
135
  <div class="ttc" id="ICFG_8h_html"><div class="ttname"><a href="ICFG_8h.html">ICFG.h</a></div></div>
137
- <div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00090">GenericGraph.h:90</a></div></div>
138
- <div class="ttc" id="structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4_html_a616c61ef97851d0737b81ae34f82d53a"><div class="ttname"><a href="structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html#a616c61ef97851d0737b81ae34f82d53a">llvm::GraphTraits&lt; SVF::PTACallGraph * &gt;::NodeRef</a></div><div class="ttdeci">SVF::PTACallGraphNode * NodeRef</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00466">PTACallGraph.h:466</a></div></div>
136
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00091">GenericGraph.h:91</a></div></div>
139
137
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f626f5c9254b9e643d943e59068efba"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f626f5c9254b9e643d943e59068efba">SVF::PTACallGraph::IdToCallSiteMap</a></div><div class="ttdeci">Map&lt; CallSiteID, CallSitePair &gt; IdToCallSiteMap</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00227">PTACallGraph.h:227</a></div></div>
140
138
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a66491523e4ccfdf2ff57e10cfd6f3074"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a66491523e4ccfdf2ff57e10cfd6f3074">SVF::PTACallGraphEdge::indirectCalls</a></div><div class="ttdeci">CallInstSet indirectCalls</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00064">PTACallGraph.h:64</a></div></div>
141
- <div class="ttc" id="classSVF_1_1GenericNode_html"><div class="ttname"><a href="classSVF_1_1GenericNode.html">SVF::GenericNode</a></div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00133">GenericGraph.h:133</a></div></div>
139
+ <div class="ttc" id="classSVF_1_1GenericNode_html"><div class="ttname"><a href="classSVF_1_1GenericNode.html">SVF::GenericNode</a></div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00134">GenericGraph.h:134</a></div></div>
142
140
  <div class="ttc" id="namespaceSVF_html_ab6fe492db79077a60254f8a03cfce180"><div class="ttname"><a href="namespaceSVF.html#ab6fe492db79077a60254f8a03cfce180">SVF::GenericCallGraphTy</a></div><div class="ttdeci">GenericGraph&lt; PTACallGraphNode, PTACallGraphEdge &gt; GenericCallGraphTy</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00217">PTACallGraph.h:217</a></div></div>
143
141
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a170a33ac22673dfd363c3e3b96987737"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a170a33ac22673dfd363c3e3b96987737">SVF::PTACallGraph::getCallEdgeEnd</a></div><div class="ttdeci">CallGraphEdgeSet::const_iterator getCallEdgeEnd(const CallICFGNode *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00408">PTACallGraph.h:408</a></div></div>
144
142
  <div class="ttc" id="SVFValue_8h_html"><div class="ttname"><a href="SVFValue_8h.html">SVFValue.h</a></div></div>
@@ -148,7 +146,7 @@ $(function() {
148
146
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a750e50a9022451e406c4819979edffa5"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">SVF::PTACallGraphEdge::directCallsBegin</a></div><div class="ttdeci">CallInstSet::const_iterator directCallsBegin() const</div><div class="ttdoc">Iterators for direct and indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00122">PTACallGraph.h:122</a></div></div>
149
147
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a1ad288117daa4031e195eb35d805cac6"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a1ad288117daa4031e195eb35d805cac6">SVF::PTACallGraph::CallGraphEdgeSet</a></div><div class="ttdeci">PTACallGraphEdge::CallGraphEdgeSet CallGraphEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00222">PTACallGraph.h:222</a></div></div>
150
148
  <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>
151
- <div class="ttc" id="classSVF_1_1GenericEdge_html_a5aceeb48929f54264807b36569019a8a"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">SVF::GenericEdge::GEdgeKind</a></div><div class="ttdeci">s64_t GEdgeKind</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00054">GenericGraph.h:54</a></div></div>
149
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_a5aceeb48929f54264807b36569019a8a"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">SVF::GenericEdge::GEdgeKind</a></div><div class="ttdeci">s64_t GEdgeKind</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00055">GenericGraph.h:55</a></div></div>
152
150
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">SVF::PTACallGraphEdge::TDForkEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00058">PTACallGraph.h:58</a></div></div>
153
151
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a74692d47f929dc2188eede497acb91b7"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a74692d47f929dc2188eede497acb91b7">SVF::PTACallGraphEdge::isIndirectCallEdge</a></div><div class="ttdeci">bool isIndirectCallEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00091">PTACallGraph.h:91</a></div></div>
154
152
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a9738544725458bb022b8d5f2dbd281f7a2d65840140263a0808f5b9d553a4bff5"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7a2d65840140263a0808f5b9d553a4bff5">SVF::PTACallGraphEdge::TDJoinEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00058">PTACallGraph.h:58</a></div></div>
@@ -164,7 +162,7 @@ $(function() {
164
162
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a76aa19edf03a4cacfa3e27a21abfcd07"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a76aa19edf03a4cacfa3e27a21abfcd07">SVF::PTACallGraphEdge::getIndirectCalls</a></div><div class="ttdeci">CallInstSet &amp; getIndirectCalls()</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00099">PTACallGraph.h:99</a></div></div>
165
163
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a4eaeb2765fdcc455116537dbe2119800"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a4eaeb2765fdcc455116537dbe2119800">SVF::PTACallGraphEdge::makeEdgeFlagWithInvokeID</a></div><div class="ttdeci">static GEdgeFlag makeEdgeFlagWithInvokeID(GEdgeKind k, CallSiteID cs)</div><div class="ttdoc">Compute the unique edgeFlag value from edge kind and CallSiteID. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00077">PTACallGraph.h:77</a></div></div>
166
164
  <div class="ttc" id="namespaceSVF_html_aae350f79ebcb9efd22ec9efa6678cd13"><div class="ttname"><a href="namespaceSVF.html#aae350f79ebcb9efd22ec9efa6678cd13">SVF::dump</a></div><div class="ttdeci">void dump(const SparseBitVector&lt; ElementSize &gt; &amp;LHS, std::ostream &amp;out)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01191">SparseBitVector.h:1191</a></div></div>
167
- <div class="ttc" id="classSVF_1_1GenericGraph_html"><div class="ttname"><a href="classSVF_1_1GenericGraph.html">SVF::GenericGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00334">GenericGraph.h:334</a></div></div>
165
+ <div class="ttc" id="classSVF_1_1GenericGraph_html"><div class="ttname"><a href="classSVF_1_1GenericGraph.html">SVF::GenericGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00335">GenericGraph.h:335</a></div></div>
168
166
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_ae4e3e5f108bc1e47af8f58d2e43345d2"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#ae4e3e5f108bc1e47af8f58d2e43345d2">SVF::PTACallGraph::CallSiteToIdMap</a></div><div class="ttdeci">Map&lt; CallSitePair, CallSiteID &gt; CallSiteToIdMap</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00226">PTACallGraph.h:226</a></div></div>
169
167
  <div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a796994541eec90f2b540e24816120aff"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a796994541eec90f2b540e24816120aff">SVF::PTACallGraphNode::iterator</a></div><div class="ttdeci">PTACallGraphEdge::CallGraphEdgeSet::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00179">PTACallGraph.h:179</a></div></div>
170
168
  <div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
@@ -175,9 +173,10 @@ $(function() {
175
173
  <div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00049">SVFType.h:49</a></div></div>
176
174
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a049bc978a93f0db1fe91efb6feb22b14"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a049bc978a93f0db1fe91efb6feb22b14">SVF::PTACallGraph::FunToCallGraphNodeMap</a></div><div class="ttdeci">Map&lt; const SVFFunction *, PTACallGraphNode * &gt; FunToCallGraphNodeMap</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00223">PTACallGraph.h:223</a></div></div>
177
175
  <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>
178
- <div class="ttc" id="classSVF_1_1GenericEdge_html_af1c2fd4b5ef1d7b7605572bf2489c298"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">SVF::GenericEdge::EdgeKindMaskBits</a></div><div class="ttdeci">static constexpr unsigned char EdgeKindMaskBits</div><div class="ttdoc">We use the lower 8 bits to denote edge kind. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00124">GenericGraph.h:124</a></div></div>
176
+ <div class="ttc" id="structSVF_1_1GenericGraphTraits_html"><div class="ttname"><a href="structSVF_1_1GenericGraphTraits.html">SVF::GenericGraphTraits</a></div><div class="ttdef"><b>Definition:</b> <a href="GraphTraits_8h_source.html#l00036">GraphTraits.h:36</a></div></div>
177
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_af1c2fd4b5ef1d7b7605572bf2489c298"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">SVF::GenericEdge::EdgeKindMaskBits</a></div><div class="ttdeci">static constexpr unsigned char EdgeKindMaskBits</div><div class="ttdoc">We use the lower 8 bits to denote edge kind. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00125">GenericGraph.h:125</a></div></div>
179
178
  <div class="ttc" id="namespaceSVF_html_a673ed8bf673a4c426a9d91aa8987e31c"><div class="ttname"><a href="namespaceSVF.html#a673ed8bf673a4c426a9d91aa8987e31c">SVF::GenericCallGraphNodeTy</a></div><div class="ttdeci">GenericNode&lt; PTACallGraphNode, PTACallGraphEdge &gt; GenericCallGraphNodeTy</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00173">PTACallGraph.h:173</a></div></div>
180
- <div class="ttc" id="classSVF_1_1GenericEdge_html_a0e8736f88ee75da025d874f92328ca71"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">SVF::GenericEdge::src</a></div><div class="ttdeci">NodeTy * src</div><div class="ttdoc">source node </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00056">GenericGraph.h:56</a></div></div>
179
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_a0e8736f88ee75da025d874f92328ca71"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">SVF::GenericEdge::src</a></div><div class="ttdeci">NodeTy * src</div><div class="ttdoc">source node </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00057">GenericGraph.h:57</a></div></div>
181
180
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_adf05313ea8bcc7973acebd3fbcd75c92"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#adf05313ea8bcc7973acebd3fbcd75c92">SVF::PTACallGraph::numOfResolvedIndCallEdge</a></div><div class="ttdeci">u32_t numOfResolvedIndCallEdge</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00254">PTACallGraph.h:254</a></div></div>
182
181
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a317e09edb29b110cf4273009551d31ec"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">SVF::PTACallGraph::getCallees</a></div><div class="ttdeci">void getCallees(const CallICFGNode *cs, FunctionSet &amp;callees)</div><div class="ttdoc">Get all callees for a callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00382">PTACallGraph.h:382</a></div></div>
183
182
  <div class="ttc" id="namespaceSVF_html_aedf0d6718ca176e0b9e17ab4b30729c6"><div class="ttname"><a href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">SVF::OrderedMap</a></div><div class="ttdeci">std::map&lt; Key, Value, Compare, Allocator &gt; OrderedMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00106">SVFType.h:106</a></div></div>