svf-tools 1.0.448 → 1.0.451

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 (528) hide show
  1. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +3 -3
  3. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +5 -5
  4. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +5 -5
  5. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +5 -5
  6. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +5 -5
  7. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +16 -16
  9. package/SVF-doxygen/html/html/Andersen_8h_source.html +10 -10
  10. package/SVF-doxygen/html/html/Annotator_8h_source.html +3 -3
  11. package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +4 -4
  12. package/SVF-doxygen/html/html/BDDExpr_8h_source.html +5 -5
  13. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +2 -2
  14. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +5 -5
  15. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +5 -5
  16. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +3 -3
  18. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +6 -6
  19. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +3 -3
  20. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +4 -4
  21. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +2 -2
  22. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +28 -28
  23. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +5 -5
  24. package/SVF-doxygen/html/html/CHG_8cpp.html +3 -3
  25. package/SVF-doxygen/html/html/CHG_8cpp_source.html +13 -13
  26. package/SVF-doxygen/html/html/CHG_8h_source.html +6 -6
  27. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +2 -2
  28. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +24 -24
  29. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +4 -4
  30. package/SVF-doxygen/html/html/CSC_8cpp_source.html +3 -3
  31. package/SVF-doxygen/html/html/CSC_8h_source.html +4 -4
  32. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +7 -7
  33. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +6 -6
  34. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
  35. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +2 -2
  36. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -4
  37. package/SVF-doxygen/html/html/ConsG_8h_source.html +5 -5
  38. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +12 -12
  39. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +6 -6
  40. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +2 -2
  42. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +5 -5
  43. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +30 -30
  44. package/SVF-doxygen/html/html/DCHG_8h_source.html +15 -15
  45. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
  46. package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
  47. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
  48. package/SVF-doxygen/html/html/DDAPass_8h_source.html +6 -6
  49. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
  50. package/SVF-doxygen/html/html/DDAStat_8h_source.html +3 -3
  51. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +11 -11
  52. package/SVF-doxygen/html/html/DPItem_8h_source.html +5 -5
  53. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +7 -7
  54. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +11 -11
  55. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +8 -8
  56. package/SVF-doxygen/html/html/ExeState_8h_source.html +4 -4
  57. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +23 -23
  58. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +7 -7
  59. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +4 -4
  60. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +7 -7
  62. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +5 -5
  63. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
  64. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +3 -3
  65. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +12 -12
  66. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +5 -5
  67. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +10 -10
  68. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +4 -4
  69. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +3 -3
  70. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +5 -5
  71. package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +1 -1
  72. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +1 -1
  73. package/SVF-doxygen/html/html/Graph2Json_8cpp.html +1 -0
  74. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -4
  75. package/SVF-doxygen/html/html/Graph2Json_8h_source.html +5 -5
  76. package/SVF-doxygen/html/html/GraphPrinter_8h.html +1 -0
  77. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +6 -7
  78. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +13 -13
  79. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +3 -3
  80. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +5 -5
  81. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +7 -7
  82. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  83. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +11 -11
  84. package/SVF-doxygen/html/html/ICFG_8h_source.html +5 -5
  85. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +14 -14
  86. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +5 -5
  87. package/SVF-doxygen/html/html/IRGraph_8h_source.html +6 -6
  88. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +15 -15
  89. package/SVF-doxygen/html/html/LLVMModule_8h.html +2 -1
  90. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +46 -45
  91. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +40 -40
  92. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +39 -39
  93. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  94. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
  95. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +9 -9
  96. package/SVF-doxygen/html/html/LocationSet_8h_source.html +6 -6
  97. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +17 -17
  98. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +11 -11
  99. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +15 -15
  100. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +7 -7
  101. package/SVF-doxygen/html/html/MHP_8cpp.html +3 -3
  102. package/SVF-doxygen/html/html/MHP_8cpp_source.html +26 -26
  103. package/SVF-doxygen/html/html/MHP_8h_source.html +10 -10
  104. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +7 -7
  105. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +9 -9
  106. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +9 -9
  107. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +22 -22
  108. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +12 -12
  109. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +6 -6
  110. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  111. package/SVF-doxygen/html/html/MTA_8cpp_source.html +12 -12
  112. package/SVF-doxygen/html/html/MTA_8h_source.html +8 -8
  113. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +2 -2
  114. package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
  115. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +19 -19
  116. package/SVF-doxygen/html/html/MemRegion_8h_source.html +9 -9
  117. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +17 -17
  118. package/SVF-doxygen/html/html/MemSSA_8h_source.html +9 -9
  119. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +3 -3
  120. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
  121. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +3 -3
  122. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +3 -3
  123. package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
  124. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  125. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  126. package/SVF-doxygen/html/html/PCG_8cpp_source.html +11 -11
  127. package/SVF-doxygen/html/html/PCG_8h_source.html +6 -6
  128. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +6 -6
  129. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +7 -7
  130. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -8
  131. package/SVF-doxygen/html/html/PTAStat_8h_source.html +2 -2
  132. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +19 -19
  133. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +12 -12
  134. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +3 -3
  135. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  136. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +17 -18
  137. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +17 -17
  138. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +22 -22
  139. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +9 -9
  140. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +3 -3
  141. package/SVF-doxygen/html/html/PointsTo_8h_source.html +3 -3
  142. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +7 -7
  143. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
  144. package/SVF-doxygen/html/html/SCC_8h_source.html +3 -3
  145. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +79 -42
  146. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +44 -42
  147. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +22 -25
  148. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +73 -74
  149. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  150. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  151. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +3 -3
  152. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +5 -5
  153. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +4 -4
  154. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -8
  155. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +4 -4
  156. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +4 -4
  157. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +46 -54
  158. package/SVF-doxygen/html/html/SVFG_8h_source.html +46 -48
  159. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +54 -54
  160. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +49 -49
  161. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +4 -4
  162. package/SVF-doxygen/html/html/SVFIR_8h_source.html +9 -9
  163. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  164. package/SVF-doxygen/html/html/SVFModule_8h_source.html +6 -6
  165. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +3 -3
  166. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +9 -9
  167. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +15 -15
  168. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +23 -23
  169. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  170. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +8 -8
  171. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +4 -4
  172. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
  173. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +6 -5
  174. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +7 -7
  175. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -2
  176. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +5 -5
  177. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +4 -4
  178. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  179. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +2 -2
  180. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +38 -38
  181. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +6 -6
  182. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +17 -17
  183. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +10 -10
  184. package/SVF-doxygen/html/html/TCT_8cpp_source.html +21 -21
  185. package/SVF-doxygen/html/html/TCT_8h_source.html +20 -20
  186. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +7 -7
  187. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +11 -10
  188. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +9 -9
  189. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +6 -6
  190. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
  191. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
  192. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +27 -27
  193. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +5 -5
  194. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -8
  195. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +117 -120
  196. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
  197. package/SVF-doxygen/html/html/VFGNode_8h_source.html +8 -8
  198. package/SVF-doxygen/html/html/VFG_8cpp_source.html +10 -10
  199. package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
  200. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
  201. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +12 -12
  202. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +6 -6
  203. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +2 -2
  204. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +10 -10
  205. package/SVF-doxygen/html/html/WPAPass_8h_source.html +8 -8
  206. package/SVF-doxygen/html/html/WPASolver_8h_source.html +3 -3
  207. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  208. package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
  209. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
  210. package/SVF-doxygen/html/html/cfl_8cpp.html +2 -2
  211. package/SVF-doxygen/html/html/cfl_8cpp_source.html +2 -2
  212. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  213. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  214. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +2 -2
  215. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
  216. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +2 -2
  218. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +21 -21
  220. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
  221. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +3 -3
  222. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +10 -10
  223. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +5 -5
  224. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +7 -7
  225. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
  226. package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +3 -2
  228. package/SVF-doxygen/html/html/classSVF_1_1BDDExprManager.html +3 -3
  229. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +34 -35
  230. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  231. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
  232. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  233. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +2 -2
  234. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +4 -4
  235. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +2 -2
  236. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +2 -2
  237. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +2 -2
  238. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +53 -53
  239. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +9 -9
  240. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +4 -4
  241. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  242. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
  243. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +6 -6
  244. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +6 -6
  245. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
  246. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  247. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
  248. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +1 -1
  249. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +1 -1
  251. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
  253. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +4 -4
  254. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +2 -2
  255. package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
  256. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +5 -5
  257. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
  258. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +25 -25
  260. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  261. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
  262. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +4 -4
  263. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +2 -2
  264. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  265. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  266. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  267. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +67 -67
  268. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
  269. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +8 -8
  270. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
  271. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +28 -28
  272. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
  273. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +4 -4
  274. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  275. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  276. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +1 -1
  277. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +11 -11
  278. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +1 -1
  279. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +51 -51
  280. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  281. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +11 -11
  282. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +30 -30
  283. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +8 -8
  284. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +23 -23
  285. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +36 -36
  286. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  287. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  288. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +3 -3
  289. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +3 -3
  290. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +3 -3
  291. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +3 -3
  292. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +3 -3
  293. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  294. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  295. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +2 -2
  296. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  297. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  298. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +6 -6
  299. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +19 -19
  300. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
  301. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  302. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +15 -16
  303. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +21 -21
  304. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +3 -3
  305. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
  307. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +2 -2
  308. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  309. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  310. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +4 -4
  312. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +4 -4
  313. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
  314. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
  315. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  316. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +3 -3
  317. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +132 -132
  318. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  319. package/SVF-doxygen/html/html/classSVF_1_1LoadMU-members.html +1 -1
  320. package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +6 -6
  321. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  322. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +2 -2
  323. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +11 -11
  324. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +69 -69
  325. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +21 -21
  326. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +55 -55
  327. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +42 -42
  328. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  329. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  330. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +14 -14
  331. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +16 -16
  332. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +44 -44
  333. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +24 -24
  334. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +7 -7
  335. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  336. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +42 -42
  337. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
  338. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
  339. package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -3
  340. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
  341. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +9 -9
  342. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +2 -2
  343. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
  344. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  345. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +2 -2
  346. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  347. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +25 -25
  348. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
  349. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +7 -7
  350. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +7 -7
  351. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
  352. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +3 -3
  353. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +9 -9
  354. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +42 -42
  355. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +3 -3
  356. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
  357. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +6 -6
  358. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +6 -6
  359. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  360. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +33 -33
  361. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +6 -6
  362. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +9 -9
  363. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +11 -11
  364. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  365. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
  366. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +4 -4
  367. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
  368. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  369. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
  370. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +4 -4
  371. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +31 -31
  372. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +154 -155
  373. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +132 -166
  374. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +8 -8
  375. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +177 -178
  376. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +17 -19
  377. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +6 -6
  378. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +4 -4
  379. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +1 -1
  380. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +147 -147
  381. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +3 -3
  382. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +5 -5
  383. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
  384. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
  385. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +7 -7
  386. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI-members.html +1 -1
  387. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +7 -7
  388. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +11 -11
  389. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  390. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +9 -9
  391. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +1 -1
  392. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -1
  393. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  394. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI-members.html +1 -1
  395. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +6 -6
  396. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  397. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +2 -2
  398. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +63 -63
  399. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +24 -24
  400. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +50 -50
  401. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  402. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  403. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI-members.html +2 -2
  404. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +20 -20
  405. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +23 -23
  406. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  407. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
  408. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
  409. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
  410. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +4 -4
  411. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +34 -34
  412. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  413. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  414. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +11 -11
  415. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
  416. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  417. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  418. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
  419. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +28 -28
  420. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +7 -7
  421. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +2 -2
  422. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +2 -2
  423. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +8 -8
  424. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +2 -2
  425. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
  426. package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +7 -8
  427. package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
  428. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  429. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  430. package/SVF-doxygen/html/html/functions_f.html +14 -17
  431. package/SVF-doxygen/html/html/functions_func_f.html +0 -3
  432. package/SVF-doxygen/html/html/functions_func_g.html +6 -6
  433. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  434. package/SVF-doxygen/html/html/functions_g.html +6 -6
  435. package/SVF-doxygen/html/html/functions_i.html +4 -4
  436. package/SVF-doxygen/html/html/functions_n.html +4 -4
  437. package/SVF-doxygen/html/html/functions_o.html +3 -3
  438. package/SVF-doxygen/html/html/functions_p.html +7 -7
  439. package/SVF-doxygen/html/html/functions_s.html +13 -13
  440. package/SVF-doxygen/html/html/functions_t.html +5 -5
  441. package/SVF-doxygen/html/html/functions_type_t.html +2 -2
  442. package/SVF-doxygen/html/html/functions_v.html +6 -6
  443. package/SVF-doxygen/html/html/functions_vars_i.html +1 -1
  444. package/SVF-doxygen/html/html/globals_l.html +3 -0
  445. package/SVF-doxygen/html/html/globals_s.html +3 -3
  446. package/SVF-doxygen/html/html/globals_type.html +6 -0
  447. package/SVF-doxygen/html/html/globals_u.html +5 -2
  448. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  449. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  450. package/SVF-doxygen/html/html/namespaceSVF.html +119 -191
  451. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +96 -96
  452. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +44 -44
  453. package/SVF-doxygen/html/html/namespacemembers_l.html +0 -3
  454. package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
  455. package/SVF-doxygen/html/html/namespacemembers_t.html +0 -3
  456. package/SVF-doxygen/html/html/namespacemembers_type.html +0 -12
  457. package/SVF-doxygen/html/html/namespacemembers_u.html +0 -3
  458. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  459. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  460. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  461. package/SVF-doxygen/html/html/search/all_13.js +9 -10
  462. package/SVF-doxygen/html/html/search/all_14.js +7 -8
  463. package/SVF-doxygen/html/html/search/all_15.js +2 -2
  464. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  465. package/SVF-doxygen/html/html/search/all_6.js +0 -1
  466. package/SVF-doxygen/html/html/search/all_7.js +2 -2
  467. package/SVF-doxygen/html/html/search/all_9.js +2 -2
  468. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  469. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  470. package/SVF-doxygen/html/html/search/all_e.js +4 -4
  471. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  472. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  473. package/SVF-doxygen/html/html/search/functions_5.js +0 -1
  474. package/SVF-doxygen/html/html/search/functions_6.js +2 -2
  475. package/SVF-doxygen/html/html/search/typedefs_11.js +0 -1
  476. package/SVF-doxygen/html/html/search/typedefs_12.js +1 -2
  477. package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
  478. package/SVF-doxygen/html/html/search/typedefs_b.js +1 -1
  479. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  480. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  481. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  482. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  483. package/SVF-doxygen/html/html/structSVF_1_1Hash.html +3 -3
  484. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  485. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +5 -5
  486. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +3 -3
  487. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  488. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  489. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  490. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  491. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
  492. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +24 -24
  493. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +4 -4
  494. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
  495. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  496. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
  497. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
  498. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  499. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  500. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  501. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +1 -1
  502. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +1 -1
  503. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  504. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  505. package/SVF-doxygen/html/html/structstd_1_1hash_3_01llvm_1_1SparseBitVector_3_01N_01_4_01_4.html +3 -3
  506. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  507. package/SVF-doxygen/html/html/svf-ex_8cpp.html +5 -5
  508. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
  509. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  510. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  511. package/include/Graphs/GraphPrinter.h +1 -0
  512. package/include/Graphs/SVFG.h +0 -5
  513. package/include/MSSA/MSSAMuChi.h +2 -2
  514. package/include/SABER/SaberCheckerAPI.h +1 -1
  515. package/include/SVF-FE/BasicTypes.h +4 -0
  516. package/include/SVF-FE/LLVMModule.h +1 -0
  517. package/include/Util/BasicTypes.h +0 -4
  518. package/include/Util/ExtAPI.h +2 -3
  519. package/include/Util/SVFBasicTypes.h +0 -2
  520. package/include/Util/ThreadAPI.h +2 -2
  521. package/lib/Graphs/SVFG.cpp +0 -22
  522. package/lib/Graphs/VFG.cpp +1 -1
  523. package/lib/MemoryModel/PointerAnalysisImpl.cpp +14 -16
  524. package/lib/SABER/SaberSVFGBuilder.cpp +2 -2
  525. package/lib/SVF-FE/Graph2Json.cpp +3 -1
  526. package/lib/SVF-FE/LLVMUtil.cpp +2 -0
  527. package/lib/Util/ThreadAPI.cpp +4 -4
  528. package/package.json +1 -1
@@ -77,7 +77,7 @@ $(function() {
77
77
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a29cab1426b0000bd87c026ab8c9979c0"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a29cab1426b0000bd87c026ab8c9979c0">SVF::GenericGraph::getTotalEdgeNum</a></div><div class="ttdeci">u32_t getTotalEdgeNum() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00418">GenericGraph.h:418</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1GenericNode_html_a50219c203fb5a8a44fe22428699f26e7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a50219c203fb5a8a44fe22428699f26e7">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">const_iterator OutEdgeBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00218">GenericGraph.h:218</a></div></div>
79
79
  <div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00158">CFLGraph.h:158</a></div></div>
80
- <div class="ttc" id="namespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set&lt; Key, Compare, Allocator &gt; OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00113">SVFBasicTypes.h:113</a></div></div>
80
+ <div class="ttc" id="namespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set&lt; Key, Compare, Allocator &gt; OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00112">SVFBasicTypes.h:112</a></div></div>
81
81
  <div class="ttc" id="structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4_html_aec39caaa600f638af5e5fa57ae0b6706"><div class="ttname"><a href="structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html#aec39caaa600f638af5e5fa57ae0b6706">llvm::GraphTraits&lt; SVF::GenericNode&lt; NodeTy, EdgeTy &gt; * &gt;::NodeType</a></div><div class="ttdeci">NodeTy NodeType</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00454">GenericGraph.h:454</a></div></div>
82
82
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00414">GenericGraph.h:414</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00182">GenericGraph.h:182</a></div></div>
@@ -110,12 +110,12 @@ $(function() {
110
110
  <div class="ttc" id="structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_html_a1ab57d3e398711e732bf040aeabd5657"><div class="ttname"><a href="structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html#a1ab57d3e398711e732bf040aeabd5657">llvm::GraphTraits&lt; SVF::GenericGraph&lt; NodeTy, EdgeTy &gt; *&gt;::GenericGraphTy</a></div><div class="ttdeci">SVF::GenericGraph&lt; NodeTy, EdgeTy &gt; GenericGraphTy</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00530">GenericGraph.h:530</a></div></div>
111
111
  <div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
112
112
  <div class="ttc" id="classSVF_1_1GenericNode_html_a391e996d695b114530120723da1d003e"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">SVF::GenericNode::getNodeKind</a></div><div class="ttdeci">GNodeK getNodeKind() const</div><div class="ttdoc">Get node kind. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00171">GenericGraph.h:171</a></div></div>
113
- <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00110">SVFBasicTypes.h:110</a></div></div>
113
+ <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00109">SVFBasicTypes.h:109</a></div></div>
114
114
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00339">GenericGraph.h:339</a></div></div>
115
115
  <div class="ttc" id="classSVF_1_1GenericNode_html_a2f5471985dfe62bc9ded830a693ab153"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVF::GenericNode::iterator</a></div><div class="ttdeci">GEdgeSetTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00139">GenericGraph.h:139</a></div></div>
116
116
  <div class="ttc" id="structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4_html_ab82e90ae6e1f1b39e5c33f9c9a6cfcf9"><div class="ttname"><a href="structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html#ab82e90ae6e1f1b39e5c33f9c9a6cfcf9">llvm::GraphTraits&lt; Inverse&lt; SVF::GenericNode&lt; NodeTy, EdgeTy &gt; *&gt; &gt;::child_end</a></div><div class="ttdeci">static ChildIteratorType child_end(const NodeType *N)</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00514">GenericGraph.h:514</a></div></div>
117
117
  <div class="ttc" id="classSVF_1_1GenericNode_html_ace88b6c7561f61f747ff08f61e2c18bc"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ace88b6c7561f61f747ff08f61e2c18bc">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">const_iterator OutEdgeEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00222">GenericGraph.h:222</a></div></div>
118
- <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
118
+ <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
119
119
  <div class="ttc" id="classSVF_1_1GenericEdge_html"><div class="ttname"><a href="classSVF_1_1GenericEdge.html">SVF::GenericEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00042">GenericGraph.h:42</a></div></div>
120
120
  <div class="ttc" id="classSVF_1_1GenericEdge_html_a6764973569c281d483afab17a75cb4dc"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#a6764973569c281d483afab17a75cb4dc">SVF::GenericEdge::GenericEdge</a></div><div class="ttdeci">GenericEdge(NodeTy *s, NodeTy *d, GEdgeFlag k)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00061">GenericGraph.h:61</a></div></div>
121
121
  <div class="ttc" id="classSVF_1_1GenericNode_html_a458c626543431b4314f5f4f532eb51de"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a458c626543431b4314f5f4f532eb51de">SVF::GenericNode::EdgeType</a></div><div class="ttdeci">EdgeTy EdgeType</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00133">GenericGraph.h:133</a></div></div>
@@ -183,11 +183,11 @@ $(function() {
183
183
  <div class="ttc" id="structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4_html_afc3616d9a36f7b26473f9211484e3e6c"><div class="ttname"><a href="structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html#afc3616d9a36f7b26473f9211484e3e6c">llvm::GraphTraits&lt; SVF::GenericNode&lt; NodeTy, EdgeTy &gt; * &gt;::EdgeType</a></div><div class="ttdeci">EdgeTy EdgeType</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00455">GenericGraph.h:455</a></div></div>
184
184
  <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#l00206">GenericGraph.h:206</a></div></div>
185
185
  <div class="ttc" id="classSVF_1_1GenericNode_html_aa7be9ff204bf85bc3bf2fa4e078fcab2"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa7be9ff204bf85bc3bf2fa4e078fcab2">SVF::GenericNode::directInEdgeEnd</a></div><div class="ttdeci">virtual const_iterator directInEdgeEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00267">GenericGraph.h:267</a></div></div>
186
- <div class="ttc" id="namespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00088">SVFBasicTypes.h:88</a></div></div>
186
+ <div class="ttc" id="namespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00087">SVFBasicTypes.h:87</a></div></div>
187
187
  <div class="ttc" id="structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4_html_ac79255244b6b59876be19266ff214afb"><div class="ttname"><a href="structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html#ac79255244b6b59876be19266ff214afb">llvm::GraphTraits&lt; Inverse&lt; SVF::GenericNode&lt; NodeTy, EdgeTy &gt; *&gt; &gt;::getNodeID</a></div><div class="ttdeci">static unsigned getNodeID(const NodeType *N)</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00519">GenericGraph.h:519</a></div></div>
188
188
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00387">GenericGraph.h:387</a></div></div>
189
189
  <div class="ttc" id="classSVF_1_1GenericEdge_html_af1c2fd4b5ef1d7b7605572bf2489c298"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">SVF::GenericEdge::EdgeKindMaskBits</a></div><div class="ttdeci">static constexpr unsigned char EdgeKindMaskBits</div><div class="ttdoc">We use the lower 8 bits to denote edge kind. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00119">GenericGraph.h:119</a></div></div>
190
- <div class="ttc" id="namespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00087">SVFBasicTypes.h:87</a></div></div>
190
+ <div class="ttc" id="namespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
191
191
  <div class="ttc" id="classSVF_1_1GenericEdge_html_a0e8736f88ee75da025d874f92328ca71"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">SVF::GenericEdge::src</a></div><div class="ttdeci">NodeTy * src</div><div class="ttdoc">source node </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00055">GenericGraph.h:55</a></div></div>
192
192
  <div class="ttc" id="classSVF_1_1GenericGraph_html_aa5837cddbbd63c5a8ac5725bcecb192f"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#aa5837cddbbd63c5a8ac5725bcecb192f">SVF::GenericGraph::GenericGraph</a></div><div class="ttdeci">GenericGraph()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00343">GenericGraph.h:343</a></div></div>
193
193
  <div class="ttc" id="structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4_html_ab7627f7ad0d6ea6dbe89132031ef732c"><div class="ttname"><a href="structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html#ab7627f7ad0d6ea6dbe89132031ef732c">llvm::GraphTraits&lt; Inverse&lt; SVF::GenericNode&lt; NodeTy, EdgeTy &gt; *&gt; &gt;::NodeType</a></div><div class="ttdeci">NodeTy NodeType</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00494">GenericGraph.h:494</a></div></div>
@@ -71,7 +71,7 @@ $(function() {
71
71
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a05ea6937c8afaa20914ec47c10452a95"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a05ea6937c8afaa20914ec47c10452a95">SVF::GrammarBase::rawProductions</a></div><div class="ttdeci">Map&lt; Symbol, Productions &gt; rawProductions</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00059">CFLGrammar.h:59</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1GrammarBase_html_ac17dee194615cc9f7861375f033aaa8e"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ac17dee194615cc9f7861375f033aaa8e">SVF::GrammarBase::totalSymbol</a></div><div class="ttdeci">Symbol totalSymbol</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00058">CFLGrammar.h:58</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1GrammarBase_html_ada4387512b2e18555b4c309580d4dba6"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ada4387512b2e18555b4c309580d4dba6">SVF::GrammarBase::str2Sym</a></div><div class="ttdeci">Symbol str2Sym(std::string str) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00035">CFLGrammar.cpp:35</a></div></div>
74
- <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00110">SVFBasicTypes.h:110</a></div></div>
74
+ <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00109">SVFBasicTypes.h:109</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a48c738beefe73184f7aed8b1ed5afb53"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a48c738beefe73184f7aed8b1ed5afb53">SVF::GrammarBase::startSymbol</a></div><div class="ttdeci">Symbol startSymbol</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00057">CFLGrammar.h:57</a></div></div>
76
76
  <div class="ttc" id="classSVF_1_1GrammarBase_html_af9e8e7bf4239a04002ff41885f9e5e91"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#af9e8e7bf4239a04002ff41885f9e5e91">SVF::GrammarBase::terminals</a></div><div class="ttdeci">Map&lt; std::string, Symbol &gt; terminals</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00042">CFLGrammar.h:42</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1GrammarBase_html"><div class="ttname"><a href="classSVF_1_1GrammarBase.html">SVF::GrammarBase</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00036">CFLGrammar.h:36</a></div></div>
@@ -68,7 +68,7 @@ $(function() {
68
68
  <div class="contents">
69
69
  <a href="GrammarBuilder_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">//===----- CFGNormalizer.h -- CFL Alias Analysis Client--------------//</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"> * GrammarBuilder.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: April 26, 2022</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Pei Xu</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLGrammar_8h.html">CFL/CFLGrammar.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLGraph_8h.html">Graphs/CFLGraph.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></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;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1GrammarBuilder.html"> 52</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1GrammarBuilder.html">GrammarBuilder</a></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;{</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704"> 55</a></span>&#160; std::string <a class="code" href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">fileName</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa"> 56</a></span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html">GrammarBase</a> *<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1GrammarBuilder.html#a423310118382fa2d5afe169a290a355b"> 58</a></span>&#160; <a class="code" href="classSVF_1_1GrammarBuilder.html#a423310118382fa2d5afe169a290a355b">GrammarBuilder</a>(std::string fileName): fileName(fileName), grammar(nullptr)</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; grammar = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GrammarBase.html">GrammarBase</a>();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html">GrammarBase</a>* <a class="code" href="classSVF_1_1GrammarBuilder.html#a630c90978d5fe576ca180cf04ee562f6">build</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html">GrammarBase</a>* <a class="code" href="classSVF_1_1GrammarBuilder.html#a630c90978d5fe576ca180cf04ee562f6">build</a>(<a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;std::string, SVF::CFLGraph::Symbol&gt;</a> *preMap);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;};</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="comment">// SVF</span></div><div class="ttc" id="classSVF_1_1GrammarBuilder_html_a7b81810150ce896801e4e6a831ab98aa"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">SVF::GrammarBuilder::grammar</a></div><div class="ttdeci">GrammarBase * grammar</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00056">GrammarBuilder.h:56</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1GrammarBuilder_html"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html">SVF::GrammarBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00052">GrammarBuilder.h:52</a></div></div>
71
- <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00110">SVFBasicTypes.h:110</a></div></div>
71
+ <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00109">SVFBasicTypes.h:109</a></div></div>
72
72
  <div class="ttc" id="CFLGrammar_8h_html"><div class="ttname"><a href="CFLGrammar_8h.html">CFLGrammar.h</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1GrammarBase_html"><div class="ttname"><a href="classSVF_1_1GrammarBase.html">SVF::GrammarBase</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00036">CFLGrammar.h:36</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1GrammarBuilder_html_aa0f5135a232adc1ca42d4f51a3c70704"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">SVF::GrammarBuilder::fileName</a></div><div class="ttdeci">std::string fileName</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00055">GrammarBuilder.h:55</a></div></div>
@@ -72,6 +72,7 @@ $(function() {
72
72
  <code>#include &lt;fstream&gt;</code><br />
73
73
  <code>#include &lt;string&gt;</code><br />
74
74
  <code>#include &lt;sstream&gt;</code><br />
75
+ <code>#include &lt;llvm/Support/ToolOutputFile.h&gt;</code><br />
75
76
  </div>
76
77
  <p><a href="Graph2Json_8cpp_source.html">Go to the source code of this file.</a></p>
77
78
  </div><!-- contents -->
@@ -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="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</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"><a class="line" href="classSVF_1_1ICFGPrinter.html#ab51ba2c92e69d3688b0a185b4b1d69cb"> 13</a></span>&#160;ICFGPrinter::ICFGPrinter() {}</div><div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGPrinter.html#a5ef3cd8fa4c2dd99289725f1aa781721"> 14</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="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</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="l00017"></a><span class="lineno"> 17</span>&#160; std::error_code err;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespaceSVF.html#acde6a1d496f1b655088ccbe023820277">ToolOutputFile</a> F(filename.c_str(), err, llvm::sys::fs::OF_None);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</span>&#160; F.os().clear_error();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; llvm::json::Array root_array;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</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="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</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="l00031"></a><span class="lineno"> 31</span>&#160; llvm::json::Object ICFGNode_Obj;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;ICFG_ID&quot;</span>] = id;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</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="l00034"></a><span class="lineno"> 34</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="l00035"></a><span class="lineno"> 35</span>&#160; {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</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="l00037"></a><span class="lineno"> 37</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="l00038"></a><span class="lineno"> 38</span>&#160; llvm::json::Array PAGEdge_array;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">//dump pag edges</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFStmtList::iterator it = edges.begin(),</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; eit = edges.end(); it != eit; ++it)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; llvm::json::Object edge_obj;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</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="l00047"></a><span class="lineno"> 47</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="l00048"></a><span class="lineno"> 48</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="l00049"></a><span class="lineno"> 49</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="l00050"></a><span class="lineno"> 50</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="l00051"></a><span class="lineno"> 51</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="l00052"></a><span class="lineno"> 52</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="l00053"></a><span class="lineno"> 53</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="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</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="l00056"></a><span class="lineno"> 56</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="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</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="l00059"></a><span class="lineno"> 59</span>&#160; PAGEdge_array.push_back(edge_value);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> PagEdge_value = llvm::json::Array{PAGEdge_array};</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;SVFIR Edges&quot;</span>] = PagEdge_value;</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="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="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">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="l00067"></a><span class="lineno"> 67</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">true</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">false</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</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="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</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="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</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="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#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">true</span>;</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; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">false</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</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="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</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="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</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="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</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="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</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="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</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="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">else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</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="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; llvm::json::Array ICFGEdges_array;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</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="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *sit;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; llvm::json::Object ICFGEdge_obj;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallCFGEdge&gt;(edge))</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; <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="l00105"></a><span class="lineno"> 105</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="l00106"></a><span class="lineno"> 106</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="l00107"></a><span class="lineno"> 107</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="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetCFGEdge&gt;(edge))</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; <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="l00112"></a><span class="lineno"> 112</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="l00113"></a><span class="lineno"> 113</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="l00114"></a><span class="lineno"> 114</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="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraCFGEdge&gt;(edge))</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; <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="l00119"></a><span class="lineno"> 119</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="l00120"></a><span class="lineno"> 120</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="l00121"></a><span class="lineno"> 121</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="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</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="l00124"></a><span class="lineno"> 124</span>&#160; ICFGEdges_array.push_back(ICFGEdge_Val);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</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="l00127"></a><span class="lineno"> 127</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;ICFGEdges&quot;</span>] = ICFGEdges_val;</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> ICFGNode_val = llvm::json::Object{ICFGNode_Obj};</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; root_array.push_back(ICFGNode_val);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</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="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespaceSVF.html#af83f5c5c68cdb80576cdc1d62c01b207">llvm::json::operator&lt;&lt;</a>(F.os(),root_value);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; F.os().close();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (!F.os().has_error())</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</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="l00138"></a><span class="lineno"> 138</span>&#160; F.keep();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;}</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGPrinter.html#a2c022308f9c7ae3bf33d9482fcb51e03"> 143</a></span>&#160;std::string ICFGPrinter::getICFGKind(<span class="keyword">const</span> <span class="keywordtype">int</span> kind)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">switch</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">case</span> ICFGNode::IntraBlock:</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;IntraBlock&quot;</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">case</span> ICFGNode::FunEntryBlock:</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FunEntryBlock&quot;</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">case</span> ICFGNode::FunExitBlock:</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FunExitBlock&quot;</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">case</span> ICFGNode::FunCallBlock:</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FunCallBlock&quot;</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">case</span> ICFGNode::FunRetBlock:</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FunRetBlock&quot;</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</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;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGPrinter.html#a54f0729c869b5061b5fb9fe056c326ef"> 168</a></span>&#160;std::string ICFGPrinter::getPAGNodeKindValue(<span class="keywordtype">int</span> kind)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;{</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">switch</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">case</span> (SVFVar::ValNode):</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ValNode&quot;</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">case</span> SVFVar::ObjNode:</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ObjNode&quot;</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">case</span> SVFVar::RetNode:</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;RetNode&quot;</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">case</span> SVFVar::VarargNode:</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;VarargNode&quot;</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">case</span> SVFVar::GepValNode:</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;GepValNode&quot;</span>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">case</span> SVFVar::GepObjNode:</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;GepObjNode&quot;</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">case</span> SVFVar::FIObjNode:</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;FIObjNode&quot;</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">case</span> SVFVar::DummyValNode:</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;DummyValNode&quot;</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">case</span> SVFVar::DummyObjNode:</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;DummyObjNode&quot;</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</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;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGPrinter.html#a38aa67e172459a72d8fc92a6172903be"> 203</a></span>&#160;std::string ICFGPrinter::getPAGEdgeKindValue(<span class="keywordtype">int</span> kind)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;{</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">switch</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">case</span> (SVFStmt::Addr):</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Addr&quot;</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Copy):</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Copy&quot;</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Store):</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Store&quot;</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Load):</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Load&quot;</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Call):</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Call&quot;</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Ret):</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Ret&quot;</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Gep):</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;NormalGep&quot;</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">case</span> (SVFStmt::ThreadFork):</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ThreadFork&quot;</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">case</span> (SVFStmt::ThreadJoin):</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ThreadJoin&quot;</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">case</span> (SVFStmt::Cmp):</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Cmp&quot;</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">case</span> (SVFStmt::BinaryOp):</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;BinaryOp&quot;</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">case</span> (SVFStmt::UnaryOp):</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;UnaryOp&quot;</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</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 F(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; F.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>(F.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; F.os().close();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (!F.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; F.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> (SVFStmt::Addr):</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>
@@ -88,21 +88,20 @@ $(function() {
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#l00089">GenericGraph.h:89</a></div></div>
90
90
  <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
- <div class="ttc" id="namespaceSVF_html_acde6a1d496f1b655088ccbe023820277"><div class="ttname"><a href="namespaceSVF.html#acde6a1d496f1b655088ccbe023820277">SVF::ToolOutputFile</a></div><div class="ttdeci">llvm::ToolOutputFile ToolOutputFile</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00097">BasicTypes.h:97</a></div></div>
92
91
  <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#l00085">GenericGraph.h:85</a></div></div>
93
92
  <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>
94
93
  <div class="ttc" id="classSVF_1_1GepStmt_html_a959a9c95d25f90fd7acc8e6e36056b56"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a959a9c95d25f90fd7acc8e6e36056b56">SVF::GepStmt::getConstantFieldIdx</a></div><div class="ttdeci">s32_t getConstantFieldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00459">SVFStatements.h:459</a></div></div>
95
94
  <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
95
  <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
96
  <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#l00336">BasicTypes.h:336</a></div></div>
97
+ <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#l00332">BasicTypes.h:332</a></div></div>
99
98
  <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#l00165">GenericGraph.h:165</a></div></div>
100
99
  <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
100
  <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
101
  <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
102
  <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#l00206">GenericGraph.h:206</a></div></div>
104
103
  <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#l00075">BasicTypes.h:75</a></div></div>
104
+ <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#l00073">BasicTypes.h:73</a></div></div>
106
105
  <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
106
  <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>
108
107
  <div class="ttc" id="classSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00047">SVFStatements.h:47</a></div></div>