svf-tools 1.0.464 → 1.0.467

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 (409) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +11 -11
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  5. package/SVF-doxygen/html/html/Annotator_8h_source.html +3 -3
  6. package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/BDDExpr_8h_source.html +1 -1
  8. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +6 -6
  9. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +6 -6
  10. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +3 -3
  11. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +4 -4
  12. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +17 -17
  15. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +5 -5
  16. package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
  17. package/SVF-doxygen/html/html/CHG_8cpp_source.html +10 -10
  18. package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
  19. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +21 -20
  20. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +3 -3
  21. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
  22. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  24. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  25. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +4 -4
  26. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +2 -2
  27. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +4 -4
  28. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +12 -12
  29. package/SVF-doxygen/html/html/DCHG_8h_source.html +5 -5
  30. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +3 -3
  32. package/SVF-doxygen/html/html/DDAPass_8h_source.html +2 -2
  33. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
  34. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
  35. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +7 -7
  37. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +8 -8
  38. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +3 -3
  39. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
  40. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +4 -4
  41. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  42. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  43. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  44. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +2 -2
  45. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
  46. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +5 -5
  47. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +3 -3
  50. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
  51. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +6 -6
  52. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
  54. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +3 -3
  55. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +6 -6
  56. package/SVF-doxygen/html/html/ICFG_8h_source.html +3 -3
  57. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +9 -9
  58. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
  59. package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
  60. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +8 -8
  61. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +6 -6
  62. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +24 -23
  63. package/SVF-doxygen/html/html/LLVMUtil_8h.html +2 -0
  64. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +61 -60
  65. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  66. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +7 -6
  68. package/SVF-doxygen/html/html/LocationSet_8h_source.html +2 -2
  69. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +9 -9
  70. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +4 -4
  71. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +10 -10
  72. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
  73. package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
  74. package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
  75. package/SVF-doxygen/html/html/MHP_8h_source.html +5 -5
  76. package/SVF-doxygen/html/html/MSSAMuChi_8h.html +7 -1
  77. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +4 -3
  78. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
  79. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +5 -5
  80. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +14 -14
  81. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +6 -6
  82. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +6 -6
  83. package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
  84. package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
  85. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  86. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +18 -9
  88. package/SVF-doxygen/html/html/MemRegion_8h_source.html +3 -3
  89. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
  90. package/SVF-doxygen/html/html/MemSSA_8h_source.html +4 -4
  91. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  92. package/SVF-doxygen/html/html/Options_8cpp_source.html +50 -48
  93. package/SVF-doxygen/html/html/Options_8h_source.html +51 -49
  94. package/SVF-doxygen/html/html/PCG_8cpp_source.html +7 -7
  95. package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
  96. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +4 -4
  97. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  98. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +6 -6
  99. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +12 -12
  100. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +7 -7
  101. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  102. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  103. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +15 -14
  104. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +2 -2
  105. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
  106. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
  107. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +2 -2
  108. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +3 -3
  109. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  110. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  111. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  112. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp.html +86 -0
  113. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +125 -0
  114. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -1
  115. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +53 -48
  116. package/SVF-doxygen/html/html/SVFG_8h_source.html +42 -39
  117. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +53 -52
  118. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +13 -13
  119. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +3 -3
  120. package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
  121. package/SVF-doxygen/html/html/SVFModule_8h_source.html +4 -4
  122. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  123. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +3 -3
  124. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +13 -13
  125. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +9 -9
  126. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +3 -3
  127. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +6 -6
  128. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +3 -3
  129. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
  130. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  131. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +3 -3
  132. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  133. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +35 -34
  134. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +5 -5
  135. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +14 -13
  136. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +6 -6
  137. package/SVF-doxygen/html/html/TCT_8cpp_source.html +14 -14
  138. package/SVF-doxygen/html/html/TCT_8h_source.html +10 -10
  139. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +4 -4
  140. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +6 -6
  141. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
  142. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +2 -2
  143. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
  144. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +9 -9
  145. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
  146. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +77 -77
  147. package/SVF-doxygen/html/html/VFGNode_8h_source.html +3 -3
  148. package/SVF-doxygen/html/html/VFG_8cpp_source.html +4 -4
  149. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  150. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  151. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  152. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +8 -8
  153. package/SVF-doxygen/html/html/WPAPass_8h_source.html +3 -3
  154. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  156. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  160. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +7 -7
  161. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +5 -5
  162. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
  164. package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  166. package/SVF-doxygen/html/html/classSVF_1_1BDDExprManager.html +2 -2
  167. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +1 -1
  168. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  169. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  170. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
  171. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
  172. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +5 -5
  173. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +3 -3
  174. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +31 -31
  176. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +7 -7
  177. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  180. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
  184. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +1 -1
  185. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +1 -1
  186. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  188. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +1 -1
  190. package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +7 -7
  193. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  194. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  196. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  197. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +13 -13
  199. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
  200. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +2 -2
  201. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  202. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  204. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  205. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  206. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +5 -5
  207. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  209. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +6 -6
  210. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
  211. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +9 -9
  212. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +21 -21
  213. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  214. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  215. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  216. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +2 -2
  218. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
  219. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  221. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  223. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  224. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  225. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  226. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +11 -11
  227. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
  228. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  229. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +3 -3
  230. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
  231. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  232. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  233. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  234. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  237. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
  238. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
  239. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  240. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  241. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +3 -3
  242. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +18 -18
  243. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +4 -4
  244. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  245. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  246. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +10 -8
  247. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +32 -32
  248. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +12 -12
  249. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +26 -26
  250. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +12 -12
  251. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  253. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +3 -3
  254. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +12 -12
  255. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +28 -28
  256. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +16 -16
  257. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +10 -10
  258. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +17 -17
  260. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
  261. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +2 -2
  263. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  264. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
  265. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  266. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +28 -26
  267. package/SVF-doxygen/html/html/classSVF_1_1Options.html +101 -49
  268. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +19 -19
  269. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +7 -7
  271. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
  272. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +2 -2
  273. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
  274. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +14 -13
  275. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +25 -25
  276. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  277. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +21 -20
  278. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +4 -4
  279. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +8 -8
  280. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  281. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
  282. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
  283. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
  284. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  285. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
  286. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
  287. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +27 -27
  288. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +91 -88
  289. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +302 -116
  290. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +5 -5
  291. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +100 -97
  292. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +18 -12
  293. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +2 -2
  294. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
  295. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +1 -1
  296. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +110 -107
  297. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +2 -2
  298. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +5 -5
  299. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +7 -7
  300. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
  301. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  302. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +4 -4
  303. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  304. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  305. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +44 -42
  307. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +19 -18
  308. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +32 -32
  309. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  310. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +4 -4
  312. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +9 -9
  313. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +2 -2
  314. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
  315. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
  316. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
  318. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +10 -10
  319. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  320. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  321. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
  322. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
  323. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  324. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  325. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
  326. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
  327. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  328. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
  329. package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
  330. package/SVF-doxygen/html/html/dir_1870ebf480d659cc38d2dd7ac3aa8993.html +2 -0
  331. package/SVF-doxygen/html/html/files.html +4 -3
  332. package/SVF-doxygen/html/html/functions_c.html +5 -9
  333. package/SVF-doxygen/html/html/functions_func_g.html +7 -4
  334. package/SVF-doxygen/html/html/functions_func_r.html +7 -4
  335. package/SVF-doxygen/html/html/functions_func_w.html +1 -0
  336. package/SVF-doxygen/html/html/functions_g.html +9 -6
  337. package/SVF-doxygen/html/html/functions_i.html +3 -3
  338. package/SVF-doxygen/html/html/functions_l.html +8 -8
  339. package/SVF-doxygen/html/html/functions_o.html +14 -14
  340. package/SVF-doxygen/html/html/functions_p.html +10 -14
  341. package/SVF-doxygen/html/html/functions_r.html +11 -7
  342. package/SVF-doxygen/html/html/functions_s.html +14 -12
  343. package/SVF-doxygen/html/html/functions_v.html +3 -3
  344. package/SVF-doxygen/html/html/functions_vars_r.html +3 -0
  345. package/SVF-doxygen/html/html/functions_vars_w.html +3 -0
  346. package/SVF-doxygen/html/html/functions_w.html +4 -0
  347. package/SVF-doxygen/html/html/globals_s.html +7 -3
  348. package/SVF-doxygen/html/html/namespaceSVF.html +80 -41
  349. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +233 -199
  350. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +38 -36
  351. package/SVF-doxygen/html/html/namespacemembers_func.html +4 -1
  352. package/SVF-doxygen/html/html/namespacemembers_g.html +8 -5
  353. package/SVF-doxygen/html/html/namespacemembers_o.html +1 -1
  354. package/SVF-doxygen/html/html/search/all_10.js +3 -3
  355. package/SVF-doxygen/html/html/search/all_12.js +4 -2
  356. package/SVF-doxygen/html/html/search/all_13.js +10 -9
  357. package/SVF-doxygen/html/html/search/all_14.js +3 -3
  358. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  359. package/SVF-doxygen/html/html/search/all_17.js +2 -1
  360. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  361. package/SVF-doxygen/html/html/search/all_7.js +2 -0
  362. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  363. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  364. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  365. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  366. package/SVF-doxygen/html/html/search/all_e.js +3 -3
  367. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  368. package/SVF-doxygen/html/html/search/files_d.js +1 -0
  369. package/SVF-doxygen/html/html/search/functions_14.js +1 -1
  370. package/SVF-doxygen/html/html/search/functions_6.js +2 -0
  371. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  372. package/SVF-doxygen/html/html/search/functions_f.js +1 -0
  373. package/SVF-doxygen/html/html/search/variables_12.js +1 -0
  374. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  375. package/SVF-doxygen/html/html/search/variables_17.js +2 -1
  376. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  377. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +3 -3
  378. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  379. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  380. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  381. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  382. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
  383. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +24 -24
  384. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +4 -4
  385. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
  386. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  387. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  388. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  389. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  390. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
  391. package/include/Graphs/SVFG.h +4 -0
  392. package/include/MSSA/MSSAMuChi.h +1 -0
  393. package/include/SVF-FE/LLVMUtil.h +11 -1
  394. package/include/Util/BasicTypes.h +4 -0
  395. package/include/Util/Options.h +3 -0
  396. package/lib/Graphs/SVFG.cpp +31 -27
  397. package/lib/Graphs/SVFGReadWrite.cpp +478 -0
  398. package/lib/MSSA/MemRegion.cpp +7 -0
  399. package/lib/MemoryModel/LocationSet.cpp +2 -2
  400. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  401. package/lib/MemoryModel/SymbolTableInfo.cpp +1 -1
  402. package/lib/SVF-FE/BreakConstantExpr.cpp +3 -1
  403. package/lib/SVF-FE/CPPUtil.cpp +2 -2
  404. package/lib/SVF-FE/LLVMUtil.cpp +2 -2
  405. package/lib/SVF-FE/SVFIRBuilder.cpp +3 -3
  406. package/lib/SVF-FE/SymbolTableBuilder.cpp +2 -2
  407. package/lib/Util/Options.cpp +11 -0
  408. package/lib/Util/PTAStat.cpp +1 -0
  409. package/package.json +1 -1
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">Graph2Json.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="Graph2Json_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#include &quot;llvm/Support/JSON.h&quot;</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Graph2Json_8h.html">SVF-FE/Graph2Json.h</a>&quot;</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;fstream&gt;</span> <span class="comment">// for ICFGBuilderFromFile</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// for ICFGBuilderFromFile</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span> <span class="comment">// for ICFGBuilderFromFile</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &lt;llvm/Support/ToolOutputFile.h&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGPrinter.html#ab51ba2c92e69d3688b0a185b4b1d69cb"> 15</a></span>&#160;ICFGPrinter::ICFGPrinter() {}</div><div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGPrinter.html#a5ef3cd8fa4c2dd99289725f1aa781721"> 16</a></span>&#160;<span class="keywordtype">void</span> ICFGPrinter::printICFGToJson(<span class="keyword">const</span> std::string&amp; filename)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;write symbols to &#39;&quot;</span> &lt;&lt; filename &lt;&lt; <span class="stringliteral">&quot;&#39;...&quot;</span>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; std::error_code err;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; llvm::ToolOutputFile <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>(filename.c_str(), err, llvm::sys::fs::OF_None);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">if</span> (err)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; error opening file for writing!\n&quot;</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.os().clear_error();</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; llvm::json::Array root_array;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ICFG.html#a498f84068ef643a94970aeb171607e31">ICFG::iterator</a> it = begin(), eit = end(); it!=eit; ++it)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; llvm::json::Object ICFGNode_Obj;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;ICFG_ID&quot;</span>] = id;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Node Type&quot;</span>] = getICFGKind(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>());</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* bNode = SVFUtil::dyn_cast&lt;IntraICFGNode&gt;(node))</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; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(bNode-&gt;getInst());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a>&amp; edges = SVFIR::getPAG()-&gt;getPTASVFStmtList(bNode);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; llvm::json::Array PAGEdge_array;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">//dump pag edges</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFStmtList::iterator it = edges.begin(),</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; eit = edges.end(); it != eit; ++it)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; llvm::json::Object edge_obj;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; edge_obj[<span class="stringliteral">&quot;Source Node&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; edge_obj[<span class="stringliteral">&quot;Destination Node&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; edge_obj[<span class="stringliteral">&quot;Source Type&quot;</span>] = getPAGNodeKindValue(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getNodeKind());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; edge_obj[<span class="stringliteral">&quot;Destination Type&quot;</span>] = getPAGNodeKindValue(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getNodeKind());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; edge_obj[<span class="stringliteral">&quot;Edge Type&quot;</span>] = getPAGEdgeKindValue(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; edge_obj[<span class="stringliteral">&quot;srcValueName&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getValueName();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; edge_obj[<span class="stringliteral">&quot;dstValueName&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getValueName();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()==SVFStmt::Gep)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepEdge = SVFUtil::cast&lt;GepStmt&gt;(edge);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; edge_obj[<span class="stringliteral">&quot;offset&quot;</span>] = gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a959a9c95d25f90fd7acc8e6e36056b56">getConstantFieldIdx</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; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> edge_value = llvm::json::Object{edge_obj};</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; PAGEdge_array.push_back(edge_value);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> PagEdge_value = llvm::json::Array{PAGEdge_array};</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;SVFIR Edges&quot;</span>] = PagEdge_value;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a> = SVFUtil::dyn_cast&lt;FunEntryICFGNode&gt;(node))</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;getFun()))</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">true</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">false</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(<a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;getFun()-&gt;getLLVMFun());</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; ICFGNode_Obj[<span class="stringliteral">&quot;Function Name&quot;</span>] = <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;getFun()-&gt;getName();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a> = SVFUtil::dyn_cast&lt;FunExitICFGNode&gt;(node))</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">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()))</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">true</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span></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"> 83</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">false</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(&amp;(<a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()-&gt;getLLVMFun()-&gt;back()));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Function Name&quot;</span>] = <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()-&gt;getName();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(node))</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(call-&gt;getCallSite());</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* ret = SVFUtil::dyn_cast&lt;RetICFGNode&gt;(node))</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(ret-&gt;getCallSite());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else kinds of nodes do we have??&quot;</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; llvm::json::Array ICFGEdges_array;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ICFGNode.html#a5a148eccec266a67e4ff5364d7268fff">ICFGNode::iterator</a> sit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), esit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); sit!=esit; ++sit)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *sit;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; llvm::json::Object ICFGEdge_obj;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallCFGEdge&gt;(edge))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>* call = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>&gt;(edge);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFG Edge Type&quot;</span>] = <span class="stringliteral">&quot;CallCFGEdge&quot;</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeSrcID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeDstID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetCFGEdge&gt;(edge))</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>* call = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>&gt;(edge);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFG Edge Type&quot;</span>] = <span class="stringliteral">&quot;RetCFGEdge&quot;</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeSrcID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeDstID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraCFGEdge&gt;(edge))</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>* intraCFGEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>&gt;(edge);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFG Edge Type&quot;</span>] = <span class="stringliteral">&quot;IntraCFGEdge&quot;</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeSrcID&quot;</span>] = intraCFGEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeDstID&quot;</span>] = intraCFGEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> ICFGEdge_Val = llvm::json::Object{ICFGEdge_obj};</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; ICFGEdges_array.push_back(ICFGEdge_Val);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> ICFGEdges_val = llvm::json::Array{ICFGEdges_array};</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;ICFGEdges&quot;</span>] = ICFGEdges_val;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> ICFGNode_val = llvm::json::Object{ICFGNode_Obj};</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; root_array.push_back(ICFGNode_val);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> root_value = llvm::json::Array{root_array};</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespaceSVF.html#af83f5c5c68cdb80576cdc1d62c01b207">llvm::json::operator&lt;&lt;</a>(<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.os(),root_value);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.os().close();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.os().has_error())</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.keep();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span>;</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"> 143</span>&#160;}</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"><a class="line" href="classSVF_1_1ICFGPrinter.html#a2c022308f9c7ae3bf33d9482fcb51e03"> 145</a></span>&#160;std::string ICFGPrinter::getICFGKind(<span class="keyword">const</span> <span class="keywordtype">int</span> kind)</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"> 147</span>&#160; <span class="keywordflow">switch</span>(kind)</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">case</span> ICFGNode::IntraBlock:</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;IntraBlock&quot;</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">case</span> ICFGNode::FunEntryBlock:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FunEntryBlock&quot;</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">case</span> ICFGNode::FunExitBlock:</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FunExitBlock&quot;</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">case</span> ICFGNode::FunCallBlock:</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FunCallBlock&quot;</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">case</span> ICFGNode::FunRetBlock:</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FunRetBlock&quot;</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</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"><a class="line" href="classSVF_1_1ICFGPrinter.html#a54f0729c869b5061b5fb9fe056c326ef"> 170</a></span>&#160;std::string ICFGPrinter::getPAGNodeKindValue(<span class="keywordtype">int</span> kind)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">switch</span> (kind)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">case</span> (SVFVar::ValNode):</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ValNode&quot;</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">case</span> SVFVar::ObjNode:</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ObjNode&quot;</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">case</span> SVFVar::RetNode:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;RetNode&quot;</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">case</span> SVFVar::VarargNode:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;VarargNode&quot;</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">case</span> SVFVar::GepValNode:</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;GepValNode&quot;</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">case</span> SVFVar::GepObjNode:</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;GepObjNode&quot;</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">case</span> SVFVar::FIObjNode:</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FIObjNode&quot;</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">case</span> SVFVar::DummyValNode:</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;DummyValNode&quot;</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">case</span> SVFVar::DummyObjNode:</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;DummyObjNode&quot;</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;}</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGPrinter.html#a38aa67e172459a72d8fc92a6172903be"> 205</a></span>&#160;std::string ICFGPrinter::getPAGEdgeKindValue(<span class="keywordtype">int</span> kind)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">switch</span>(kind)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">case</span> (<a class="code" href="CFLGrammar_8txt.html#a017fa6c558fa1eff0a13180c8340aba8">SVFStmt::Addr</a>):</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Addr&quot;</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Copy):</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Copy&quot;</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Store):</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Store&quot;</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Load):</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Load&quot;</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Call):</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Call&quot;</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Ret):</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Ret&quot;</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Gep):</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;NormalGep&quot;</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">case</span> (SVFStmt::ThreadFork):</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ThreadFork&quot;</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">case</span> (SVFStmt::ThreadJoin):</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ThreadJoin&quot;</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Cmp):</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Cmp&quot;</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">case</span> (SVFStmt::BinaryOp):</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;BinaryOp&quot;</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">case</span> (SVFStmt::UnaryOp):</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;UnaryOp&quot;</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;}</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00044">ICFGEdge.h:44</a></div></div>
69
+ <a href="Graph2Json_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#include &quot;llvm/Support/JSON.h&quot;</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Graph2Json_8h.html">SVF-FE/Graph2Json.h</a>&quot;</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;fstream&gt;</span> <span class="comment">// for ICFGBuilderFromFile</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// for ICFGBuilderFromFile</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span> <span class="comment">// for ICFGBuilderFromFile</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &lt;llvm/Support/ToolOutputFile.h&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGPrinter.html#ab51ba2c92e69d3688b0a185b4b1d69cb"> 15</a></span>&#160;ICFGPrinter::ICFGPrinter() {}</div><div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGPrinter.html#a5ef3cd8fa4c2dd99289725f1aa781721"> 16</a></span>&#160;<span class="keywordtype">void</span> ICFGPrinter::printICFGToJson(<span class="keyword">const</span> std::string&amp; filename)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;write symbols to &#39;&quot;</span> &lt;&lt; filename &lt;&lt; <span class="stringliteral">&quot;&#39;...&quot;</span>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; std::error_code err;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; llvm::ToolOutputFile <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>(filename.c_str(), err, llvm::sys::fs::OF_None);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">if</span> (err)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; error opening file for writing!\n&quot;</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.os().clear_error();</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; llvm::json::Array root_array;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ICFG.html#a498f84068ef643a94970aeb171607e31">ICFG::iterator</a> it = begin(), eit = end(); it!=eit; ++it)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; llvm::json::Object ICFGNode_Obj;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;ICFG_ID&quot;</span>] = id;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Node Type&quot;</span>] = getICFGKind(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>());</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* bNode = SVFUtil::dyn_cast&lt;IntraICFGNode&gt;(node))</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; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(bNode-&gt;getInst());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a>&amp; edges = SVFIR::getPAG()-&gt;getPTASVFStmtList(bNode);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; llvm::json::Array PAGEdge_array;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">//dump pag edges</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFStmtList::iterator it = edges.begin(),</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; eit = edges.end(); it != eit; ++it)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; llvm::json::Object edge_obj;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; edge_obj[<span class="stringliteral">&quot;Source Node&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; edge_obj[<span class="stringliteral">&quot;Destination Node&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; edge_obj[<span class="stringliteral">&quot;Source Type&quot;</span>] = getPAGNodeKindValue(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getNodeKind());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; edge_obj[<span class="stringliteral">&quot;Destination Type&quot;</span>] = getPAGNodeKindValue(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getNodeKind());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; edge_obj[<span class="stringliteral">&quot;Edge Type&quot;</span>] = getPAGEdgeKindValue(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; edge_obj[<span class="stringliteral">&quot;srcValueName&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getValueName();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; edge_obj[<span class="stringliteral">&quot;dstValueName&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getValueName();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()==SVFStmt::Gep)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepEdge = SVFUtil::cast&lt;GepStmt&gt;(edge);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; edge_obj[<span class="stringliteral">&quot;offset&quot;</span>] = gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a959a9c95d25f90fd7acc8e6e36056b56">getConstantFieldIdx</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; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> edge_value = llvm::json::Object{edge_obj};</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; PAGEdge_array.push_back(edge_value);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> PagEdge_value = llvm::json::Array{PAGEdge_array};</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;SVFIR Edges&quot;</span>] = PagEdge_value;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a> = SVFUtil::dyn_cast&lt;FunEntryICFGNode&gt;(node))</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;getFun()))</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">true</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">false</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(<a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;getFun()-&gt;getLLVMFun());</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; ICFGNode_Obj[<span class="stringliteral">&quot;Function Name&quot;</span>] = <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;getFun()-&gt;getName();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a> = SVFUtil::dyn_cast&lt;FunExitICFGNode&gt;(node))</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">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()))</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">true</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span></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"> 83</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">false</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(&amp;(<a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()-&gt;getLLVMFun()-&gt;back()));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Function Name&quot;</span>] = <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()-&gt;getName();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(node))</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(call-&gt;getCallSite());</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* ret = SVFUtil::dyn_cast&lt;RetICFGNode&gt;(node))</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(ret-&gt;getCallSite());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else kinds of nodes do we have??&quot;</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; llvm::json::Array ICFGEdges_array;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ICFGNode.html#a5a148eccec266a67e4ff5364d7268fff">ICFGNode::iterator</a> sit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), esit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); sit!=esit; ++sit)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *sit;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; llvm::json::Object ICFGEdge_obj;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallCFGEdge&gt;(edge))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>* call = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>&gt;(edge);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFG Edge Type&quot;</span>] = <span class="stringliteral">&quot;CallCFGEdge&quot;</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeSrcID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeDstID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetCFGEdge&gt;(edge))</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>* call = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>&gt;(edge);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFG Edge Type&quot;</span>] = <span class="stringliteral">&quot;RetCFGEdge&quot;</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeSrcID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeDstID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraCFGEdge&gt;(edge))</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>* intraCFGEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>&gt;(edge);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFG Edge Type&quot;</span>] = <span class="stringliteral">&quot;IntraCFGEdge&quot;</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeSrcID&quot;</span>] = intraCFGEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeDstID&quot;</span>] = intraCFGEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> ICFGEdge_Val = llvm::json::Object{ICFGEdge_obj};</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; ICFGEdges_array.push_back(ICFGEdge_Val);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> ICFGEdges_val = llvm::json::Array{ICFGEdges_array};</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;ICFGEdges&quot;</span>] = ICFGEdges_val;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> ICFGNode_val = llvm::json::Object{ICFGNode_Obj};</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; root_array.push_back(ICFGNode_val);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> root_value = llvm::json::Array{root_array};</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespaceSVF.html#aec4534b227e8f43b9077e708b74817fa">llvm::json::operator&lt;&lt;</a>(<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.os(),root_value);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.os().close();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.os().has_error())</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.keep();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span>;</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"> 143</span>&#160;}</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"><a class="line" href="classSVF_1_1ICFGPrinter.html#a2c022308f9c7ae3bf33d9482fcb51e03"> 145</a></span>&#160;std::string ICFGPrinter::getICFGKind(<span class="keyword">const</span> <span class="keywordtype">int</span> kind)</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"> 147</span>&#160; <span class="keywordflow">switch</span>(kind)</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">case</span> ICFGNode::IntraBlock:</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;IntraBlock&quot;</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">case</span> ICFGNode::FunEntryBlock:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FunEntryBlock&quot;</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">case</span> ICFGNode::FunExitBlock:</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FunExitBlock&quot;</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">case</span> ICFGNode::FunCallBlock:</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FunCallBlock&quot;</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">case</span> ICFGNode::FunRetBlock:</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FunRetBlock&quot;</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</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"><a class="line" href="classSVF_1_1ICFGPrinter.html#a54f0729c869b5061b5fb9fe056c326ef"> 170</a></span>&#160;std::string ICFGPrinter::getPAGNodeKindValue(<span class="keywordtype">int</span> kind)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">switch</span> (kind)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">case</span> (SVFVar::ValNode):</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ValNode&quot;</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">case</span> SVFVar::ObjNode:</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ObjNode&quot;</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">case</span> SVFVar::RetNode:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;RetNode&quot;</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">case</span> SVFVar::VarargNode:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;VarargNode&quot;</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">case</span> SVFVar::GepValNode:</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;GepValNode&quot;</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">case</span> SVFVar::GepObjNode:</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;GepObjNode&quot;</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">case</span> SVFVar::FIObjNode:</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FIObjNode&quot;</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">case</span> SVFVar::DummyValNode:</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;DummyValNode&quot;</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">case</span> SVFVar::DummyObjNode:</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;DummyObjNode&quot;</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;}</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGPrinter.html#a38aa67e172459a72d8fc92a6172903be"> 205</a></span>&#160;std::string ICFGPrinter::getPAGEdgeKindValue(<span class="keywordtype">int</span> kind)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">switch</span>(kind)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">case</span> (<a class="code" href="CFLGrammar_8txt.html#a017fa6c558fa1eff0a13180c8340aba8">SVFStmt::Addr</a>):</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Addr&quot;</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Copy):</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Copy&quot;</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Store):</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Store&quot;</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Load):</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Load&quot;</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Call):</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Call&quot;</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Ret):</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Ret&quot;</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Gep):</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;NormalGep&quot;</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">case</span> (SVFStmt::ThreadFork):</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ThreadFork&quot;</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">case</span> (SVFStmt::ThreadJoin):</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ThreadJoin&quot;</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Cmp):</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Cmp&quot;</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">case</span> (SVFStmt::BinaryOp):</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;BinaryOp&quot;</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">case</span> (SVFStmt::UnaryOp):</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;UnaryOp&quot;</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;}</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00044">ICFGEdge.h:44</a></div></div>
70
70
  <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#l00081">GenericGraph.h:81</a></div></div>
71
71
  <div class="ttc" id="util_8h_html_a43b6ea6be735bb828bc062c70cadeff8"><div class="ttname"><a href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a></div><div class="ttdeci">VOID_OR_INT exit()</div></div>
72
72
  <div class="ttc" id="Graph2Json_8h_html"><div class="ttname"><a href="Graph2Json_8h.html">Graph2Json.h</a></div></div>
@@ -87,6 +87,7 @@ $(function() {
87
87
  <div class="ttc" id="classSVF_1_1FunEntryICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html">SVF::FunEntryICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00251">ICFGNode.h:251</a></div></div>
88
88
  <div class="ttc" id="classSVF_1_1IntraCFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html">SVF::IntraCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00113">ICFGEdge.h:113</a></div></div>
89
89
  <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#l00093">GenericGraph.h:93</a></div></div>
90
+ <div class="ttc" id="namespaceSVF_html_aec4534b227e8f43b9077e708b74817fa"><div class="ttname"><a href="namespaceSVF.html#aec4534b227e8f43b9077e708b74817fa">SVF::operator&lt;&lt;</a></div><div class="ttdeci">std::ostream &amp; operator&lt;&lt;(std::ostream &amp;o, const MRVer &amp;mrver)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00811">MemRegion.cpp:811</a></div></div>
90
91
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
91
92
  <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#l00089">GenericGraph.h:89</a></div></div>
92
93
  <div class="ttc" id="classSVF_1_1ICFG_html_a498f84068ef643a94970aeb171607e31"><div class="ttname"><a href="classSVF_1_1ICFG.html#a498f84068ef643a94970aeb171607e31">SVF::ICFG::iterator</a></div><div class="ttdeci">ICFGNodeIDToNodeMapTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00055">ICFG.h:55</a></div></div>
@@ -95,14 +96,13 @@ $(function() {
95
96
  <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>
96
97
  <div class="ttc" id="classSVF_1_1ICFGNode_html_a5a148eccec266a67e4ff5364d7268fff"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a5a148eccec266a67e4ff5364d7268fff">SVF::ICFGNode::iterator</a></div><div class="ttdeci">ICFGEdge::ICFGEdgeSetTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00065">ICFGNode.h:65</a></div></div>
97
98
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
98
- <div class="ttc" id="namespaceSVF_html_af83f5c5c68cdb80576cdc1d62c01b207"><div class="ttname"><a href="namespaceSVF.html#af83f5c5c68cdb80576cdc1d62c01b207">SVF::operator&lt;&lt;</a></div><div class="ttdeci">OutStream &amp; operator&lt;&lt;(OutStream &amp;o, const std::pair&lt; F, S &gt; &amp;var)</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00281">BasicTypes.h:281</a></div></div>
99
99
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
100
100
  <div class="ttc" id="classSVF_1_1FunExitICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html">SVF::FunExitICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00308">ICFGNode.h:308</a></div></div>
101
101
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
102
102
  <div class="ttc" id="cuddInt_8c_html_a936a27e51e66afb57c2b3a12d78a238e"><div class="ttname"><a href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a></div><div class="ttdeci">static int * entry</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l08422">cuddInt.c:8422</a></div></div>
103
103
  <div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
104
104
  <div class="ttc" id="classSVF_1_1IntraICFGNode_html"><div class="ttname"><a href="classSVF_1_1IntraICFGNode.html">SVF::IntraICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00175">ICFGNode.h:175</a></div></div>
105
- <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00068">BasicTypes.h:68</a></div></div>
105
+ <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
106
106
  <div class="ttc" id="classSVF_1_1RetCFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetCFGEdge.html">SVF::RetCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00216">ICFGEdge.h:216</a></div></div>
107
107
  <div class="ttc" id="CFLGrammar_8txt_html_a017fa6c558fa1eff0a13180c8340aba8"><div class="ttname"><a href="CFLGrammar_8txt.html#a017fa6c558fa1eff0a13180c8340aba8">Addr</a></div><div class="ttdeci">V Addrbar Addr</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00010">CFLGrammar.txt:10</a></div></div>
108
108
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00072">LLVMUtil.h:72</a></div></div>
@@ -72,12 +72,12 @@ $(function() {
72
72
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_abb7144bcc587e236fd22f6c8896117f5"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5">SVF::ICFGBuilder::BBSet</a></div><div class="ttdeci">Set&lt; const Instruction * &gt; BBSet</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00045">ICFGBuilder.h:45</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
75
- <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="Util_2BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
75
+ <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="Util_2BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
76
76
  <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
78
78
  <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a160997c1a0fb1000445d04b89d9c1323"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
79
- <div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00091">BasicTypes.h:91</a></div></div>
80
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aa8017e3e5100b3f63ee338b66118d266"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aa8017e3e5100b3f63ee338b66118d266">SVF::SVFUtil::getProgEntryFunction</a></div><div class="ttdeci">const SVFFunction * getProgEntryFunction(SVFModule *svfModule)</div><div class="ttdoc">Get program entry function from module. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00455">LLVMUtil.h:455</a></div></div>
79
+ <div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
80
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aa8017e3e5100b3f63ee338b66118d266"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aa8017e3e5100b3f63ee338b66118d266">SVF::SVFUtil::getProgEntryFunction</a></div><div class="ttdeci">const SVFFunction * getProgEntryFunction(SVFModule *svfModule)</div><div class="ttdoc">Get program entry function from module. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00465">LLVMUtil.h:465</a></div></div>
81
81
  <div class="ttc" id="SVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
82
82
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_a57af1044422b3c3860aa6fb033f8111e"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e">SVF::ICFGBuilder::InstVec</a></div><div class="ttdeci">std::vector&lt; const Instruction * &gt; InstVec</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00044">ICFGBuilder.h:44</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
@@ -89,9 +89,9 @@ $(function() {
89
89
  <div class="ttc" id="classSVF_1_1FunEntryICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html">SVF::FunEntryICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00251">ICFGNode.h:251</a></div></div>
90
90
  <div class="ttc" id="classSVF_1_1IntraCFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html">SVF::IntraCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00113">ICFGEdge.h:113</a></div></div>
91
91
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_ab1cc5de5c2ee7acf83e9ae51c7b38cb5"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#ab1cc5de5c2ee7acf83e9ae51c7b38cb5">SVF::ICFGBuilder::processFunBody</a></div><div class="ttdeci">void processFunBody(WorkList &amp;worklist)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00080">ICFGBuilder.cpp:80</a></div></div>
92
- <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00066">BasicTypes.h:66</a></div></div>
92
+ <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
93
93
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
94
- <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00069">BasicTypes.h:69</a></div></div>
94
+ <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_a21ecc610b7ac35f4e64b2a4a45688359"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a21ecc610b7ac35f4e64b2a4a45688359">SVF::ICFGBuilder::processFunExit</a></div><div class="ttdeci">void processFunExit(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00144">ICFGBuilder.cpp:144</a></div></div>
96
96
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00281">SVFUtil.h:281</a></div></div>
97
97
  <div class="ttc" id="classSVF_1_1InterICFGNode_html"><div class="ttname"><a href="classSVF_1_1InterICFGNode.html">SVF::InterICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00213">ICFGNode.h:213</a></div></div>
@@ -99,7 +99,7 @@ $(function() {
99
99
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
100
100
  <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>
101
101
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
102
- <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00140">BasicTypes.h:140</a></div></div>
102
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
103
103
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
104
104
  <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a55ac065a1d559c907908492c6853dd53"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a55ac065a1d559c907908492c6853dd53">SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00067">BasicTypes.h:67</a></div></div>
105
105
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_a05539eb12b22886ea4b5b4275f601641"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a05539eb12b22886ea4b5b4275f601641">SVF::ICFGBuilder::connectGlobalToProgEntry</a></div><div class="ttdeci">void connectGlobalToProgEntry(SVFModule *svfModule)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00209">ICFGBuilder.cpp:209</a></div></div>
@@ -68,7 +68,7 @@ $(function() {
68
68
  <div class="contents">
69
69
  <a href="ICFGBuilder_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">//===- ICFGBuilder.h ----------------------------------------------------------------//</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-&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"> * ICFGBuilder.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:</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: yulei</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 INCLUDE_UTIL_ICFGBUILDER_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define INCLUDE_UTIL_ICFGBUILDER_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="ICFG_8h.html">Graphs/ICFG.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="WorkList_8h.html">Util/WorkList.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></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;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html"> 39</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1ICFGBuilder.html">ICFGBuilder</a></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;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">public</span>:</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"><a class="line" href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e"> 44</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const Instruction*&gt; <a class="code" href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e">InstVec</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5"> 45</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Instruction*&gt;</a> <a class="code" href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5">BBSet</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6"> 48</a></span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a2dc4467008cdd6eb896e98b67457082a"> 51</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const Instruction*&gt;</a> <a class="code" href="classSVF_1_1ICFGBuilder.html#a2dc4467008cdd6eb896e98b67457082a">WorkList</a>;</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"><a class="line" href="classSVF_1_1ICFGBuilder.html#a40d50a22a5c2094dbfe5e8516a0deccc"> 53</a></span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#a40d50a22a5c2094dbfe5e8516a0deccc">ICFGBuilder</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* i): icfg(i)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#ae66565ee32fff4ef5f0157e867333250">build</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a52e6426f0a1af479159f6fbac6d5b8f4">processFunEntry</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, WorkList&amp; worklist);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#ab1cc5de5c2ee7acf83e9ae51c7b38cb5">processFunBody</a>(WorkList&amp; worklist);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a21ecc610b7ac35f4e64b2a4a45688359">processFunExit</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a05539eb12b22886ea4b5b4275f601641">connectGlobalToProgEntry</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classSVF_1_1InterICFGNode.html">InterICFGNode</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#a1c07cce4cae9bfc8884b37cbda06d8ac">getOrAddInterBlockICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a42f190f697284e6da7a6211ce7adecfe"> 75</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#a42f190f697284e6da7a6211ce7adecfe">getOrAddBlockICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVFUtil::isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a1c07cce4cae9bfc8884b37cbda06d8ac">getOrAddInterBlockICFGNode</a>(inst);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a91599e3ddb71462ec61a50fad91288da">getOrAddIntraBlockICFGNode</a>(inst);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#af1fb4795e58130d639b75c354f67a6ab">addICFGInterEdges</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a702a888f2175dd32e2467bff27385e02"> 87</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#a702a888f2175dd32e2467bff27385e02">getCallICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* cs)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(cs);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb"> 92</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb">getRetICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* cs)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(cs);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a91599e3ddb71462ec61a50fad91288da"> 98</a></span>&#160; <a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#a91599e3ddb71462ec61a50fad91288da">getOrAddIntraBlockICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a2b3a5a9c3c4c623a6d45ab1eac3c6a8b">getIntraICFGNode</a>(inst);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</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"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_UTIL_ICFGBUILDER_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1ICFGBuilder_html_a7c1125c992eec20e118e6bfc12cb8bfb"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb">SVF::ICFGBuilder::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *cs)</div><div class="ttdoc">Add a return node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00092">ICFGBuilder.h:92</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_abb7144bcc587e236fd22f6c8896117f5"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5">SVF::ICFGBuilder::BBSet</a></div><div class="ttdeci">Set&lt; const Instruction * &gt; BBSet</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00045">ICFGBuilder.h:45</a></div></div>
71
- <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="Util_2BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
71
+ <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="Util_2BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1ICFG_html_a66cb50d8c176f800f06d9cb8924eb896"><div class="ttname"><a href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00236">ICFG.cpp:236</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1ICFG_html_a2b3a5a9c3c4c623a6d45ab1eac3c6a8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a2b3a5a9c3c4c623a6d45ab1eac3c6a8b">SVF::ICFG::getIntraICFGNode</a></div><div class="ttdeci">IntraICFGNode * getIntraICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00247">ICFG.cpp:247</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html">SVF::ICFGBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00039">ICFGBuilder.h:39</a></div></div>
@@ -82,7 +82,7 @@ $(function() {
82
82
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_a91599e3ddb71462ec61a50fad91288da"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a91599e3ddb71462ec61a50fad91288da">SVF::ICFGBuilder::getOrAddIntraBlockICFGNode</a></div><div class="ttdeci">IntraICFGNode * getOrAddIntraBlockICFGNode(const Instruction *inst)</div><div class="ttdoc">Add and get IntraBlock ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00098">ICFGBuilder.h:98</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_ab1cc5de5c2ee7acf83e9ae51c7b38cb5"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#ab1cc5de5c2ee7acf83e9ae51c7b38cb5">SVF::ICFGBuilder::processFunBody</a></div><div class="ttdeci">void processFunBody(WorkList &amp;worklist)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00080">ICFGBuilder.cpp:80</a></div></div>
84
84
  <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="SVFBasicTypes_8h_source.html#l00104">SVFBasicTypes.h:104</a></div></div>
85
- <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00069">BasicTypes.h:69</a></div></div>
85
+ <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_a21ecc610b7ac35f4e64b2a4a45688359"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a21ecc610b7ac35f4e64b2a4a45688359">SVF::ICFGBuilder::processFunExit</a></div><div class="ttdeci">void processFunExit(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00144">ICFGBuilder.cpp:144</a></div></div>
87
87
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_a42f190f697284e6da7a6211ce7adecfe"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a42f190f697284e6da7a6211ce7adecfe">SVF::ICFGBuilder::getOrAddBlockICFGNode</a></div><div class="ttdeci">ICFGNode * getOrAddBlockICFGNode(const Instruction *inst)</div><div class="ttdoc">Add/Get a basic block ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00075">ICFGBuilder.h:75</a></div></div>
88
88
  <div class="ttc" id="classSVF_1_1InterICFGNode_html"><div class="ttname"><a href="classSVF_1_1InterICFGNode.html">SVF::InterICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00213">ICFGNode.h:213</a></div></div>