svf-tools 1.0.340 → 1.0.344

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 (487) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +6 -6
  3. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
  4. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +9 -9
  5. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  6. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  7. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  8. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +7 -7
  9. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
  10. package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
  11. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +7 -7
  12. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +3 -3
  13. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +3 -3
  15. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  16. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
  17. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +6 -6
  18. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
  19. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +6 -6
  20. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +11 -11
  21. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +15 -15
  22. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/ICFGNode_8h.html +7 -7
  24. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +69 -69
  25. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +64 -61
  27. package/SVF-doxygen/html/html/ICFG_8h_source.html +46 -46
  28. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
  29. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +6 -6
  30. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +5 -5
  34. package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
  35. package/SVF-doxygen/html/html/MHP_8h_source.html +6 -6
  36. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +9 -9
  37. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
  39. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +27 -27
  40. package/SVF-doxygen/html/html/MemRegion_8h_source.html +18 -18
  41. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
  42. package/SVF-doxygen/html/html/MemSSA_8h_source.html +12 -12
  43. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -2
  45. package/SVF-doxygen/html/html/Options_8h_source.html +2 -2
  46. package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
  47. package/SVF-doxygen/html/html/PCG_8h_source.html +4 -4
  48. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +10 -10
  49. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +17 -17
  50. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +5 -5
  51. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
  52. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
  54. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
  55. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -4
  56. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
  57. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +3 -3
  58. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +17 -17
  59. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -2
  60. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +9 -9
  61. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +32 -32
  62. package/SVF-doxygen/html/html/SVFG_8h_source.html +27 -27
  63. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +3 -3
  64. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +13 -13
  65. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +9 -9
  66. package/SVF-doxygen/html/html/SVFIR_8h_source.html +32 -32
  67. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +20 -20
  68. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +14 -14
  69. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -8
  70. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +5 -5
  71. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +3 -3
  72. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +7 -7
  73. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  74. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +4 -4
  75. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
  76. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +2 -2
  77. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +16 -15
  78. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  79. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +30 -28
  80. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +44 -42
  81. package/SVF-doxygen/html/html/TCT_8h_source.html +3 -3
  82. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +15 -15
  83. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +20 -20
  84. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +5 -5
  85. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +2 -2
  86. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
  87. package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
  88. package/SVF-doxygen/html/html/VFG_8cpp_source.html +20 -20
  89. package/SVF-doxygen/html/html/VFG_8h_source.html +19 -19
  90. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  91. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
  92. package/SVF-doxygen/html/html/annotated.html +17 -17
  93. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +3 -3
  94. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +23 -23
  95. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +3 -3
  96. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +23 -23
  97. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +3 -3
  98. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +22 -22
  99. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +3 -3
  100. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +24 -24
  101. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +3 -3
  102. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient-members.html +1 -1
  103. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +7 -7
  104. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +12 -12
  105. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +47 -47
  106. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +12 -12
  107. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +34 -34
  108. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +12 -12
  109. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +32 -32
  110. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +12 -12
  111. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +32 -32
  112. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +12 -12
  113. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +32 -32
  114. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +12 -12
  115. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +34 -34
  116. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +12 -12
  117. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +32 -32
  118. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +12 -12
  119. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +32 -32
  120. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +12 -12
  121. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +38 -38
  122. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +6 -5
  123. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +15 -12
  125. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +5 -3
  126. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +2 -2
  127. package/SVF-doxygen/html/html/classSVF_1_1CallCHI-members.html +3 -3
  128. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +22 -22
  129. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +4 -4
  130. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +158 -0
  131. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +852 -0
  132. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.png +0 -0
  133. package/SVF-doxygen/html/html/classSVF_1_1CallMU-members.html +3 -3
  134. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +22 -22
  135. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +4 -4
  136. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +31 -31
  137. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +6 -5
  138. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  139. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +12 -12
  140. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +31 -31
  141. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +3 -3
  142. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +14 -14
  143. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +60 -60
  144. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +3 -3
  145. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver-members.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +16 -16
  147. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +21 -21
  148. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +51 -51
  149. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
  150. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
  151. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +3 -3
  152. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +12 -12
  153. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +33 -33
  154. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
  155. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +20 -20
  156. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +11 -11
  157. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +52 -52
  158. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +12 -12
  159. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +43 -43
  160. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +12 -12
  161. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +33 -33
  162. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis-members.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +21 -21
  164. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +3 -3
  165. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +19 -19
  166. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +3 -3
  167. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +18 -18
  168. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +4 -2
  169. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode-members.html +150 -0
  170. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +618 -0
  171. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.png +0 -0
  172. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +4 -2
  173. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode-members.html +149 -0
  174. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +624 -0
  175. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.png +0 -0
  176. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient-members.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +12 -12
  178. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +3 -3
  179. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  180. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
  181. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +4 -4
  182. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -3
  183. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +3 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode-members.html +144 -0
  185. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +413 -0
  186. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.png +0 -0
  187. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +3 -3
  188. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +11 -11
  189. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +22 -22
  190. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +224 -217
  191. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder-members.html +4 -4
  192. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +74 -71
  193. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +2 -2
  194. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +10 -10
  195. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.png +0 -0
  196. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +11 -11
  197. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +30 -30
  198. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +3 -3
  199. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +21 -21
  200. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +51 -51
  201. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode-members.html +144 -0
  202. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +399 -0
  203. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.png +0 -0
  204. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +2 -2
  205. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +23 -23
  206. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +2 -2
  207. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +21 -21
  208. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +7 -3
  209. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +2 -2
  210. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +21 -21
  211. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +51 -51
  212. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode-members.html +146 -0
  213. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +494 -0
  214. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.png +0 -0
  215. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  216. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
  217. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +61 -61
  218. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +4 -4
  219. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +14 -14
  221. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator-members.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +11 -11
  223. package/SVF-doxygen/html/html/classSVF_1_1MHP-members.html +1 -1
  224. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +22 -22
  225. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +24 -24
  226. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +198 -198
  227. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
  228. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +6 -6
  229. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
  230. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +23 -22
  231. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +70 -47
  232. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +10 -10
  233. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +77 -77
  234. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +4 -4
  235. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +2 -2
  236. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +4 -4
  237. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +17 -15
  238. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +141 -106
  239. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +3 -3
  240. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
  241. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +27 -27
  242. package/SVF-doxygen/html/html/classSVF_1_1Options.html +26 -26
  243. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  244. package/SVF-doxygen/html/html/classSVF_1_1PCG-members.html +1 -1
  245. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +13 -13
  246. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  247. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph-members.html +15 -15
  248. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +118 -118
  249. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +3 -3
  250. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +32 -32
  251. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +5 -5
  252. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +6 -6
  253. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +12 -12
  254. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +109 -109
  255. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice-members.html +2 -2
  256. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +18 -18
  257. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +5 -3
  258. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +2 -2
  259. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +153 -0
  260. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +696 -0
  261. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.png +0 -0
  262. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +4 -4
  263. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +30 -30
  264. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
  265. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +24 -24
  266. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +160 -160
  267. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  268. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +24 -24
  269. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +76 -76
  270. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +19 -19
  271. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +133 -133
  272. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
  273. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +62 -62
  274. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
  275. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI-members.html +4 -4
  276. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +20 -20
  277. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +1 -1
  278. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +13 -13
  279. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +1 -1
  280. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +7 -7
  281. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +24 -24
  282. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +12 -12
  283. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +32 -32
  284. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +1 -1
  285. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +11 -11
  286. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +17 -16
  287. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +16 -16
  288. package/SVF-doxygen/html/html/classSVF_1_1TCT-members.html +1 -1
  289. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +22 -22
  290. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +4 -4
  291. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +19 -19
  292. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +4 -4
  293. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +19 -19
  294. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph-members.html +40 -40
  295. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +220 -220
  296. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +10 -10
  297. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +3 -3
  298. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +11 -11
  299. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +3 -3
  300. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +11 -11
  301. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +12 -12
  302. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +42 -42
  303. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +3 -3
  304. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +10 -9
  305. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +9 -9
  307. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +96 -96
  308. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +3 -3
  309. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +4 -4
  310. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +12 -12
  311. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +37 -37
  312. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
  313. package/SVF-doxygen/html/html/classes.html +16 -16
  314. package/SVF-doxygen/html/html/functions_a.html +59 -59
  315. package/SVF-doxygen/html/html/functions_c.html +74 -71
  316. package/SVF-doxygen/html/html/functions_eval_c.html +5 -2
  317. package/SVF-doxygen/html/html/functions_f.html +14 -14
  318. package/SVF-doxygen/html/html/functions_func.html +56 -56
  319. package/SVF-doxygen/html/html/functions_func_c.html +28 -28
  320. package/SVF-doxygen/html/html/functions_func_f.html +6 -6
  321. package/SVF-doxygen/html/html/functions_func_g.html +88 -88
  322. package/SVF-doxygen/html/html/functions_func_h.html +17 -17
  323. package/SVF-doxygen/html/html/functions_func_i.html +31 -29
  324. package/SVF-doxygen/html/html/functions_func_m.html +1 -1
  325. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  326. package/SVF-doxygen/html/html/functions_func_r.html +6 -6
  327. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  328. package/SVF-doxygen/html/html/functions_func_t.html +7 -7
  329. package/SVF-doxygen/html/html/functions_func_u.html +3 -3
  330. package/SVF-doxygen/html/html/functions_g.html +88 -88
  331. package/SVF-doxygen/html/html/functions_h.html +16 -16
  332. package/SVF-doxygen/html/html/functions_i.html +37 -35
  333. package/SVF-doxygen/html/html/functions_m.html +2 -2
  334. package/SVF-doxygen/html/html/functions_n.html +3 -3
  335. package/SVF-doxygen/html/html/functions_o.html +10 -10
  336. package/SVF-doxygen/html/html/functions_p.html +21 -30
  337. package/SVF-doxygen/html/html/functions_r.html +6 -6
  338. package/SVF-doxygen/html/html/functions_s.html +15 -14
  339. package/SVF-doxygen/html/html/functions_t.html +13 -15
  340. package/SVF-doxygen/html/html/functions_type.html +1 -1
  341. package/SVF-doxygen/html/html/functions_type_c.html +24 -24
  342. package/SVF-doxygen/html/html/functions_type_f.html +3 -3
  343. package/SVF-doxygen/html/html/functions_type_i.html +2 -2
  344. package/SVF-doxygen/html/html/functions_type_p.html +1 -1
  345. package/SVF-doxygen/html/html/functions_type_s.html +1 -1
  346. package/SVF-doxygen/html/html/functions_type_v.html +2 -2
  347. package/SVF-doxygen/html/html/functions_u.html +3 -3
  348. package/SVF-doxygen/html/html/functions_v.html +5 -5
  349. package/SVF-doxygen/html/html/functions_vars_a.html +2 -2
  350. package/SVF-doxygen/html/html/functions_vars_c.html +11 -11
  351. package/SVF-doxygen/html/html/functions_vars_f.html +5 -5
  352. package/SVF-doxygen/html/html/functions_vars_g.html +1 -1
  353. package/SVF-doxygen/html/html/functions_vars_i.html +3 -3
  354. package/SVF-doxygen/html/html/functions_vars_p.html +0 -3
  355. package/SVF-doxygen/html/html/functions_vars_r.html +1 -1
  356. package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
  357. package/SVF-doxygen/html/html/functions_w.html +5 -9
  358. package/SVF-doxygen/html/html/hierarchy.html +7 -7
  359. package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
  360. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +11 -11
  361. package/SVF-doxygen/html/html/search/all_1.js +58 -58
  362. package/SVF-doxygen/html/html/search/all_10.js +13 -14
  363. package/SVF-doxygen/html/html/search/all_12.js +5 -5
  364. package/SVF-doxygen/html/html/search/all_13.js +9 -8
  365. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  366. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  367. package/SVF-doxygen/html/html/search/all_16.js +3 -3
  368. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  369. package/SVF-doxygen/html/html/search/all_3.js +37 -35
  370. package/SVF-doxygen/html/html/search/all_6.js +12 -12
  371. package/SVF-doxygen/html/html/search/all_7.js +62 -61
  372. package/SVF-doxygen/html/html/search/all_8.js +17 -17
  373. package/SVF-doxygen/html/html/search/all_9.js +19 -19
  374. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  375. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  376. package/SVF-doxygen/html/html/search/all_e.js +1 -1
  377. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  378. package/SVF-doxygen/html/html/search/classes_2.js +1 -1
  379. package/SVF-doxygen/html/html/search/classes_5.js +2 -2
  380. package/SVF-doxygen/html/html/search/classes_6.js +1 -1
  381. package/SVF-doxygen/html/html/search/classes_8.js +2 -2
  382. package/SVF-doxygen/html/html/search/classes_e.js +1 -1
  383. package/SVF-doxygen/html/html/search/enumvalues_2.js +2 -1
  384. package/SVF-doxygen/html/html/search/functions_0.js +55 -55
  385. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  386. package/SVF-doxygen/html/html/search/functions_11.js +4 -4
  387. package/SVF-doxygen/html/html/search/functions_12.js +1 -1
  388. package/SVF-doxygen/html/html/search/functions_2.js +10 -10
  389. package/SVF-doxygen/html/html/search/functions_5.js +4 -4
  390. package/SVF-doxygen/html/html/search/functions_6.js +61 -61
  391. package/SVF-doxygen/html/html/search/functions_7.js +17 -17
  392. package/SVF-doxygen/html/html/search/functions_8.js +16 -16
  393. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  394. package/SVF-doxygen/html/html/search/functions_e.js +2 -2
  395. package/SVF-doxygen/html/html/search/functions_f.js +4 -4
  396. package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
  397. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  398. package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
  399. package/SVF-doxygen/html/html/search/typedefs_2.js +21 -21
  400. package/SVF-doxygen/html/html/search/typedefs_5.js +3 -3
  401. package/SVF-doxygen/html/html/search/typedefs_8.js +2 -2
  402. package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
  403. package/SVF-doxygen/html/html/search/variables_1.js +2 -2
  404. package/SVF-doxygen/html/html/search/variables_10.js +0 -1
  405. package/SVF-doxygen/html/html/search/variables_12.js +1 -1
  406. package/SVF-doxygen/html/html/search/variables_13.js +1 -0
  407. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  408. package/SVF-doxygen/html/html/search/variables_3.js +4 -4
  409. package/SVF-doxygen/html/html/search/variables_6.js +5 -5
  410. package/SVF-doxygen/html/html/search/variables_7.js +1 -1
  411. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  412. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  413. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +23 -23
  414. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  415. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  416. package/include/DDA/ContextDDA.h +3 -3
  417. package/include/DDA/DDAClient.h +2 -2
  418. package/include/DDA/DDAVFSolver.h +2 -2
  419. package/include/DDA/FlowDDA.h +2 -2
  420. package/include/Graphs/ICFG.h +32 -32
  421. package/include/Graphs/ICFGNode.h +33 -33
  422. package/include/Graphs/ICFGStat.h +11 -11
  423. package/include/Graphs/PTACallGraph.h +19 -19
  424. package/include/Graphs/SVFG.h +16 -16
  425. package/include/Graphs/SVFGNode.h +14 -14
  426. package/include/Graphs/SVFGOPT.h +1 -1
  427. package/include/Graphs/ThreadCallGraph.h +25 -25
  428. package/include/Graphs/VFG.h +10 -10
  429. package/include/Graphs/VFGNode.h +8 -8
  430. package/include/MSSA/MSSAMuChi.h +6 -6
  431. package/include/MSSA/MemRegion.h +24 -24
  432. package/include/MSSA/MemSSA.h +10 -10
  433. package/include/MTA/LockResultValidator.h +2 -2
  434. package/include/MTA/MHP.h +4 -4
  435. package/include/MTA/PCG.h +1 -1
  436. package/include/MTA/TCT.h +2 -2
  437. package/include/MemoryModel/PointerAnalysis.h +12 -12
  438. package/include/MemoryModel/SVFIR.h +22 -22
  439. package/include/MemoryModel/SVFStatements.h +11 -11
  440. package/include/MemoryModel/SymbolTableInfo.h +15 -9
  441. package/include/SABER/LeakChecker.h +4 -4
  442. package/include/SABER/ProgSlice.h +2 -2
  443. package/include/SABER/SaberCheckerAPI.h +4 -4
  444. package/include/SABER/SaberSVFGBuilder.h +1 -1
  445. package/include/SABER/SrcSnkDDA.h +1 -1
  446. package/include/SVF-FE/ICFGBuilder.h +4 -4
  447. package/include/SVF-FE/SVFIRBuilder.h +5 -5
  448. package/include/Util/Options.h +1 -1
  449. package/lib/DDA/ContextDDA.cpp +3 -3
  450. package/lib/DDA/DDAClient.cpp +1 -1
  451. package/lib/DDA/FlowDDA.cpp +1 -1
  452. package/lib/Graphs/ICFG.cpp +88 -71
  453. package/lib/Graphs/PTACallGraph.cpp +5 -5
  454. package/lib/Graphs/SVFG.cpp +7 -7
  455. package/lib/Graphs/ThreadCallGraph.cpp +6 -6
  456. package/lib/Graphs/VFG.cpp +6 -6
  457. package/lib/MSSA/MemRegion.cpp +17 -17
  458. package/lib/MSSA/MemSSA.cpp +3 -3
  459. package/lib/MTA/LockAnalysis.cpp +4 -4
  460. package/lib/MTA/MHP.cpp +5 -5
  461. package/lib/MTA/MTAResultValidator.cpp +1 -1
  462. package/lib/MTA/PCG.cpp +1 -1
  463. package/lib/MemoryModel/PointerAnalysis.cpp +10 -10
  464. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  465. package/lib/MemoryModel/SVFIR.cpp +5 -5
  466. package/lib/MemoryModel/SVFStatements.cpp +53 -49
  467. package/lib/MemoryModel/SVFVariables.cpp +10 -10
  468. package/lib/MemoryModel/SymbolTableInfo.cpp +12 -7
  469. package/lib/SABER/DoubleFreeChecker.cpp +1 -1
  470. package/lib/SABER/FileChecker.cpp +2 -2
  471. package/lib/SABER/LeakChecker.cpp +8 -8
  472. package/lib/SABER/ProgSlice.cpp +2 -2
  473. package/lib/SVF-FE/CallGraphBuilder.cpp +4 -4
  474. package/lib/SVF-FE/Graph2Json.cpp +5 -5
  475. package/lib/SVF-FE/ICFGBuilder.cpp +31 -25
  476. package/lib/SVF-FE/SVFIRBuilder.cpp +8 -8
  477. package/lib/SVF-FE/SymbolTableBuilder.cpp +2 -2
  478. package/lib/Util/Options.cpp +3 -3
  479. package/lib/Util/PTAStat.cpp +3 -3
  480. package/lib/Util/SVFUtil.cpp +2 -0
  481. package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
  482. package/lib/WPA/Andersen.cpp +3 -3
  483. package/lib/WPA/FlowSensitive.cpp +2 -2
  484. package/lib/WPA/TypeAnalysis.cpp +1 -1
  485. package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
  486. package/lib/WPA/WPAPass.cpp +4 -4
  487. package/package.json +1 -1
@@ -162,8 +162,8 @@ public:
162
162
 
163
163
  /// Get callsite ID and get returnsiteID from SVFGEdge
164
164
  //@{
165
- const CallBlockNode* getCallSite(const SVFGEdge* edge) const;
166
- const CallBlockNode* getRetSite(const SVFGEdge* edge) const;
165
+ const CallICFGNode* getCallSite(const SVFGEdge* edge) const;
166
+ const CallICFGNode* getRetSite(const SVFGEdge* edge) const;
167
167
  //@}
168
168
 
169
169
  /// Condition operations
@@ -105,7 +105,7 @@ public:
105
105
  {
106
106
  return getType(SVFUtil::getCallee(inst)) == CK_ALLOC;
107
107
  }
108
- inline bool isMemAlloc(const CallBlockNode* cs) const
108
+ inline bool isMemAlloc(const CallICFGNode* cs) const
109
109
  {
110
110
  return isMemAlloc(cs->getCallSite());
111
111
  }
@@ -121,7 +121,7 @@ public:
121
121
  {
122
122
  return getType(SVFUtil::getCallee(inst)) == CK_FREE;
123
123
  }
124
- inline bool isMemDealloc(const CallBlockNode* cs) const
124
+ inline bool isMemDealloc(const CallICFGNode* cs) const
125
125
  {
126
126
  return isMemDealloc(cs->getCallSite());
127
127
  }
@@ -137,7 +137,7 @@ public:
137
137
  {
138
138
  return getType(SVFUtil::getCallee(inst)) == CK_FOPEN;
139
139
  }
140
- inline bool isFOpen(const CallBlockNode* cs) const
140
+ inline bool isFOpen(const CallICFGNode* cs) const
141
141
  {
142
142
  return isFOpen(cs->getCallSite());
143
143
  }
@@ -153,7 +153,7 @@ public:
153
153
  {
154
154
  return getType(SVFUtil::getCallee(inst)) == CK_FCLOSE;
155
155
  }
156
- inline bool isFClose(const CallBlockNode* cs) const
156
+ inline bool isFClose(const CallICFGNode* cs) const
157
157
  {
158
158
  return isFClose(cs->getCallSite());
159
159
  }
@@ -57,7 +57,7 @@ public:
57
57
  }
58
58
 
59
59
  /// Add ActualParmVFGNode
60
- inline void addActualParmVFGNode(const PAGNode* pagNode, const CallBlockNode* cs)
60
+ inline void addActualParmVFGNode(const PAGNode* pagNode, const CallICFGNode* cs)
61
61
  {
62
62
  svfg->addActualParmVFGNode(pagNode, cs);
63
63
  }
@@ -53,7 +53,7 @@ public:
53
53
  typedef CxtDPItem DPIm;
54
54
  typedef Set<DPIm> DPImSet; ///< dpitem set
55
55
  typedef Map<const SVFGNode*, DPImSet> SVFGNodeToDPItemsMap; ///< map a SVFGNode to its visited dpitems
56
- typedef Set<const CallBlockNode*> CallSiteSet;
56
+ typedef Set<const CallICFGNode*> CallSiteSet;
57
57
  typedef NodeBS SVFGNodeBS;
58
58
  typedef ProgSlice::VFWorkList WorkList;
59
59
 
@@ -69,7 +69,7 @@ private:
69
69
  void connectGlobalToProgEntry(SVFModule* svfModule);
70
70
 
71
71
  /// Add/Get an inter block ICFGNode
72
- InterBlockNode* getOrAddInterBlockICFGNode(const Instruction* inst);
72
+ InterICFGNode* getOrAddInterBlockICFGNode(const Instruction* inst);
73
73
 
74
74
  /// Add/Get a basic block ICFGNode
75
75
  inline ICFGNode* getOrAddBlockICFGNode(const Instruction* inst)
@@ -84,18 +84,18 @@ private:
84
84
  void addICFGInterEdges(const Instruction* cs, const SVFFunction* callee);
85
85
 
86
86
  /// Add a call node
87
- inline CallBlockNode* getOrAddCallICFGNode(const Instruction* cs)
87
+ inline CallICFGNode* getOrAddCallICFGNode(const Instruction* cs)
88
88
  {
89
89
  return icfg->getCallBlockNode(cs);
90
90
  }
91
91
  /// Add a return node
92
- inline RetBlockNode* getOrAddRetICFGNode(const Instruction* cs)
92
+ inline RetICFGNode* getOrAddRetICFGNode(const Instruction* cs)
93
93
  {
94
94
  return icfg->getRetBlockNode(cs);
95
95
  }
96
96
 
97
97
  /// Add and get IntraBlock ICFGNode
98
- IntraBlockNode* getOrAddIntraBlockICFGNode(const Instruction* inst)
98
+ IntraICFGNode* getOrAddIntraBlockICFGNode(const Instruction* inst)
99
99
  {
100
100
  return icfg->getIntraBlockNode(inst);
101
101
  }
@@ -343,7 +343,7 @@ public:
343
343
  /// Add Store edge
344
344
  inline StoreStmt* addStoreEdge(NodeID src, NodeID dst)
345
345
  {
346
- IntraBlockNode* node;
346
+ IntraICFGNode* node;
347
347
  if(const Instruction* inst = SVFUtil::dyn_cast<Instruction>(curVal))
348
348
  node = pag->getICFG()->getIntraBlockNode(inst);
349
349
  else
@@ -353,14 +353,14 @@ public:
353
353
  return edge;
354
354
  }
355
355
  /// Add Call edge
356
- inline CallPE* addCallEdge(NodeID src, NodeID dst, const CallBlockNode* cs)
356
+ inline CallPE* addCallEdge(NodeID src, NodeID dst, const CallICFGNode* cs)
357
357
  {
358
358
  CallPE *edge = pag->addCallPE(src, dst, cs);
359
359
  setCurrentBBAndValueForPAGEdge(edge);
360
360
  return edge;
361
361
  }
362
362
  /// Add Return edge
363
- inline RetPE* addRetEdge(NodeID src, NodeID dst, const CallBlockNode* cs)
363
+ inline RetPE* addRetEdge(NodeID src, NodeID dst, const CallICFGNode* cs)
364
364
  {
365
365
  RetPE *edge = pag->addRetPE(src, dst, cs);
366
366
  setCurrentBBAndValueForPAGEdge(edge);
@@ -388,14 +388,14 @@ public:
388
388
  return edge;
389
389
  }
390
390
  /// Add Thread fork edge for parameter passing
391
- inline TDForkPE* addThreadForkEdge(NodeID src, NodeID dst, const CallBlockNode* cs)
391
+ inline TDForkPE* addThreadForkEdge(NodeID src, NodeID dst, const CallICFGNode* cs)
392
392
  {
393
393
  TDForkPE *edge = pag->addThreadForkPE(src, dst, cs);
394
394
  setCurrentBBAndValueForPAGEdge(edge);
395
395
  return edge;
396
396
  }
397
397
  /// Add Thread join edge for parameter passing
398
- inline TDJoinPE* addThreadJoinEdge(NodeID src, NodeID dst, const CallBlockNode* cs)
398
+ inline TDJoinPE* addThreadJoinEdge(NodeID src, NodeID dst, const CallICFGNode* cs)
399
399
  {
400
400
  TDJoinPE *edge = pag->addThreadJoinPE(src, dst, cs);
401
401
  setCurrentBBAndValueForPAGEdge(edge);
@@ -131,7 +131,7 @@ public:
131
131
  static const llvm::cl::opt<bool> PStat;
132
132
  static const llvm::cl::opt<unsigned> StatBudget;
133
133
  static const llvm::cl::opt<bool> PAGDotGraph;
134
- static const llvm::cl::opt<bool> PAGDotGraphShorter;
134
+ static const llvm::cl::opt<bool> ShowSVFIRValue;
135
135
  static const llvm::cl::opt<bool> DumpICFG;
136
136
  static const llvm::cl::opt<bool> CallGraphDotGraph;
137
137
  static const llvm::cl::opt<bool> PAGPrint;
@@ -164,7 +164,7 @@ CxtPtSet ContextDDA::processGepPts(const GepSVFGNode* gep, const CxtPtSet& srcPt
164
164
  return tmpDstPts;
165
165
  }
166
166
 
167
- bool ContextDDA::testIndCallReachability(CxtLocDPItem& dpm, const SVFFunction* callee, const CallBlockNode* cs)
167
+ bool ContextDDA::testIndCallReachability(CxtLocDPItem& dpm, const SVFFunction* callee, const CallICFGNode* cs)
168
168
  {
169
169
  if(getPAG()->isIndirectCallSites(cs))
170
170
  {
@@ -194,7 +194,7 @@ CallSiteID ContextDDA::getCSIDAtCall(CxtLocDPItem&, const SVFGEdge* edge)
194
194
  else
195
195
  svfg_csId = SVFUtil::cast<CallIndSVFGEdge>(edge)->getCallSiteId();
196
196
 
197
- const CallBlockNode* cbn = getSVFG()->getCallSite(svfg_csId);
197
+ const CallICFGNode* cbn = getSVFG()->getCallSite(svfg_csId);
198
198
  const SVFFunction* callee = edge->getDstNode()->getFun();
199
199
 
200
200
  if(getPTACallGraph()->hasCallSiteID(cbn,callee))
@@ -218,7 +218,7 @@ CallSiteID ContextDDA::getCSIDAtRet(CxtLocDPItem&, const SVFGEdge* edge)
218
218
  else
219
219
  svfg_csId = SVFUtil::cast<RetIndSVFGEdge>(edge)->getCallSiteId();
220
220
 
221
- const CallBlockNode* cbn = getSVFG()->getCallSite(svfg_csId);
221
+ const CallICFGNode* cbn = getSVFG()->getCallSite(svfg_csId);
222
222
  const SVFFunction* callee = edge->getSrcNode()->getFun();
223
223
 
224
224
  if(getPTACallGraph()->hasCallSiteID(cbn,callee))
@@ -95,7 +95,7 @@ void FunptrDDAClient::performStat(PointerAnalysis* pta)
95
95
  const PointsTo& anderPts = ander->getPts(vtptr);
96
96
 
97
97
  PTACallGraph* callgraph = ander->getPTACallGraph();
98
- const CallBlockNode* cbn = nIter->second;
98
+ const CallICFGNode* cbn = nIter->second;
99
99
 
100
100
  if(!callgraph->hasIndCSCallees(cbn))
101
101
  {
@@ -59,7 +59,7 @@ void FlowDDA::handleOutOfBudgetDpm(const LocDPItem& dpm)
59
59
  bool FlowDDA::testIndCallReachability(LocDPItem&, const SVFFunction* callee, CallSiteID csId)
60
60
  {
61
61
 
62
- const CallBlockNode* cbn = getSVFG()->getCallSite(csId);
62
+ const CallICFGNode* cbn = getSVFG()->getCallSite(csId);
63
63
 
64
64
  if(getPAG()->isIndirectCallSites(cbn))
65
65
  {
@@ -38,7 +38,7 @@ using namespace SVF;
38
38
  using namespace SVFUtil;
39
39
 
40
40
 
41
- FunEntryBlockNode::FunEntryBlockNode(NodeID id, const SVFFunction* f) : InterBlockNode(id, FunEntryBlock)
41
+ FunEntryICFGNode::FunEntryICFGNode(NodeID id, const SVFFunction* f) : InterICFGNode(id, FunEntryBlock)
42
42
  {
43
43
  fun = f;
44
44
  // if function is implemented
@@ -47,7 +47,7 @@ FunEntryBlockNode::FunEntryBlockNode(NodeID id, const SVFFunction* f) : InterBlo
47
47
  }
48
48
  }
49
49
 
50
- FunExitBlockNode::FunExitBlockNode(NodeID id, const SVFFunction* f) : InterBlockNode(id, FunExitBlock), fun(f), formalRet(nullptr)
50
+ FunExitICFGNode::FunExitICFGNode(NodeID id, const SVFFunction* f) : InterICFGNode(id, FunExitBlock), fun(f), formalRet(nullptr)
51
51
  {
52
52
  fun = f;
53
53
  // if function is implemented
@@ -61,7 +61,7 @@ FunExitBlockNode::FunExitBlockNode(NodeID id, const SVFFunction* f) : InterBlock
61
61
  const std::string ICFGNode::toString() const {
62
62
  std::string str;
63
63
  raw_string_ostream rawstr(str);
64
- rawstr << "ICFGNode ID: " << getId();
64
+ rawstr << "ICFGNode" << getId();
65
65
  return rawstr.str();
66
66
  }
67
67
 
@@ -69,68 +69,80 @@ void ICFGNode::dump() const {
69
69
  outs() << this->toString() << "\n";
70
70
  }
71
71
 
72
- const std::string GlobalBlockNode::toString() const {
72
+ const std::string GlobalICFGNode::toString() const {
73
73
  std::string str;
74
74
  raw_string_ostream rawstr(str);
75
- rawstr << "GlobalBlockNode ID: " << getId();
75
+ rawstr << "GlobalICFGNode" << getId();
76
+ for (const SVFStmt *stmt : getSVFStmts())
77
+ rawstr << "\n" << stmt->toString();
76
78
  return rawstr.str();
77
79
  }
78
80
 
79
81
 
80
- const std::string IntraBlockNode::toString() const {
82
+ const std::string IntraICFGNode::toString() const {
81
83
  std::string str;
82
84
  raw_string_ostream rawstr(str);
83
- rawstr << "IntraBlockNode ID: " << getId();
84
- rawstr << value2String(getInst()) << " {fun: " << getFun()->getName() << "}";
85
+ rawstr << "IntraICFGNode" << getId();
86
+ rawstr << " {fun: " << getFun()->getName() << getSourceLoc(getInst()) << "}";
87
+ for (const SVFStmt *stmt : getSVFStmts())
88
+ rawstr << "\n" << stmt->toString();
89
+ if(getSVFStmts().empty())
90
+ rawstr << "\n" << value2String(getInst());
85
91
  return rawstr.str();
86
92
  }
87
93
 
88
94
 
89
- const std::string FunEntryBlockNode::toString() const {
95
+ const std::string FunEntryICFGNode::toString() const {
90
96
  std::string str;
91
97
  raw_string_ostream rawstr(str);
92
- rawstr << "FunEntryBlockNode ID: " << getId();
93
- if (isExtCall(getFun()))
94
- rawstr << " Entry(" << ")\n";
95
- else
96
- rawstr << " Entry(" << getSourceLoc(getFun()->getLLVMFun()) << ")\n";
97
- rawstr << " {fun: " << getFun()->getName() << "}";
98
+ rawstr << "FunEntryICFGNode" << getId();
99
+ rawstr << " {fun: " << getFun()->getName();
100
+ if (isExtCall(getFun())==false)
101
+ rawstr << getSourceLoc(getFun()->getLLVMFun());
102
+ rawstr << "}";
103
+ for (const SVFStmt *stmt : getSVFStmts())
104
+ rawstr << "\n" << stmt->toString();
98
105
  return rawstr.str();
99
106
  }
100
107
 
101
- const std::string FunExitBlockNode::toString() const {
108
+ const std::string FunExitICFGNode::toString() const {
102
109
  std::string str;
103
110
  raw_string_ostream rawstr(str);
104
- rawstr << "FunExitBlockNode ID: " << getId();
105
- if (isExtCall(getFun()))
106
- rawstr << " Exit(" << ")\n";
107
- else
108
- rawstr << " Exit(" << getSourceLoc(getFunExitBB(getFun()->getLLVMFun())->getFirstNonPHI()) << ")\n";
109
- rawstr << " {fun: " << getFun()->getName() << "}";
111
+ rawstr << "FunExitICFGNode" << getId();
112
+ rawstr << " {fun: " << getFun()->getName();
113
+ if (isExtCall(getFun())==false)
114
+ rawstr << getSourceLoc(getFunExitBB(getFun()->getLLVMFun())->getFirstNonPHI());
115
+ rawstr << "}";
116
+ for (const SVFStmt *stmt : getSVFStmts())
117
+ rawstr << "\n" << stmt->toString();
110
118
  return rawstr.str();
111
119
  }
112
120
 
113
121
 
114
- const std::string CallBlockNode::toString() const {
122
+ const std::string CallICFGNode::toString() const {
115
123
  std::string str;
116
124
  raw_string_ostream rawstr(str);
117
- rawstr << "CallBlockNode ID: " << getId();
118
- rawstr << value2String(getCallSite()) << " {fun: " << getFun()->getName() << "}";
125
+ rawstr << "CallICFGNode" << getId();
126
+ rawstr << " {fun: " << getFun()->getName() << getSourceLoc(getCallSite()) << "}";
127
+ for (const SVFStmt *stmt : getSVFStmts())
128
+ rawstr << "\n" << stmt->toString();
119
129
  return rawstr.str();
120
130
  }
121
131
 
122
- const std::string RetBlockNode::toString() const {
132
+ const std::string RetICFGNode::toString() const {
123
133
  std::string str;
124
134
  raw_string_ostream rawstr(str);
125
- rawstr << "RetBlockNode ID: " << getId();
126
- rawstr << value2String(getCallSite()) << " {fun: " << getFun()->getName() << "}";
135
+ rawstr << "RetICFGNode" << getId();
136
+ rawstr << " {fun: " << getFun()->getName() << getSourceLoc(getCallSite()) << "}";
137
+ for (const SVFStmt *stmt : getSVFStmts())
138
+ rawstr << "\n" << stmt->toString();
127
139
  return rawstr.str();
128
140
  }
129
141
 
130
142
  const std::string ICFGEdge::toString() const {
131
143
  std::string str;
132
144
  raw_string_ostream rawstr(str);
133
- rawstr << "ICFGEdge: [" << getDstID() << "<--" << getSrcID() << "]\t";
145
+ rawstr << "ICFGEdge: [ICFGNode" << getDstID() << " <-- ICFGNode" << getSrcID() << "]\t";
134
146
  return rawstr.str();
135
147
  }
136
148
 
@@ -138,9 +150,9 @@ const std::string IntraCFGEdge::toString() const {
138
150
  std::string str;
139
151
  raw_string_ostream rawstr(str);
140
152
  if(brCondition.first == nullptr)
141
- rawstr << "IntraCFGEdge: [" << getDstID() << "<--" << getSrcID() << "]\t";
153
+ rawstr << "IntraCFGEdge: [ICFGNode" << getDstID() << " <-- ICFGNode" << getSrcID() << "]\t";
142
154
  else
143
- rawstr << "IntraCFGEdge: [" << getDstID() << "<--" << getSrcID() << "] with condition (" << *brCondition.first << "==" << brCondition.second << ") \t";
155
+ rawstr << "IntraCFGEdge: [ICFGNode" << getDstID() << " <-- ICFGNode" << getSrcID() << "] with condition (" << *brCondition.first << "==" << brCondition.second << ") \t";
144
156
 
145
157
  return rawstr.str();
146
158
  }
@@ -148,16 +160,16 @@ const std::string IntraCFGEdge::toString() const {
148
160
  const std::string CallCFGEdge::toString() const {
149
161
  std::string str;
150
162
  raw_string_ostream rawstr(str);
151
- rawstr << "CallCFGEdge " << " [";
152
- rawstr << getDstID() << "<--" << getSrcID() << "]\t CallSite: " << *cs << "\t";
163
+ rawstr << "CallCFGEdge " << " [ICFGNode";
164
+ rawstr << getDstID() << " <-- ICFGNode" << getSrcID() << "]\t CallSite: " << *cs << "\t";
153
165
  return rawstr.str();
154
166
  }
155
167
 
156
168
  const std::string RetCFGEdge::toString() const {
157
169
  std::string str;
158
170
  raw_string_ostream rawstr(str);
159
- rawstr << "RetCFGEdge " << " [";
160
- rawstr << getDstID() << "<--" << getSrcID() << "]\t CallSite: " << *cs << "\t";
171
+ rawstr << "RetCFGEdge " << " [ICFGNode";
172
+ rawstr << getDstID() << " <-- ICFGNode" << getSrcID() << "]\t CallSite: " << *cs << "\t";
161
173
  return rawstr.str();
162
174
  }
163
175
 
@@ -172,7 +184,7 @@ const std::string RetCFGEdge::toString() const {
172
184
  ICFG::ICFG(): totalICFGNode(0)
173
185
  {
174
186
  DBOUT(DGENERAL, outs() << pasMsg("\tCreate ICFG ...\n"));
175
- globalBlockNode = new GlobalBlockNode(totalICFGNode++);
187
+ globalBlockNode = new GlobalICFGNode(totalICFGNode++);
176
188
  addICFGNode(globalBlockNode);
177
189
  }
178
190
 
@@ -194,51 +206,51 @@ ICFGNode* ICFG::getBlockICFGNode(const Instruction* inst)
194
206
  }
195
207
 
196
208
 
197
- CallBlockNode* ICFG::getCallBlockNode(const Instruction* inst)
209
+ CallICFGNode* ICFG::getCallBlockNode(const Instruction* inst)
198
210
  {
199
211
  if(SVFUtil::isCallSite(inst) ==false)
200
212
  outs() << *inst << "\n";
201
213
  assert(SVFUtil::isCallSite(inst) && "not a call instruction?");
202
214
  assert(SVFUtil::isNonInstricCallSite(inst) && "associating an intrinsic debug instruction with an ICFGNode!");
203
- CallBlockNode* node = getCallICFGNode(inst);
215
+ CallICFGNode* node = getCallICFGNode(inst);
204
216
  if(node==nullptr)
205
217
  node = addCallICFGNode(inst);
206
- assert (node!=nullptr && "no CallBlockNode for this instruction?");
218
+ assert (node!=nullptr && "no CallICFGNode for this instruction?");
207
219
  return node;
208
220
  }
209
221
 
210
- RetBlockNode* ICFG::getRetBlockNode(const Instruction* inst)
222
+ RetICFGNode* ICFG::getRetBlockNode(const Instruction* inst)
211
223
  {
212
224
  assert(SVFUtil::isCallSite(inst) && "not a call instruction?");
213
225
  assert(SVFUtil::isNonInstricCallSite(inst) && "associating an intrinsic debug instruction with an ICFGNode!");
214
- RetBlockNode* node = getRetICFGNode(inst);
226
+ RetICFGNode* node = getRetICFGNode(inst);
215
227
  if(node==nullptr)
216
228
  node = addRetICFGNode(inst);
217
- assert (node!=nullptr && "no RetBlockNode for this instruction?");
229
+ assert (node!=nullptr && "no RetICFGNode for this instruction?");
218
230
  return node;
219
231
  }
220
232
 
221
- IntraBlockNode* ICFG::getIntraBlockNode(const Instruction* inst)
233
+ IntraICFGNode* ICFG::getIntraBlockNode(const Instruction* inst)
222
234
  {
223
- IntraBlockNode* node = getIntraBlockICFGNode(inst);
235
+ IntraICFGNode* node = getIntraBlockICFGNode(inst);
224
236
  if(node==nullptr)
225
237
  node = addIntraBlockICFGNode(inst);
226
238
  return node;
227
239
  }
228
240
 
229
241
  /// Add a function entry node
230
- FunEntryBlockNode* ICFG::getFunEntryBlockNode(const SVFFunction* fun)
242
+ FunEntryICFGNode* ICFG::getFunEntryBlockNode(const SVFFunction* fun)
231
243
  {
232
- FunEntryBlockNode* b = getFunEntryICFGNode(fun);
244
+ FunEntryICFGNode* b = getFunEntryICFGNode(fun);
233
245
  if (b == nullptr)
234
246
  return addFunEntryICFGNode(fun);
235
247
  else
236
248
  return b;
237
249
  }
238
250
  /// Add a function exit node
239
- FunExitBlockNode* ICFG::getFunExitBlockNode(const SVFFunction* fun)
251
+ FunExitICFGNode* ICFG::getFunExitBlockNode(const SVFFunction* fun)
240
252
  {
241
- FunExitBlockNode* b = getFunExitICFGNode(fun);
253
+ FunExitICFGNode* b = getFunExitICFGNode(fun);
242
254
  if (b == nullptr)
243
255
  return addFunExitICFGNode(fun);
244
256
  else
@@ -417,22 +429,27 @@ void ICFG::updateCallGraph(PTACallGraph* callgraph)
417
429
  PTACallGraph::CallEdgeMap::const_iterator eiter = callgraph->getIndCallMap().end();
418
430
  for (; iter != eiter; iter++)
419
431
  {
420
- const CallBlockNode* callBlock = iter->first;
432
+ const CallICFGNode* callBlock = iter->first;
421
433
  const Instruction* cs = callBlock->getCallSite();
422
434
  assert(callBlock->isIndirectCall() && "this is not an indirect call?");
423
435
  const PTACallGraph::FunctionSet & functions = iter->second;
424
436
  for (PTACallGraph::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)
425
437
  {
426
438
  const SVFFunction* callee = *func_iter;
427
- CallBlockNode* CallBlockNode = getCallBlockNode(cs);
428
- if (!isExtCall(callee))
429
- {
430
- FunEntryBlockNode* calleeEntryNode = getFunEntryICFGNode(callee);
431
- addCallEdge(CallBlockNode, calleeEntryNode, cs);
432
- RetBlockNode* retBlockNode = getRetBlockNode(cs);
433
- FunExitBlockNode* calleeExitNode = getFunExitICFGNode(callee);
434
- addRetEdge(calleeExitNode, retBlockNode, cs);
435
- }
439
+ CallICFGNode* callBlockNode = getCallBlockNode(cs);
440
+ RetICFGNode* retBlockNode = getRetBlockNode(cs);
441
+ FunEntryICFGNode* calleeEntryNode = getFunEntryICFGNode(callee);
442
+ FunExitICFGNode* calleeExitNode = getFunExitICFGNode(callee);
443
+ addCallEdge(callBlockNode, calleeEntryNode, cs);
444
+ addRetEdge(calleeExitNode, retBlockNode, cs);
445
+
446
+ /// if this is an external function (no function body), connect calleeEntryNode to calleeExitNode
447
+ if (isExtCall(callee))
448
+ addIntraEdge(calleeEntryNode, calleeExitNode);
449
+
450
+ /// Remove callBlockNode to retBlockNode intraICFGEdge since we found at least one inter procedural edge
451
+ if(ICFGEdge* edge = hasIntraICFGEdge(callBlockNode,retBlockNode, ICFGEdge::IntraCF))
452
+ removeICFGEdge(edge);
436
453
  }
437
454
  }
438
455
  }
@@ -469,9 +486,9 @@ struct DOTGraphTraits<ICFG*> : public DOTGraphTraits<SVFIR*>
469
486
  std::string str;
470
487
  raw_string_ostream rawstr(str);
471
488
  rawstr << "NodeID: " << node->getId() << "\n";
472
- if (IntraBlockNode* bNode = SVFUtil::dyn_cast<IntraBlockNode>(node))
489
+ if (IntraICFGNode* bNode = SVFUtil::dyn_cast<IntraICFGNode>(node))
473
490
  {
474
- rawstr << "IntraBlockNode ID: " << bNode->getId() << " \t";
491
+ rawstr << "IntraICFGNode ID: " << bNode->getId() << " \t";
475
492
  SVFIR::SVFStmtList& edges = SVFIR::getPAG()->getSVFStmtList(bNode);
476
493
  if (edges.empty()) {
477
494
  rawstr << value2String(bNode->getInst()) << " \t";
@@ -484,23 +501,23 @@ struct DOTGraphTraits<ICFG*> : public DOTGraphTraits<SVFIR*>
484
501
  }
485
502
  rawstr << " {fun: " << bNode->getFun()->getName() << "}";
486
503
  }
487
- else if (FunEntryBlockNode* entry = SVFUtil::dyn_cast<FunEntryBlockNode>(node))
504
+ else if (FunEntryICFGNode* entry = SVFUtil::dyn_cast<FunEntryICFGNode>(node))
488
505
  {
489
506
  rawstr << entry->toString();
490
507
  }
491
- else if (FunExitBlockNode* exit = SVFUtil::dyn_cast<FunExitBlockNode>(node))
508
+ else if (FunExitICFGNode* exit = SVFUtil::dyn_cast<FunExitICFGNode>(node))
492
509
  {
493
510
  rawstr << exit->toString();
494
511
  }
495
- else if (CallBlockNode* call = SVFUtil::dyn_cast<CallBlockNode>(node))
512
+ else if (CallICFGNode* call = SVFUtil::dyn_cast<CallICFGNode>(node))
496
513
  {
497
514
  rawstr << call->toString();
498
515
  }
499
- else if (RetBlockNode* ret = SVFUtil::dyn_cast<RetBlockNode>(node))
516
+ else if (RetICFGNode* ret = SVFUtil::dyn_cast<RetICFGNode>(node))
500
517
  {
501
518
  rawstr << ret->toString();
502
519
  }
503
- else if (GlobalBlockNode* glob = SVFUtil::dyn_cast<GlobalBlockNode>(node) )
520
+ else if (GlobalICFGNode* glob = SVFUtil::dyn_cast<GlobalICFGNode>(node) )
504
521
  {
505
522
  SVFIR::SVFStmtList& edges = SVFIR::getPAG()->getSVFStmtList(glob);
506
523
  for (SVFIR::SVFStmtList::iterator it = edges.begin(), eit = edges.end(); it != eit; ++it)
@@ -520,27 +537,27 @@ struct DOTGraphTraits<ICFG*> : public DOTGraphTraits<SVFIR*>
520
537
  std::string str;
521
538
  raw_string_ostream rawstr(str);
522
539
 
523
- if(SVFUtil::isa<IntraBlockNode>(node))
540
+ if(SVFUtil::isa<IntraICFGNode>(node))
524
541
  {
525
542
  rawstr << "color=black";
526
543
  }
527
- else if(SVFUtil::isa<FunEntryBlockNode>(node))
544
+ else if(SVFUtil::isa<FunEntryICFGNode>(node))
528
545
  {
529
546
  rawstr << "color=yellow";
530
547
  }
531
- else if(SVFUtil::isa<FunExitBlockNode>(node))
548
+ else if(SVFUtil::isa<FunExitICFGNode>(node))
532
549
  {
533
550
  rawstr << "color=green";
534
551
  }
535
- else if(SVFUtil::isa<CallBlockNode>(node))
552
+ else if(SVFUtil::isa<CallICFGNode>(node))
536
553
  {
537
554
  rawstr << "color=red";
538
555
  }
539
- else if(SVFUtil::isa<RetBlockNode>(node))
556
+ else if(SVFUtil::isa<RetICFGNode>(node))
540
557
  {
541
558
  rawstr << "color=blue";
542
559
  }
543
- else if(SVFUtil::isa<GlobalBlockNode>(node))
560
+ else if(SVFUtil::isa<GlobalICFGNode>(node))
544
561
  {
545
562
  rawstr << "color=purple";
546
563
  }
@@ -42,13 +42,13 @@ CallSiteID PTACallGraph::totalCallSiteNum = 1;
42
42
 
43
43
  /// Add direct and indirect callsite
44
44
  //@{
45
- void PTACallGraphEdge::addDirectCallSite(const CallBlockNode* call)
45
+ void PTACallGraphEdge::addDirectCallSite(const CallICFGNode* call)
46
46
  {
47
47
  assert(SVFUtil::getCallee(call->getCallSite()) && "not a direct callsite??");
48
48
  directCalls.insert(call);
49
49
  }
50
50
 
51
- void PTACallGraphEdge::addInDirectCallSite(const CallBlockNode* call)
51
+ void PTACallGraphEdge::addInDirectCallSite(const CallICFGNode* call)
52
52
  {
53
53
  assert((nullptr == SVFUtil::getCallee(call->getCallSite()) || nullptr == SVFUtil::dyn_cast<Function> (SVFUtil::getForkedFun(call->getCallSite()))) && "not an indirect callsite??");
54
54
  indirectCalls.insert(call);
@@ -162,7 +162,7 @@ PTACallGraphEdge* PTACallGraph::getGraphEdge(PTACallGraphNode* src, PTACallGraph
162
162
  /*!
163
163
  * Add direct call edges
164
164
  */
165
- void PTACallGraph::addDirectCallGraphEdge(const CallBlockNode* cs,const SVFFunction* callerFun, const SVFFunction* calleeFun)
165
+ void PTACallGraph::addDirectCallGraphEdge(const CallICFGNode* cs,const SVFFunction* callerFun, const SVFFunction* calleeFun)
166
166
  {
167
167
 
168
168
  PTACallGraphNode* caller = getCallGraphNode(callerFun);
@@ -182,7 +182,7 @@ void PTACallGraph::addDirectCallGraphEdge(const CallBlockNode* cs,const SVFFunct
182
182
  /*!
183
183
  * Add indirect call edge to update call graph
184
184
  */
185
- void PTACallGraph::addIndirectCallGraphEdge(const CallBlockNode* cs,const SVFFunction* callerFun, const SVFFunction* calleeFun)
185
+ void PTACallGraph::addIndirectCallGraphEdge(const CallICFGNode* cs,const SVFFunction* callerFun, const SVFFunction* calleeFun)
186
186
  {
187
187
 
188
188
  PTACallGraphNode* caller = getCallGraphNode(callerFun);
@@ -269,7 +269,7 @@ void PTACallGraph::verifyCallGraph()
269
269
  const FunctionSet& targets = it->second;
270
270
  if (targets.empty() == false)
271
271
  {
272
- const CallBlockNode* cs = it->first;
272
+ const CallICFGNode* cs = it->first;
273
273
  const SVFFunction* func = cs->getCaller();
274
274
  if (getCallGraphNode(func)->isReachableFromProgEntry() == false)
275
275
  writeWrnMsg(func->getName().str() + " has indirect call site but not reachable from main");
@@ -163,7 +163,7 @@ const std::string ThreadMHPIndSVFGEdge::toString() const {
163
163
  }
164
164
 
165
165
 
166
- FormalOUTSVFGNode::FormalOUTSVFGNode(NodeID id, const MRVer* mrVer, const FunExitBlockNode* funExit): MRSVFGNode(id, FPOUT)
166
+ FormalOUTSVFGNode::FormalOUTSVFGNode(NodeID id, const MRVer* mrVer, const FunExitICFGNode* funExit): MRSVFGNode(id, FPOUT)
167
167
  {
168
168
  cpts = mrVer->getMR()->getPointsTo();
169
169
  ver = mrVer;
@@ -326,7 +326,7 @@ void SVFG::connectIndirectSVFGEdges()
326
326
  mssa->getPTA()->getPTACallGraph()->getDirCallSitesInvokingCallee(formalIn->getFun(),callInstSet);
327
327
  for(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)
328
328
  {
329
- const CallBlockNode* cs = *it;
329
+ const CallICFGNode* cs = *it;
330
330
  if(!mssa->hasMU(cs))
331
331
  continue;
332
332
  ActualINSVFGNodeSet& actualIns = getActualINSVFGNodes(cs);
@@ -344,7 +344,7 @@ void SVFG::connectIndirectSVFGEdges()
344
344
  mssa->getPTA()->getPTACallGraph()->getDirCallSitesInvokingCallee(formalOut->getFun(),callInstSet);
345
345
  for(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)
346
346
  {
347
- const CallBlockNode* cs = *it;
347
+ const CallICFGNode* cs = *it;
348
348
  if(!mssa->hasCHI(cs))
349
349
  continue;
350
350
  ActualOUTSVFGNodeSet& actualOuts = getActualOUTSVFGNodes(cs);
@@ -564,10 +564,10 @@ std::set<const SVFGNode*> SVFG::fromValue(const llvm::Value* value) const
564
564
  /**
565
565
  * Get all inter value flow edges at this indirect call site, including call and return edges.
566
566
  */
567
- void SVFG::getInterVFEdgesForIndirectCallSite(const CallBlockNode* callBlockNode, const SVFFunction* callee, SVFGEdgeSetTy& edges)
567
+ void SVFG::getInterVFEdgesForIndirectCallSite(const CallICFGNode* callBlockNode, const SVFFunction* callee, SVFGEdgeSetTy& edges)
568
568
  {
569
569
  CallSiteID csId = getCallSiteID(callBlockNode, callee);
570
- RetBlockNode* retBlockNode = pag->getICFG()->getRetBlockNode(callBlockNode->getCallSite());
570
+ RetICFGNode* retBlockNode = pag->getICFG()->getRetBlockNode(callBlockNode->getCallSite());
571
571
 
572
572
  // Find inter direct call edges between actual param and formal param.
573
573
  if (pag->hasCallSiteArgsMap(callBlockNode) && pag->hasFunArgsList(callee))
@@ -638,7 +638,7 @@ void SVFG::getInterVFEdgesForIndirectCallSite(const CallBlockNode* callBlockNode
638
638
  * Connect actual params/return to formal params/return for top-level variables.
639
639
  * Also connect indirect actual in/out and formal in/out.
640
640
  */
641
- void SVFG::connectCallerAndCallee(const CallBlockNode* cs, const SVFFunction* callee, SVFGEdgeSetTy& edges)
641
+ void SVFG::connectCallerAndCallee(const CallICFGNode* cs, const SVFFunction* callee, SVFGEdgeSetTy& edges)
642
642
  {
643
643
  VFG::connectCallerAndCallee(cs,callee,edges);
644
644
 
@@ -712,7 +712,7 @@ const SVFFunction* SVFG::isFunEntrySVFGNode(const SVFGNode* node) const
712
712
  /*!
713
713
  * Whether this is an callsite return SVFGNode (actual return, actual out)
714
714
  */
715
- const CallBlockNode* SVFG::isCallSiteRetSVFGNode(const SVFGNode* node) const
715
+ const CallICFGNode* SVFG::isCallSiteRetSVFGNode(const SVFGNode* node) const
716
716
  {
717
717
  if(const ActualRetSVFGNode* ar = SVFUtil::dyn_cast<ActualRetSVFGNode>(node))
718
718
  {