svf-tools 1.0.428 → 1.0.431

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 (282) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  5. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +10 -10
  7. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +3 -3
  8. package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
  9. package/SVF-doxygen/html/html/CHG_8cpp_source.html +8 -8
  10. package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
  11. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +11 -11
  12. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +4 -4
  13. package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +5 -5
  15. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +2 -2
  17. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +15 -15
  18. package/SVF-doxygen/html/html/DCHG_8h_source.html +7 -7
  19. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
  22. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +4 -4
  23. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +6 -6
  24. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
  25. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  27. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  29. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +1 -1
  30. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
  34. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +10 -10
  35. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
  37. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  38. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  40. package/SVF-doxygen/html/html/IRGraph_8h_source.html +18 -18
  41. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
  43. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +18 -18
  44. package/SVF-doxygen/html/html/LLVMUtil_8h.html +6 -0
  45. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +58 -56
  46. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  47. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
  50. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +9 -9
  51. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
  52. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +8 -8
  53. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
  55. package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
  56. package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
  57. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  58. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  59. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
  60. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +9 -9
  61. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +3 -3
  62. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +4 -4
  63. package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
  64. package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
  65. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  66. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +13 -12
  68. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  69. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
  70. package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
  71. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  72. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  73. package/SVF-doxygen/html/html/PCG_8cpp_source.html +5 -5
  74. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  75. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +5 -5
  76. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  77. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +15 -15
  78. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +7 -7
  79. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +3 -3
  80. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  81. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
  82. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
  83. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +6 -6
  84. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +117 -27
  85. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +32 -27
  86. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
  88. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  89. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  90. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  91. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +3 -3
  92. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  93. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +70 -70
  94. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +34 -34
  95. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +5 -5
  96. package/SVF-doxygen/html/html/SVFIR_8h_source.html +10 -10
  97. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  98. package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
  99. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  100. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +3 -3
  101. package/SVF-doxygen/html/html/SVFUtil_8h.html +0 -3
  102. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +12 -13
  103. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +7 -7
  104. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  105. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
  106. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  107. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  108. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +62 -61
  109. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +2 -2
  110. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +77 -76
  111. package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +1 -0
  112. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +135 -134
  113. package/SVF-doxygen/html/html/TCT_8cpp_source.html +11 -11
  114. package/SVF-doxygen/html/html/TCT_8h_source.html +7 -7
  115. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
  116. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
  117. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +5 -5
  118. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
  119. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
  120. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +12 -12
  121. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
  122. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -11
  123. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +75 -80
  124. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  125. package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
  126. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  127. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  128. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
  129. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  130. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +8 -8
  132. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +2 -2
  133. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
  134. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
  135. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  136. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +15 -15
  138. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
  139. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  140. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
  141. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
  142. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +7 -7
  143. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +47 -47
  144. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
  145. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +5 -3
  146. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  148. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
  149. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  150. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +6 -6
  151. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +11 -11
  152. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
  154. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
  156. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  157. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +14 -14
  158. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +2 -2
  159. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +16 -16
  160. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  161. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
  163. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +4 -4
  165. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +2 -2
  166. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +21 -21
  167. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +8 -8
  168. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +18 -18
  169. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +20 -19
  170. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +4 -4
  171. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +9 -9
  172. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +15 -15
  173. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
  174. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +5 -4
  175. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +115 -88
  176. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +13 -13
  177. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
  179. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +94 -94
  180. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +10 -10
  183. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +3 -3
  184. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
  185. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +3 -3
  186. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
  188. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +11 -11
  189. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
  190. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
  191. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +31 -30
  192. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  193. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
  194. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +29 -29
  195. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +3 -3
  196. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  197. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
  198. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +17 -17
  199. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +89 -89
  200. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
  204. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  205. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +36 -36
  206. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +86 -86
  207. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +41 -42
  208. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +189 -220
  209. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +18 -18
  210. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
  211. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +7 -7
  212. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  213. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
  214. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +16 -16
  215. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
  216. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  218. package/SVF-doxygen/html/html/functions_func_i.html +5 -8
  219. package/SVF-doxygen/html/html/functions_func_s.html +9 -8
  220. package/SVF-doxygen/html/html/functions_i.html +11 -14
  221. package/SVF-doxygen/html/html/functions_l.html +3 -3
  222. package/SVF-doxygen/html/html/functions_o.html +15 -15
  223. package/SVF-doxygen/html/html/functions_p.html +7 -7
  224. package/SVF-doxygen/html/html/functions_r.html +8 -8
  225. package/SVF-doxygen/html/html/functions_s.html +11 -10
  226. package/SVF-doxygen/html/html/functions_t.html +10 -8
  227. package/SVF-doxygen/html/html/functions_v.html +3 -3
  228. package/SVF-doxygen/html/html/globals.html +3 -0
  229. package/SVF-doxygen/html/html/globals_b.html +3 -0
  230. package/SVF-doxygen/html/html/globals_r.html +3 -0
  231. package/SVF-doxygen/html/html/globals_s.html +9 -6
  232. package/SVF-doxygen/html/html/globals_type.html +15 -0
  233. package/SVF-doxygen/html/html/globals_u.html +5 -2
  234. package/SVF-doxygen/html/html/namespaceSVF.html +40 -130
  235. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +253 -220
  236. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +20 -20
  237. package/SVF-doxygen/html/html/namespacemembers.html +0 -3
  238. package/SVF-doxygen/html/html/namespacemembers_b.html +1 -4
  239. package/SVF-doxygen/html/html/namespacemembers_func.html +8 -5
  240. package/SVF-doxygen/html/html/namespacemembers_i.html +11 -8
  241. package/SVF-doxygen/html/html/namespacemembers_r.html +1 -4
  242. package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
  243. package/SVF-doxygen/html/html/namespacemembers_type.html +0 -15
  244. package/SVF-doxygen/html/html/namespacemembers_u.html +0 -3
  245. package/SVF-doxygen/html/html/search/all_1.js +1 -1
  246. package/SVF-doxygen/html/html/search/all_10.js +9 -9
  247. package/SVF-doxygen/html/html/search/all_12.js +4 -4
  248. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  249. package/SVF-doxygen/html/html/search/all_14.js +7 -7
  250. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  251. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  252. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  253. package/SVF-doxygen/html/html/search/all_9.js +2 -2
  254. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  255. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  256. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  257. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  258. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  259. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  260. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  261. package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
  262. package/SVF-doxygen/html/html/search/typedefs_1.js +1 -1
  263. package/SVF-doxygen/html/html/search/typedefs_10.js +1 -1
  264. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  265. package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
  266. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  267. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  268. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  269. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
  270. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  271. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  272. package/include/DDA/DDAVFSolver.h +3 -3
  273. package/include/MemoryModel/SymbolTableInfo.h +6 -4
  274. package/include/SVF-FE/BasicTypes.h +5 -0
  275. package/include/SVF-FE/LLVMUtil.h +13 -0
  276. package/include/Util/BasicTypes.h +0 -5
  277. package/include/Util/SVFUtil.h +0 -5
  278. package/lib/MSSA/MemRegion.cpp +4 -4
  279. package/lib/MemoryModel/PointerAnalysis.cpp +4 -4
  280. package/lib/MemoryModel/SymbolTableInfo.cpp +6 -8
  281. package/lib/SVF-FE/SymbolTableBuilder.cpp +2 -2
  282. package/package.json +1 -1
@@ -66,18 +66,17 @@ $(function() {
66
66
  <div class="title">ICFGBuilder.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="ICFGBuilder_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- ICFGBuilder.cpp ----------------------------------------------------------------//</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;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * ICFGBuilder.cpp</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Created on:</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * Author: yulei</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> */</span></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="LLVMUtil_8h.html">SVF-FE/LLVMUtil.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="ICFGBuilder_8h.html">SVF-FE/ICFGBuilder.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#ae66565ee32fff4ef5f0157e867333250"> 41</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#ae66565ee32fff4ef5f0157e867333250">ICFGBuilder::build</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVFModule::const_iterator</a> iter = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), eiter = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); iter != eiter; ++iter)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = *iter;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(fun))</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">WorkList</a> worklist;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; processFunEntry(fun,worklist);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; processFunBody(worklist);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; processFunExit(fun);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; connectGlobalToProgEntry(svfModule);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a52e6426f0a1af479159f6fbac6d5b8f4"> 59</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a52e6426f0a1af479159f6fbac6d5b8f4">ICFGBuilder::processFunEntry</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <a class="code" href="classSVF_1_1FIFOWorkList.html">WorkList</a>&amp; worklist)</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="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a> = icfg-&gt;getFunEntryICFGNode(fun);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* entryInst = &amp;((fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;getEntryBlock()).front());</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e">InstVec</a> insts;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(entryInst))</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(entryInst, insts);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; insts.push_back(entryInst);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span> (InstVec::const_iterator nit = insts.begin(), enit = insts.end();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; nit != enit; ++nit)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* instNode = getOrAddBlockICFGNode(*nit); <span class="comment">//add interprocedure edge</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; icfg-&gt;addIntraEdge(FunEntryICFGNode, instNode);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(*nit);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;}</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#ab1cc5de5c2ee7acf83e9ae51c7b38cb5"> 80</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#ab1cc5de5c2ee7acf83e9ae51c7b38cb5">ICFGBuilder::processFunBody</a>(<a class="code" href="classSVF_1_1FIFOWorkList.html">WorkList</a>&amp; worklist)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;{</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5">BBSet</a> visited;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span> (visited.find(inst) == visited.end())</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; visited.insert(inst);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* srcNode = getOrAddBlockICFGNode(inst);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">isReturn</a>(inst))</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = inst-&gt;getFunction();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a> = icfg-&gt;getFunExitICFGNode(svfFun);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; icfg-&gt;addIntraEdge(srcNode, FunExitICFGNode);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e">InstVec</a> nextInsts;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(inst, nextInsts);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> branchID = 0;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit =</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succ = *nit;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dstNode = getOrAddBlockICFGNode(succ);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retICFGNode = getRetICFGNode(inst);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; srcNode = retICFGNode;</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;</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; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a>* br = SVFUtil::dyn_cast&lt;BranchInst&gt;(inst))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(branchID &lt;= 2 &amp;&amp; <span class="stringliteral">&quot;if/else has more than two branches?&quot;</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span>(br-&gt;isConditional())</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; icfg-&gt;addConditionalIntraEdge(srcNode, dstNode, br-&gt;getCondition(), 1 - branchID);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">else</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; icfg-&gt;addIntraEdge(srcNode, dstNode);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a>* si = SVFUtil::dyn_cast&lt;SwitchInst&gt;(inst))</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* condVal = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a>*<span class="keyword">&gt;</span>(si)-&gt;findCaseDest(const_cast&lt;BasicBlock*&gt;(succ-&gt;getParent()));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> val = condVal ? condVal-&gt;getSExtValue() : -1;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; icfg-&gt;addConditionalIntraEdge(srcNode, dstNode, si-&gt;getCondition(),val);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; icfg-&gt;addIntraEdge(srcNode, dstNode);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(succ);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; branchID++;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</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;}</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a21ecc610b7ac35f4e64b2a4a45688359"> 144</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a21ecc610b7ac35f4e64b2a4a45688359">ICFGBuilder::processFunExit</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;{</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a> = icfg-&gt;getFunExitICFGNode(fun);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()), EE = inst_end(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()); II != EE; ++II)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ReturnInst&gt;(inst)) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* instNode = getOrAddBlockICFGNode(inst);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; icfg-&gt;addIntraEdge(instNode, FunExitICFGNode);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a1c07cce4cae9bfc8884b37cbda06d8ac"> 165</a></span>&#160;<a class="code" href="classSVF_1_1InterICFGNode.html">InterICFGNode</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#a1c07cce4cae9bfc8884b37cbda06d8ac">ICFGBuilder::getOrAddInterBlockICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;not a call instruction?&quot;</span>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVFUtil::isNonInstricCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;associating an intrinsic debug instruction with an ICFGNode!&quot;</span>);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callICFGNode = getCallICFGNode(inst);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; addICFGInterEdges(inst, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst)); <span class="comment">//creating interprocedural edges</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> callICFGNode;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#af1fb4795e58130d639b75c354f67a6ab"> 177</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#af1fb4795e58130d639b75c354f67a6ab">ICFGBuilder::addICFGInterEdges</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callICFGNode = getCallICFGNode(cs);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = getRetICFGNode(cs);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span>(callee){</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; icfg-&gt;addIntraEdge(callICFGNode, retBlockNode); </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* calleeEntryNode = icfg-&gt;getFunEntryICFGNode(callee);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* calleeExitNode = icfg-&gt;getFunExitICFGNode(callee);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; icfg-&gt;addCallEdge(callICFGNode, calleeEntryNode, cs);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; icfg-&gt;addRetEdge(calleeExitNode, retBlockNode, cs);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; icfg-&gt;addIntraEdge(callICFGNode, retBlockNode); </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"> 203</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment">* Add the global initialization statements immediately after the function entry of main</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a05539eb12b22886ea4b5b4275f601641"> 206</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a05539eb12b22886ea4b5b4275f601641">ICFGBuilder::connectGlobalToProgEntry</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* mainFunc = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aa8017e3e5100b3f63ee338b66118d266">SVFUtil::getProgEntryFunction</a>(svfModule);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span>(mainFunc == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entryNode = icfg-&gt;getFunEntryICFGNode(mainFunc);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1GlobalICFGNode.html">GlobalICFGNode</a>* globalNode = icfg-&gt;getGlobalICFGNode();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>* intraEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>(globalNode, entryNode);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; icfg-&gt;addICFGEdge(intraEdge);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;}</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00193">SVFUtil.h:193</a></div></div>
70
- <div class="ttc" id="namespaceSVF_html_ac9a05dd7ab16e998625037aa242cd30f"><div class="ttname"><a href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">SVF::BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
69
+ <a href="ICFGBuilder_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- ICFGBuilder.cpp ----------------------------------------------------------------//</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;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * ICFGBuilder.cpp</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Created on:</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * Author: yulei</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> */</span></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="LLVMUtil_8h.html">SVF-FE/LLVMUtil.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="ICFGBuilder_8h.html">SVF-FE/ICFGBuilder.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#ae66565ee32fff4ef5f0157e867333250"> 41</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#ae66565ee32fff4ef5f0157e867333250">ICFGBuilder::build</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVFModule::const_iterator</a> iter = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), eiter = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); iter != eiter; ++iter)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = *iter;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(fun))</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">WorkList</a> worklist;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; processFunEntry(fun,worklist);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; processFunBody(worklist);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; processFunExit(fun);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; connectGlobalToProgEntry(svfModule);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a52e6426f0a1af479159f6fbac6d5b8f4"> 59</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a52e6426f0a1af479159f6fbac6d5b8f4">ICFGBuilder::processFunEntry</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <a class="code" href="classSVF_1_1FIFOWorkList.html">WorkList</a>&amp; worklist)</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="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a> = icfg-&gt;getFunEntryICFGNode(fun);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* entryInst = &amp;((fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;getEntryBlock()).front());</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e">InstVec</a> insts;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(entryInst))</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(entryInst, insts);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; insts.push_back(entryInst);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span> (InstVec::const_iterator nit = insts.begin(), enit = insts.end();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; nit != enit; ++nit)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* instNode = getOrAddBlockICFGNode(*nit); <span class="comment">//add interprocedure edge</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; icfg-&gt;addIntraEdge(FunEntryICFGNode, instNode);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(*nit);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;}</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#ab1cc5de5c2ee7acf83e9ae51c7b38cb5"> 80</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#ab1cc5de5c2ee7acf83e9ae51c7b38cb5">ICFGBuilder::processFunBody</a>(<a class="code" href="classSVF_1_1FIFOWorkList.html">WorkList</a>&amp; worklist)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;{</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5">BBSet</a> visited;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span> (visited.find(inst) == visited.end())</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; visited.insert(inst);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* srcNode = getOrAddBlockICFGNode(inst);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">isReturn</a>(inst))</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = inst-&gt;getFunction();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a> = icfg-&gt;getFunExitICFGNode(svfFun);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; icfg-&gt;addIntraEdge(srcNode, FunExitICFGNode);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e">InstVec</a> nextInsts;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(inst, nextInsts);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> branchID = 0;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit =</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succ = *nit;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dstNode = getOrAddBlockICFGNode(succ);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retICFGNode = getRetICFGNode(inst);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; srcNode = retICFGNode;</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;</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; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#adeac5db1db4ed03898d30f205fd02264">BranchInst</a>* br = SVFUtil::dyn_cast&lt;BranchInst&gt;(inst))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(branchID &lt;= 2 &amp;&amp; <span class="stringliteral">&quot;if/else has more than two branches?&quot;</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span>(br-&gt;isConditional())</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; icfg-&gt;addConditionalIntraEdge(srcNode, dstNode, br-&gt;getCondition(), 1 - branchID);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">else</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; icfg-&gt;addIntraEdge(srcNode, dstNode);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a55ac065a1d559c907908492c6853dd53">SwitchInst</a>* si = SVFUtil::dyn_cast&lt;SwitchInst&gt;(inst))</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* condVal = <span class="keyword">const_cast&lt;</span><a class="code" href="SVF-FE_2BasicTypes_8h.html#a55ac065a1d559c907908492c6853dd53">SwitchInst</a>*<span class="keyword">&gt;</span>(si)-&gt;findCaseDest(const_cast&lt;BasicBlock*&gt;(succ-&gt;getParent()));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> val = condVal ? condVal-&gt;getSExtValue() : -1;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; icfg-&gt;addConditionalIntraEdge(srcNode, dstNode, si-&gt;getCondition(),val);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; icfg-&gt;addIntraEdge(srcNode, dstNode);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(succ);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; branchID++;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</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;}</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a21ecc610b7ac35f4e64b2a4a45688359"> 144</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a21ecc610b7ac35f4e64b2a4a45688359">ICFGBuilder::processFunExit</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;{</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a> = icfg-&gt;getFunExitICFGNode(fun);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()), EE = inst_end(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()); II != EE; ++II)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ReturnInst&gt;(inst)) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* instNode = getOrAddBlockICFGNode(inst);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; icfg-&gt;addIntraEdge(instNode, FunExitICFGNode);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a1c07cce4cae9bfc8884b37cbda06d8ac"> 165</a></span>&#160;<a class="code" href="classSVF_1_1InterICFGNode.html">InterICFGNode</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#a1c07cce4cae9bfc8884b37cbda06d8ac">ICFGBuilder::getOrAddInterBlockICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;not a call instruction?&quot;</span>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVFUtil::isNonInstricCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;associating an intrinsic debug instruction with an ICFGNode!&quot;</span>);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callICFGNode = getCallICFGNode(inst);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; addICFGInterEdges(inst, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst)); <span class="comment">//creating interprocedural edges</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> callICFGNode;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#af1fb4795e58130d639b75c354f67a6ab"> 177</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#af1fb4795e58130d639b75c354f67a6ab">ICFGBuilder::addICFGInterEdges</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callICFGNode = getCallICFGNode(cs);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = getRetICFGNode(cs);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span>(callee){</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; icfg-&gt;addIntraEdge(callICFGNode, retBlockNode); </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* calleeEntryNode = icfg-&gt;getFunEntryICFGNode(callee);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* calleeExitNode = icfg-&gt;getFunExitICFGNode(callee);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; icfg-&gt;addCallEdge(callICFGNode, calleeEntryNode, cs);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; icfg-&gt;addRetEdge(calleeExitNode, retBlockNode, cs);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; icfg-&gt;addIntraEdge(callICFGNode, retBlockNode); </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"> 203</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment">* Add the global initialization statements immediately after the function entry of main</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a05539eb12b22886ea4b5b4275f601641"> 206</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a05539eb12b22886ea4b5b4275f601641">ICFGBuilder::connectGlobalToProgEntry</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* mainFunc = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aa8017e3e5100b3f63ee338b66118d266">SVFUtil::getProgEntryFunction</a>(svfModule);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span>(mainFunc == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entryNode = icfg-&gt;getFunEntryICFGNode(mainFunc);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1GlobalICFGNode.html">GlobalICFGNode</a>* globalNode = icfg-&gt;getGlobalICFGNode();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>* intraEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>(globalNode, entryNode);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; icfg-&gt;addICFGEdge(intraEdge);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;}</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00193">SVFUtil.h:193</a></div></div>
71
70
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab7f58caf27c30a1d414e06f60ca84d80"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">SVF::SVFUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00180">SVFUtil.h:180</a></div></div>
72
71
  <div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
73
72
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
74
73
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_abb7144bcc587e236fd22f6c8896117f5"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5">SVF::ICFGBuilder::BBSet</a></div><div class="ttdeci">Set&lt; const Instruction * &gt; BBSet</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00045">ICFGBuilder.h:45</a></div></div>
75
74
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
76
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00184">BasicTypes.h:184</a></div></div>
75
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00179">BasicTypes.h:179</a></div></div>
77
76
  <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00082">SVFBasicTypes.h:82</a></div></div>
78
77
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
79
78
  <div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00113">BasicTypes.h:113</a></div></div>
80
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aa8017e3e5100b3f63ee338b66118d266"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aa8017e3e5100b3f63ee338b66118d266">SVF::SVFUtil::getProgEntryFunction</a></div><div class="ttdeci">const SVFFunction * getProgEntryFunction(SVFModule *svfModule)</div><div class="ttdoc">Get program entry function from module. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00442">LLVMUtil.h:442</a></div></div>
79
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aa8017e3e5100b3f63ee338b66118d266"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aa8017e3e5100b3f63ee338b66118d266">SVF::SVFUtil::getProgEntryFunction</a></div><div class="ttdeci">const SVFFunction * getProgEntryFunction(SVFModule *svfModule)</div><div class="ttdoc">Get program entry function from module. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00455">LLVMUtil.h:455</a></div></div>
81
80
  <div class="ttc" id="SVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
82
81
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_a57af1044422b3c3860aa6fb033f8111e"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e">SVF::ICFGBuilder::InstVec</a></div><div class="ttdeci">std::vector&lt; const Instruction * &gt; InstVec</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00044">ICFGBuilder.h:44</a></div></div>
83
82
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
@@ -93,29 +92,30 @@ $(function() {
93
92
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
94
93
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
95
94
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_a21ecc610b7ac35f4e64b2a4a45688359"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a21ecc610b7ac35f4e64b2a4a45688359">SVF::ICFGBuilder::processFunExit</a></div><div class="ttdeci">void processFunExit(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00144">ICFGBuilder.cpp:144</a></div></div>
96
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00268">SVFUtil.h:268</a></div></div>
95
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00263">SVFUtil.h:263</a></div></div>
97
96
  <div class="ttc" id="classSVF_1_1InterICFGNode_html"><div class="ttname"><a href="classSVF_1_1InterICFGNode.html">SVF::InterICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00213">ICFGNode.h:213</a></div></div>
98
97
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_a1c07cce4cae9bfc8884b37cbda06d8ac"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a1c07cce4cae9bfc8884b37cbda06d8ac">SVF::ICFGBuilder::getOrAddInterBlockICFGNode</a></div><div class="ttdeci">InterICFGNode * getOrAddInterBlockICFGNode(const Instruction *inst)</div><div class="ttdoc">Add/Get an inter block ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00165">ICFGBuilder.cpp:165</a></div></div>
99
98
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
100
- <div class="ttc" id="namespaceSVF_html_a412280b134578905248ce0122c5db7c9"><div class="ttname"><a href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SVF::SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
101
99
  <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#l00364">ICFGNode.h:364</a></div></div>
102
100
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
103
- <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00200">BasicTypes.h:200</a></div></div>
101
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00195">BasicTypes.h:195</a></div></div>
104
102
  <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="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
103
+ <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a55ac065a1d559c907908492c6853dd53"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a55ac065a1d559c907908492c6853dd53">SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00035">BasicTypes.h:35</a></div></div>
105
104
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_a05539eb12b22886ea4b5b4275f601641"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a05539eb12b22886ea4b5b4275f601641">SVF::ICFGBuilder::connectGlobalToProgEntry</a></div><div class="ttdeci">void connectGlobalToProgEntry(SVFModule *svfModule)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00206">ICFGBuilder.cpp:206</a></div></div>
106
105
  <div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00155">SVFModule.h:155</a></div></div>
107
106
  <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>
108
107
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00206">SVFUtil.h:206</a></div></div>
109
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_abd525a2e3b7b9167b61b2304cc2cbdf2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">SVF::SVFUtil::isReturn</a></div><div class="ttdeci">bool isReturn(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a return instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00213">SVFUtil.h:213</a></div></div>
108
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_abd525a2e3b7b9167b61b2304cc2cbdf2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">SVF::SVFUtil::isReturn</a></div><div class="ttdeci">bool isReturn(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a return instruction. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00089">LLVMUtil.h:89</a></div></div>
110
109
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_a52e6426f0a1af479159f6fbac6d5b8f4"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a52e6426f0a1af479159f6fbac6d5b8f4">SVF::ICFGBuilder::processFunEntry</a></div><div class="ttdeci">void processFunEntry(const SVFFunction *fun, WorkList &amp;worklist)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00059">ICFGBuilder.cpp:59</a></div></div>
111
- <div class="ttc" id="namespaceSVF_html_a255af6ff30782cb9a548feadb0fe7d6b"><div class="ttname"><a href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">SVF::inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00156">BasicTypes.h:156</a></div></div>
110
+ <div class="ttc" id="namespaceSVF_html_a255af6ff30782cb9a548feadb0fe7d6b"><div class="ttname"><a href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">SVF::inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
111
+ <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_adeac5db1db4ed03898d30f205fd02264"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#adeac5db1db4ed03898d30f205fd02264">BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00034">BasicTypes.h:34</a></div></div>
112
112
  <div class="ttc" id="classSVF_1_1GlobalICFGNode_html"><div class="ttname"><a href="classSVF_1_1GlobalICFGNode.html">SVF::GlobalICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00142">ICFGNode.h:142</a></div></div>
113
113
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00174">WorkList.h:174</a></div></div>
114
114
  <div class="ttc" id="classSVF_1_1SVFModule_html_afcf2978f32e15127fb093405dc17d7f1"><div class="ttname"><a href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVF::SVFModule::const_iterator</a></div><div class="ttdeci">FunctionSetType::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00052">SVFModule.h:52</a></div></div>
115
115
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_af1fb4795e58130d639b75c354f67a6ab"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#af1fb4795e58130d639b75c354f67a6ab">SVF::ICFGBuilder::addICFGInterEdges</a></div><div class="ttdeci">void addICFGInterEdges(const Instruction *cs, const SVFFunction *callee)</div><div class="ttdoc">Create edges between ICFG nodes across functions. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00177">ICFGBuilder.cpp:177</a></div></div>
116
116
  <div class="ttc" id="LLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
117
117
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a547b3bc62de65b9dbfc6dee55c063dd7"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00112">LLVMModule.h:112</a></div></div>
118
- <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#l00065">LLVMUtil.h:65</a></div></div>
118
+ <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>
119
119
  </div><!-- fragment --></div><!-- contents -->
120
120
  <!-- start footer part -->
121
121
  <hr class="footer"/><address class="footer"><small>
@@ -68,7 +68,7 @@ $(function() {
68
68
  <div class="contents">
69
69
  <a href="ICFGBuilder_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- ICFGBuilder.h ----------------------------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * ICFGBuilder.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on:</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: yulei</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef INCLUDE_UTIL_ICFGBUILDER_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define INCLUDE_UTIL_ICFGBUILDER_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFG_8h.html">Graphs/ICFG.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html"> 39</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1ICFGBuilder.html">ICFGBuilder</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e"> 44</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const Instruction*&gt; <a class="code" href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e">InstVec</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5"> 45</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Instruction*&gt;</a> <a class="code" href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5">BBSet</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6"> 48</a></span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a2dc4467008cdd6eb896e98b67457082a"> 51</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const Instruction*&gt;</a> <a class="code" href="classSVF_1_1ICFGBuilder.html#a2dc4467008cdd6eb896e98b67457082a">WorkList</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a40d50a22a5c2094dbfe5e8516a0deccc"> 53</a></span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#a40d50a22a5c2094dbfe5e8516a0deccc">ICFGBuilder</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* i): icfg(i)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#ae66565ee32fff4ef5f0157e867333250">build</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a52e6426f0a1af479159f6fbac6d5b8f4">processFunEntry</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, WorkList&amp; worklist);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#ab1cc5de5c2ee7acf83e9ae51c7b38cb5">processFunBody</a>(WorkList&amp; worklist);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a21ecc610b7ac35f4e64b2a4a45688359">processFunExit</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a05539eb12b22886ea4b5b4275f601641">connectGlobalToProgEntry</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classSVF_1_1InterICFGNode.html">InterICFGNode</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#a1c07cce4cae9bfc8884b37cbda06d8ac">getOrAddInterBlockICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a42f190f697284e6da7a6211ce7adecfe"> 75</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#a42f190f697284e6da7a6211ce7adecfe">getOrAddBlockICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVFUtil::isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a1c07cce4cae9bfc8884b37cbda06d8ac">getOrAddInterBlockICFGNode</a>(inst);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#a91599e3ddb71462ec61a50fad91288da">getOrAddIntraBlockICFGNode</a>(inst);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGBuilder.html#af1fb4795e58130d639b75c354f67a6ab">addICFGInterEdges</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a702a888f2175dd32e2467bff27385e02"> 87</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#a702a888f2175dd32e2467bff27385e02">getCallICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* cs)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(cs);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb"> 92</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb">getRetICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* cs)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(cs);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGBuilder.html#a91599e3ddb71462ec61a50fad91288da"> 98</a></span>&#160; <a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* <a class="code" href="classSVF_1_1ICFGBuilder.html#a91599e3ddb71462ec61a50fad91288da">getOrAddIntraBlockICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a2b3a5a9c3c4c623a6d45ab1eac3c6a8b">getIntraICFGNode</a>(inst);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;};</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_UTIL_ICFGBUILDER_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1ICFGBuilder_html_a7c1125c992eec20e118e6bfc12cb8bfb"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb">SVF::ICFGBuilder::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *cs)</div><div class="ttdoc">Add a return node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00092">ICFGBuilder.h:92</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_abb7144bcc587e236fd22f6c8896117f5"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5">SVF::ICFGBuilder::BBSet</a></div><div class="ttdeci">Set&lt; const Instruction * &gt; BBSet</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00045">ICFGBuilder.h:45</a></div></div>
71
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00184">BasicTypes.h:184</a></div></div>
71
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00179">BasicTypes.h:179</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1ICFG_html_a66cb50d8c176f800f06d9cb8924eb896"><div class="ttname"><a href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00222">ICFG.cpp:222</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1ICFG_html_a2b3a5a9c3c4c623a6d45ab1eac3c6a8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a2b3a5a9c3c4c623a6d45ab1eac3c6a8b">SVF::ICFG::getIntraICFGNode</a></div><div class="ttdeci">IntraICFGNode * getIntraICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00233">ICFG.cpp:233</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html">SVF::ICFGBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00039">ICFGBuilder.h:39</a></div></div>
@@ -86,7 +86,7 @@ $(function() {
86
86
  <div class="ttc" id="classSVF_1_1RetICFGNode_html_ab11aa45c33cdcf5836fa2ee88bda9a9c"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html#ab11aa45c33cdcf5836fa2ee88bda9a9c">SVF::RetICFGNode::actualRet</a></div><div class="ttdeci">const SVFVar * actualRet</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00464">ICFGNode.h:464</a></div></div>
87
87
  <div class="ttc" id="classSVF_1_1ICFGNode_html_ae6fe836e269ac36f14b2d2b1499a11e6"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ae6fe836e269ac36f14b2d2b1499a11e6">SVF::ICFGNode::ICFGNode</a></div><div class="ttdeci">ICFGNode(NodeID i, ICFGNodeK k)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00074">ICFGNode.h:74</a></div></div>
88
88
  <div class="ttc" id="classSVF_1_1InterICFGNode_html_a6b43bc8bf2bd2cd78e6cd5064cf7c470"><div class="ttname"><a href="classSVF_1_1InterICFGNode.html#a6b43bc8bf2bd2cd78e6cd5064cf7c470">SVF::InterICFGNode::classof</a></div><div class="ttdeci">static bool classof(const GenericICFGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00237">ICFGNode.h:237</a></div></div>
89
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00184">BasicTypes.h:184</a></div></div>
89
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00179">BasicTypes.h:179</a></div></div>
90
90
  <div class="ttc" id="classSVF_1_1InterICFGNode_html_adfe73a4bcd2a3074bef97661a787bfa3"><div class="ttname"><a href="classSVF_1_1InterICFGNode.html#adfe73a4bcd2a3074bef97661a787bfa3">SVF::InterICFGNode::classof</a></div><div class="ttdeci">static bool classof(const ICFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00229">ICFGNode.h:229</a></div></div>
91
91
  <div class="ttc" id="classSVF_1_1InterICFGNode_html_a192826ba075a80add6a39a039a32bc05"><div class="ttname"><a href="classSVF_1_1InterICFGNode.html#a192826ba075a80add6a39a039a32bc05">SVF::InterICFGNode::InterICFGNode</a></div><div class="ttdeci">InterICFGNode(NodeID id, ICFGNodeK k)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00218">ICFGNode.h:218</a></div></div>
92
92
  <div class="ttc" id="classSVF_1_1RetICFGNode_html_a98c5e8394aa337e53a5ba8f4b0a245d4"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html#a98c5e8394aa337e53a5ba8f4b0a245d4">SVF::RetICFGNode::getCallICFGNode</a></div><div class="ttdeci">const CallICFGNode * getCallICFGNode() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00480">ICFGNode.h:480</a></div></div>
@@ -127,7 +127,7 @@ $(function() {
127
127
  <div class="ttc" id="classSVF_1_1RetICFGNode_html_ac719aea72183e187f71471e1e58c9e54"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html#ac719aea72183e187f71471e1e58c9e54">SVF::RetICFGNode::addActualRet</a></div><div class="ttdeci">void addActualRet(const SVFVar *ar)</div><div class="ttdoc">Add actual return parameter. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00491">ICFGNode.h:491</a></div></div>
128
128
  <div class="ttc" id="classSVF_1_1IntraICFGNode_html_a00e015884ec85772b161cc7b4a5bfbd8"><div class="ttname"><a href="classSVF_1_1IntraICFGNode.html#a00e015884ec85772b161cc7b4a5bfbd8">SVF::IntraICFGNode::classof</a></div><div class="ttdeci">static bool classof(const GenericICFGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00204">ICFGNode.h:204</a></div></div>
129
129
  <div class="ttc" id="ICFGEdge_8h_html"><div class="ttname"><a href="ICFGEdge_8h.html">ICFGEdge.h</a></div></div>
130
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00268">SVFUtil.h:268</a></div></div>
130
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00263">SVFUtil.h:263</a></div></div>
131
131
  <div class="ttc" id="classSVF_1_1ICFGNode_html_ac1689701c75e04481e2ae2f4482551c4"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">SVF::ICFGNode::getBB</a></div><div class="ttdeci">virtual const BasicBlock * getBB() const</div><div class="ttdoc">Return the function of this ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00086">ICFGNode.h:86</a></div></div>
132
132
  <div class="ttc" id="classSVF_1_1ICFGNode_html_aff18898b9bbd85d08b00d64d48eea6a5"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#aff18898b9bbd85d08b00d64d48eea6a5">SVF::ICFGNode::addVFGNode</a></div><div class="ttdeci">void addVFGNode(const VFGNode *vfgNode)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00103">ICFGNode.h:103</a></div></div>
133
133
  <div class="ttc" id="classSVF_1_1ICFGNode_html_a74f598c1c86b023680bb2685aa8ab376"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376">SVF::ICFGNode::ICFGNodeK</a></div><div class="ttdeci">ICFGNodeK</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00060">ICFGNode.h:60</a></div></div>
@@ -89,7 +89,7 @@ $(function() {
89
89
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
90
90
  <div class="ttc" id="classSVF_1_1ICFG_html_a1af9ae1c2efb4cb7897d5234d035c06b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a1af9ae1c2efb4cb7897d5234d035c06b">SVF::ICFG::addFunEntryBlock</a></div><div class="ttdeci">FunEntryICFGNode * addFunEntryBlock(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00210">ICFG.h:210</a></div></div>
91
91
  <div class="ttc" id="classSVF_1_1FunEntryICFGNode_html_a15fd95468e2200d92d650625d4fa2f31"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html#a15fd95468e2200d92d650625d4fa2f31">SVF::FunEntryICFGNode::FunEntryICFGNode</a></div><div class="ttdeci">FunEntryICFGNode(NodeID id, const SVFFunction *f)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00041">ICFG.cpp:41</a></div></div>
92
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00184">BasicTypes.h:184</a></div></div>
92
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00179">BasicTypes.h:179</a></div></div>
93
93
  <div class="ttc" id="classSVF_1_1ICFG_html_a66cb50d8c176f800f06d9cb8924eb896"><div class="ttname"><a href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00222">ICFG.cpp:222</a></div></div>
94
94
  <div class="ttc" id="classSVF_1_1CallCFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallCFGEdge.html">SVF::CallCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00165">ICFGEdge.h:165</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1ICFG_html_a2b3a5a9c3c4c623a6d45ab1eac3c6a8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a2b3a5a9c3c4c623a6d45ab1eac3c6a8b">SVF::ICFG::getIntraICFGNode</a></div><div class="ttdeci">IntraICFGNode * getIntraICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00233">ICFG.cpp:233</a></div></div>
@@ -136,7 +136,7 @@ $(function() {
136
136
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a7ef3894da60c3e3350b8d2de3e94a562"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a7ef3894da60c3e3350b8d2de3e94a562">llvm::DOTGraphTraits&lt; ICFG * &gt;::NodeType</a></div><div class="ttdeci">ICFGNode NodeType</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00488">ICFG.cpp:488</a></div></div>
137
137
  <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>
138
138
  <div class="ttc" id="classSVF_1_1InterICFGNode_html"><div class="ttname"><a href="classSVF_1_1InterICFGNode.html">SVF::InterICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00213">ICFGNode.h:213</a></div></div>
139
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a3cb226930eeaf558575e09e5b65e0223"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">SVF::SVFUtil::getFunExitBB</a></div><div class="ttdeci">const BasicBlock * getFunExitBB(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00507">LLVMUtil.h:507</a></div></div>
139
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a3cb226930eeaf558575e09e5b65e0223"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">SVF::SVFUtil::getFunExitBB</a></div><div class="ttdeci">const BasicBlock * getFunExitBB(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00520">LLVMUtil.h:520</a></div></div>
140
140
  <div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">SVF::ICFGEdge::IntraCF</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00053">ICFGEdge.h:53</a></div></div>
141
141
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00390">SVFUtil.cpp:390</a></div></div>
142
142
  <div class="ttc" id="classSVF_1_1ICFGNode_html_ad3c5171fed4e28cfd35c1a6fb9697005"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">SVF::ICFGNode::bb</a></div><div class="ttdeci">const BasicBlock * bb</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00133">ICFGNode.h:133</a></div></div>
@@ -156,7 +156,7 @@ $(function() {
156
156
  <div class="ttc" id="classSVF_1_1ICFG_html_aae7bcc56ba04d08cc030f108b06299ae"><div class="ttname"><a href="classSVF_1_1ICFG.html#aae7bcc56ba04d08cc030f108b06299ae">SVF::ICFG::addRetBlock</a></div><div class="ttdeci">RetICFGNode * addRetBlock(const Instruction *cs)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00258">ICFG.h:258</a></div></div>
157
157
  <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#l00364">ICFGNode.h:364</a></div></div>
158
158
  <div class="ttc" id="classSVF_1_1FunExitICFGNode_html_adfcebc33f3c36b8145074d370dfa1cb9"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html#adfcebc33f3c36b8145074d370dfa1cb9">SVF::FunExitICFGNode::fun</a></div><div class="ttdeci">const SVFFunction * fun</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00312">ICFGNode.h:312</a></div></div>
159
- <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00200">BasicTypes.h:200</a></div></div>
159
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00195">BasicTypes.h:195</a></div></div>
160
160
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a72d303201f61fdec14f08bddabf649e5"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a72d303201f61fdec14f08bddabf649e5">llvm::DOTGraphTraits&lt; ICFG * &gt;::DOTGraphTraits</a></div><div class="ttdeci">DOTGraphTraits(bool isSimple=false)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00489">ICFG.cpp:489</a></div></div>
161
161
  <div class="ttc" id="classSVF_1_1Options_html_aea29a835c54fab800117e57de00e0b1e"><div class="ttname"><a href="classSVF_1_1Options.html#aea29a835c54fab800117e57de00e0b1e">SVF::Options::DumpICFG</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; DumpICFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00136">Options.h:136</a></div></div>
162
162
  <div class="ttc" id="classSVF_1_1ICFGNode_html_af1b6fd9ea200ab0ff51d48a4872c921a"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">SVF::ICFGNode::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00061">ICFG.cpp:61</a></div></div>
@@ -189,7 +189,7 @@ $(function() {
189
189
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4_html_a1cf0470d3e9821152416e3bf5236e553"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a1cf0470d3e9821152416e3bf5236e553">llvm::DOTGraphTraits&lt; ICFG * &gt;::getSimpleNodeLabel</a></div><div class="ttdeci">static std::string getSimpleNodeLabel(NodeType *node, ICFG *)</div><div class="ttdoc">Return the label of an ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00506">ICFG.cpp:506</a></div></div>
190
190
  <div class="ttc" id="classSVF_1_1FunExitICFGNode_html_aa73e5a5e577b789842987fec2fb307f9"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html#aa73e5a5e577b789842987fec2fb307f9">SVF::FunExitICFGNode::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00108">ICFG.cpp:108</a></div></div>
191
191
  <div class="ttc" id="LLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
192
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00065">LLVMUtil.h:65</a></div></div>
192
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00072">LLVMUtil.h:72</a></div></div>
193
193
  <div class="ttc" id="classSVF_1_1ICFGNode_html_a3c193da05d6dee7313a141ae3ab43e97"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97">SVF::ICFGNode::dump</a></div><div class="ttdeci">void dump() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00068">ICFG.cpp:68</a></div></div>
194
194
  <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>
195
195
  </div><!-- fragment --></div><!-- contents -->
@@ -79,7 +79,7 @@ $(function() {
79
79
  <div class="ttc" id="classSVF_1_1ICFG_html_a5df6061b65d021cd73c66592ec79f052"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5df6061b65d021cd73c66592ec79f052">SVF::ICFG::totalICFGNode</a></div><div class="ttdeci">NodeID totalICFGNode</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00064">ICFG.h:64</a></div></div>
80
80
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
81
81
  <div class="ttc" id="classSVF_1_1ICFG_html_a1af9ae1c2efb4cb7897d5234d035c06b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a1af9ae1c2efb4cb7897d5234d035c06b">SVF::ICFG::addFunEntryBlock</a></div><div class="ttdeci">FunEntryICFGNode * addFunEntryBlock(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00210">ICFG.h:210</a></div></div>
82
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00184">BasicTypes.h:184</a></div></div>
82
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00179">BasicTypes.h:179</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1ICFG_html_a66cb50d8c176f800f06d9cb8924eb896"><div class="ttname"><a href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00222">ICFG.cpp:222</a></div></div>
84
84
  <div class="ttc" id="classSVF_1_1ICFG_html_a2b3a5a9c3c4c623a6d45ab1eac3c6a8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a2b3a5a9c3c4c623a6d45ab1eac3c6a8b">SVF::ICFG::getIntraICFGNode</a></div><div class="ttdeci">IntraICFGNode * getIntraICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00233">ICFG.cpp:233</a></div></div>
85
85
  <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00082">SVFBasicTypes.h:82</a></div></div>
@@ -90,7 +90,7 @@ $(function() {
90
90
  <div class="ttc" id="classSVF_1_1Options_html_adec2012e10130f664fe0ea3acf39f78b"><div class="ttname"><a href="classSVF_1_1Options.html#adec2012e10130f664fe0ea3acf39f78b">SVF::Options::ShowHiddenNode</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ShowHiddenNode</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00256">Options.h:256</a></div></div>
91
91
  <div class="ttc" id="classSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00477">SVFStatements.h:477</a></div></div>
92
92
  <div class="ttc" id="classSVF_1_1IRGraph_html_a192e584440eb141e0d35d8fed671bbe0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">SVF::IRGraph::hasLabeledEdge</a></div><div class="ttdeci">SVFStmt * hasLabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind, const ICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00087">IRGraph.cpp:87</a></div></div>
93
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9f8d99c761f3c7108d797b3702fcbfec"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9f8d99c761f3c7108d797b3702fcbfec">SVF::SymbolTableInfo::releaseSymbolInfo</a></div><div class="ttdeci">static void releaseSymbolInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00120">SymbolTableInfo.h:120</a></div></div>
93
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9f8d99c761f3c7108d797b3702fcbfec"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9f8d99c761f3c7108d797b3702fcbfec">SVF::SymbolTableInfo::releaseSymbolInfo</a></div><div class="ttdeci">static void releaseSymbolInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00121">SymbolTableInfo.h:121</a></div></div>
94
94
  <div class="ttc" id="classSVF_1_1SVFVar_html_ada932ef2ae0a3e712174df479c35b0dd"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">SVF::SVFVar::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8cpp_source.html#l00093">SVFVariables.cpp:93</a></div></div>
95
95
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
96
96
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>