svf-tools 1.0.472 → 1.0.475

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 (238) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +8 -7
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
  5. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +2 -2
  6. package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +2 -2
  7. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +20 -19
  8. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +15 -15
  9. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +2 -2
  10. package/SVF-doxygen/html/html/Casting_8h_source.html +1 -1
  11. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  12. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
  14. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  15. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +4 -4
  19. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +3 -3
  20. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +11 -10
  24. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +11 -10
  28. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +7 -7
  29. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  30. package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
  31. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +24 -24
  32. package/SVF-doxygen/html/html/LLVMUtil_8h.html +111 -111
  33. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +41 -40
  34. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +11 -10
  35. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +8 -8
  36. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +14 -13
  37. package/SVF-doxygen/html/html/LocationSet_8h_source.html +9 -9
  38. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +31 -30
  39. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +23 -23
  40. package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
  41. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  42. package/SVF-doxygen/html/html/MTA_8cpp_source.html +2 -2
  43. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +35 -34
  45. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +28 -27
  46. package/SVF-doxygen/html/html/MemSSA_8h_source.html +19 -19
  47. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +14 -14
  48. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +28 -27
  49. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +23 -23
  50. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
  51. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  52. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +27 -26
  53. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +24 -24
  54. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
  55. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +3 -3
  56. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
  57. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +3 -3
  58. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +7 -7
  59. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +18 -17
  60. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +43 -43
  61. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +12 -12
  62. package/SVF-doxygen/html/html/SVFIR_8h_source.html +9 -9
  63. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  64. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  65. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +43 -43
  66. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
  67. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
  69. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  70. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
  71. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +39 -37
  72. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +16 -15
  73. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +58 -57
  74. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +24 -24
  75. package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
  76. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  77. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
  78. package/SVF-doxygen/html/html/VFGNode_8h_source.html +5 -5
  79. package/SVF-doxygen/html/html/VFG_8cpp_source.html +7 -7
  80. package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
  81. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  82. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +2 -2
  83. package/SVF-doxygen/html/html/WPAStat_8h_source.html +5 -5
  84. package/SVF-doxygen/html/html/cfl_8cpp.html +3 -3
  85. package/SVF-doxygen/html/html/cfl_8cpp_source.html +3 -3
  86. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
  87. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
  88. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +14 -14
  89. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +6 -6
  90. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +17 -15
  91. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +32 -32
  92. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  93. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +3 -3
  94. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +48 -48
  95. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +6 -4
  96. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +4 -4
  97. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +2 -2
  98. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
  99. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +4 -4
  100. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  101. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  102. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +2 -2
  103. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +3 -3
  104. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  106. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +4 -4
  107. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +23 -23
  108. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +2 -2
  110. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
  111. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
  113. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
  114. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +23 -23
  115. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +3 -3
  117. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +2 -2
  118. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +22 -22
  119. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +28 -28
  120. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +78 -78
  121. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +100 -100
  122. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
  123. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +4 -4
  125. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
  126. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +56 -56
  127. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +7 -7
  128. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
  129. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
  131. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +74 -74
  132. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +59 -59
  133. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +4 -4
  134. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +7 -7
  135. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
  136. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +14 -14
  137. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +150 -150
  138. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  139. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  140. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +2 -1
  141. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
  142. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +4 -4
  143. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +14 -13
  144. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +111 -85
  145. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +65 -65
  146. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +9 -9
  147. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +9 -9
  148. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  150. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +20 -20
  152. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +8 -8
  153. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  154. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +4 -4
  155. package/SVF-doxygen/html/html/dda_8cpp.html +2 -2
  156. package/SVF-doxygen/html/html/dda_8cpp_source.html +2 -2
  157. package/SVF-doxygen/html/html/functions_c.html +21 -16
  158. package/SVF-doxygen/html/html/functions_func_c.html +16 -13
  159. package/SVF-doxygen/html/html/functions_l.html +3 -3
  160. package/SVF-doxygen/html/html/functions_o.html +16 -16
  161. package/SVF-doxygen/html/html/functions_p.html +7 -13
  162. package/SVF-doxygen/html/html/functions_s.html +7 -9
  163. package/SVF-doxygen/html/html/functions_t.html +4 -4
  164. package/SVF-doxygen/html/html/functions_v.html +3 -3
  165. package/SVF-doxygen/html/html/mta_8cpp.html +2 -2
  166. package/SVF-doxygen/html/html/mta_8cpp_source.html +2 -2
  167. package/SVF-doxygen/html/html/namespaceSVF.html +4 -2
  168. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +1452 -0
  169. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +41 -1409
  170. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
  171. package/SVF-doxygen/html/html/namespacemembers.html +3 -3
  172. package/SVF-doxygen/html/html/namespacemembers_f.html +1 -1
  173. package/SVF-doxygen/html/html/namespacemembers_func.html +39 -39
  174. package/SVF-doxygen/html/html/namespacemembers_g.html +14 -14
  175. package/SVF-doxygen/html/html/namespacemembers_i.html +18 -18
  176. package/SVF-doxygen/html/html/namespacemembers_p.html +1 -1
  177. package/SVF-doxygen/html/html/namespacemembers_s.html +2 -2
  178. package/SVF-doxygen/html/html/namespaces.html +2 -1
  179. package/SVF-doxygen/html/html/saber_8cpp.html +2 -2
  180. package/SVF-doxygen/html/html/saber_8cpp_source.html +2 -2
  181. package/SVF-doxygen/html/html/search/all_1.js +3 -3
  182. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  183. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  184. package/SVF-doxygen/html/html/search/all_13.js +10 -9
  185. package/SVF-doxygen/html/html/search/all_14.js +2 -2
  186. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  187. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  188. package/SVF-doxygen/html/html/search/all_3.js +1 -0
  189. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  190. package/SVF-doxygen/html/html/search/all_7.js +14 -14
  191. package/SVF-doxygen/html/html/search/all_9.js +18 -18
  192. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  193. package/SVF-doxygen/html/html/search/all_e.js +3 -3
  194. package/SVF-doxygen/html/html/search/all_f.js +4 -4
  195. package/SVF-doxygen/html/html/search/functions_0.js +3 -3
  196. package/SVF-doxygen/html/html/search/functions_11.js +3 -3
  197. package/SVF-doxygen/html/html/search/functions_2.js +1 -0
  198. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  199. package/SVF-doxygen/html/html/search/functions_6.js +14 -14
  200. package/SVF-doxygen/html/html/search/functions_8.js +18 -18
  201. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  202. package/SVF-doxygen/html/html/search/namespaces_1.js +1 -0
  203. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  204. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  205. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  206. package/SVF-doxygen/html/html/svf-ex_8cpp.html +3 -3
  207. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
  208. package/SVF-doxygen/html/html/wpa_8cpp.html +2 -2
  209. package/SVF-doxygen/html/html/wpa_8cpp_source.html +2 -2
  210. package/include/MTA/MHP.h +1 -1
  211. package/include/MemoryModel/SVFStatements.h +5 -3
  212. package/include/SVF-FE/LLVMUtil.h +7 -7
  213. package/include/SVF-FE/SymbolTableBuilder.h +2 -0
  214. package/lib/Graphs/ICFG.cpp +2 -2
  215. package/lib/MSSA/MemRegion.cpp +1 -0
  216. package/lib/MSSA/MemSSA.cpp +1 -0
  217. package/lib/MTA/LockAnalysis.cpp +1 -0
  218. package/lib/MemoryModel/LocationSet.cpp +1 -0
  219. package/lib/MemoryModel/PointerAnalysis.cpp +1 -0
  220. package/lib/MemoryModel/SVFIR.cpp +1 -1
  221. package/lib/MemoryModel/SymbolTableInfo.cpp +1 -0
  222. package/lib/SABER/LeakChecker.cpp +1 -0
  223. package/lib/SABER/PathCondAllocator.cpp +1 -0
  224. package/lib/SVF-FE/CHGBuilder.cpp +1 -0
  225. package/lib/SVF-FE/CPPUtil.cpp +2 -2
  226. package/lib/SVF-FE/ICFGBuilder.cpp +1 -0
  227. package/lib/SVF-FE/LLVMUtil.cpp +32 -32
  228. package/lib/SVF-FE/SVFIRBuilder.cpp +2 -1
  229. package/lib/SVF-FE/SymbolTableBuilder.cpp +22 -16
  230. package/lib/WPA/AndersenStat.cpp +1 -0
  231. package/lib/WPA/FlowSensitiveStat.cpp +1 -0
  232. package/package.json +1 -1
  233. package/tools/CFL/cfl.cpp +1 -1
  234. package/tools/DDA/dda.cpp +1 -1
  235. package/tools/Example/svf-ex.cpp +1 -1
  236. package/tools/MTA/mta.cpp +1 -1
  237. package/tools/SABER/saber.cpp +1 -1
  238. package/tools/WPA/wpa.cpp +1 -1
@@ -140,75 +140,6 @@ Typedefs</h2></td></tr>
140
140
  </table><table class="memberdecls">
141
141
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
142
142
  Functions</h2></td></tr>
143
- <tr class="memitem:ac0df4ee0bf78167dd9461227b5cce7af"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#ac0df4ee0bf78167dd9461227b5cce7af">isBlackholeSym</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
144
- <tr class="memdesc:ac0df4ee0bf78167dd9461227b5cce7af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether this value is a black hole. <a href="#ac0df4ee0bf78167dd9461227b5cce7af">More...</a><br /></td></tr>
145
- <tr class="separator:ac0df4ee0bf78167dd9461227b5cce7af"><td class="memSeparator" colspan="2">&#160;</td></tr>
146
- <tr class="memitem:a4c1107b2635f374e71e6a3a43834469b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a4c1107b2635f374e71e6a3a43834469b">isNullPtrSym</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
147
- <tr class="memdesc:a4c1107b2635f374e71e6a3a43834469b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether this value is a black hole. <a href="#a4c1107b2635f374e71e6a3a43834469b">More...</a><br /></td></tr>
148
- <tr class="separator:a4c1107b2635f374e71e6a3a43834469b"><td class="memSeparator" colspan="2">&#160;</td></tr>
149
- <tr class="memitem:a6442fbf0cccd55cf93eab2b656756e9a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a6442fbf0cccd55cf93eab2b656756e9a">isConstantObjSym</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
150
- <tr class="memdesc:a6442fbf0cccd55cf93eab2b656756e9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether this value points-to a constant object. <a href="#a6442fbf0cccd55cf93eab2b656756e9a">More...</a><br /></td></tr>
151
- <tr class="separator:a6442fbf0cccd55cf93eab2b656756e9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
152
- <tr class="memitem:abd525a2e3b7b9167b61b2304cc2cbdf2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">isReturn</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</td></tr>
153
- <tr class="memdesc:abd525a2e3b7b9167b61b2304cc2cbdf2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether an instruction is a return instruction. <a href="#abd525a2e3b7b9167b61b2304cc2cbdf2">More...</a><br /></td></tr>
154
- <tr class="separator:abd525a2e3b7b9167b61b2304cc2cbdf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
155
- <tr class="memitem:a8e7f56fa15cea924a09cd6903de2606c"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">getPtrElementType</a> (const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *pty)</td></tr>
156
- <tr class="separator:a8e7f56fa15cea924a09cd6903de2606c"><td class="memSeparator" colspan="2">&#160;</td></tr>
157
- <tr class="memitem:acc9fd07cb66dbdeef696c3c745856094"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#acc9fd07cb66dbdeef696c3c745856094">isObject</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *ref)</td></tr>
158
- <tr class="memdesc:acc9fd07cb66dbdeef696c3c745856094"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if this value refers to a object. <a href="#acc9fd07cb66dbdeef696c3c745856094">More...</a><br /></td></tr>
159
- <tr class="separator:acc9fd07cb66dbdeef696c3c745856094"><td class="memSeparator" colspan="2">&#160;</td></tr>
160
- <tr class="memitem:a4d4191a1c81d80bf26aac120ed880135"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">ArgInProgEntryFunction</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
161
- <tr class="memdesc:a4d4191a1c81d80bf26aac120ed880135"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if this is an argument of a program entry function (e.g. main) <a href="#a4d4191a1c81d80bf26aac120ed880135">More...</a><br /></td></tr>
162
- <tr class="separator:a4d4191a1c81d80bf26aac120ed880135"><td class="memSeparator" colspan="2">&#160;</td></tr>
163
- <tr class="memitem:a4dcfe3e66a16813350ec8dffd47c5644"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a4dcfe3e66a16813350ec8dffd47c5644">isPtrInDeadFunction</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *value)</td></tr>
164
- <tr class="memdesc:a4dcfe3e66a16813350ec8dffd47c5644"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if this is value in a dead function (function without any caller) <a href="#a4dcfe3e66a16813350ec8dffd47c5644">More...</a><br /></td></tr>
165
- <tr class="separator:a4dcfe3e66a16813350ec8dffd47c5644"><td class="memSeparator" colspan="2">&#160;</td></tr>
166
- <tr class="memitem:a7a7e06e90a215086696effb5f5537baf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a7a7e06e90a215086696effb5f5537baf">functionDoesNotRet</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun)</td></tr>
167
- <tr class="memdesc:a7a7e06e90a215086696effb5f5537baf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if the function has a return instruction reachable from function entry. <a href="#a7a7e06e90a215086696effb5f5537baf">More...</a><br /></td></tr>
168
- <tr class="separator:a7a7e06e90a215086696effb5f5537baf"><td class="memSeparator" colspan="2">&#160;</td></tr>
169
- <tr class="memitem:a61b29238f1f32978c7b6aded4b73244d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a61b29238f1f32978c7b6aded4b73244d">getFunReachableBBs</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun, <a class="el" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> *dt, std::vector&lt; const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *&gt; &amp;bbs)</td></tr>
170
- <tr class="memdesc:a61b29238f1f32978c7b6aded4b73244d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get reachable basic block from function entry. <a href="#a61b29238f1f32978c7b6aded4b73244d">More...</a><br /></td></tr>
171
- <tr class="separator:a61b29238f1f32978c7b6aded4b73244d"><td class="memSeparator" colspan="2">&#160;</td></tr>
172
- <tr class="memitem:a3cb226930eeaf558575e09e5b65e0223"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">getFunExitBB</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun)</td></tr>
173
- <tr class="separator:a3cb226930eeaf558575e09e5b65e0223"><td class="memSeparator" colspan="2">&#160;</td></tr>
174
- <tr class="memitem:a86763e6a3606598580cd0172aecb5bc7"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a86763e6a3606598580cd0172aecb5bc7">stripConstantCasts</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
175
- <tr class="memdesc:a86763e6a3606598580cd0172aecb5bc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Strip off the constant casts. <a href="#a86763e6a3606598580cd0172aecb5bc7">More...</a><br /></td></tr>
176
- <tr class="separator:a86763e6a3606598580cd0172aecb5bc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
177
- <tr class="memitem:a69991ab4e9a7705202c1357079ab5fa8"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a69991ab4e9a7705202c1357079ab5fa8">stripAllCasts</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
178
- <tr class="memdesc:a69991ab4e9a7705202c1357079ab5fa8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Strip off the all casts. <a href="#a69991ab4e9a7705202c1357079ab5fa8">More...</a><br /></td></tr>
179
- <tr class="separator:a69991ab4e9a7705202c1357079ab5fa8"><td class="memSeparator" colspan="2">&#160;</td></tr>
180
- <tr class="memitem:a973113323e30a01fd904b35ac18d40ce"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a973113323e30a01fd904b35ac18d40ce">getTypeOfHeapAlloc</a> (const llvm::Instruction *inst)</td></tr>
181
- <tr class="memdesc:a973113323e30a01fd904b35ac18d40ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the type of the heap allocation. <a href="#a973113323e30a01fd904b35ac18d40ce">More...</a><br /></td></tr>
182
- <tr class="separator:a973113323e30a01fd904b35ac18d40ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
183
- <tr class="memitem:ad72b3529e87e71767c6d226821cfddb3"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#ad72b3529e87e71767c6d226821cfddb3">getUniqueUseViaCastInst</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
184
- <tr class="memdesc:ad72b3529e87e71767c6d226821cfddb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the bitcast instruction which is val's only use site, otherwise return nullptr. <a href="#ad72b3529e87e71767c6d226821cfddb3">More...</a><br /></td></tr>
185
- <tr class="separator:ad72b3529e87e71767c6d226821cfddb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
186
- <tr class="memitem:abe0dde753f9f79e30296208eb4d97eed"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#abe0dde753f9f79e30296208eb4d97eed">getDataLayout</a> (<a class="el" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> *mod)</td></tr>
187
- <tr class="separator:abe0dde753f9f79e30296208eb4d97eed"><td class="memSeparator" colspan="2">&#160;</td></tr>
188
- <tr class="memitem:a2f9959fa23ab4bdc65ca36fbda8c1b70"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *curInst, std::vector&lt; const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *&gt; &amp;instList)</td></tr>
189
- <tr class="memdesc:a2f9959fa23ab4bdc65ca36fbda8c1b70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the next instructions following control flow. <a href="#a2f9959fa23ab4bdc65ca36fbda8c1b70">More...</a><br /></td></tr>
190
- <tr class="separator:a2f9959fa23ab4bdc65ca36fbda8c1b70"><td class="memSeparator" colspan="2">&#160;</td></tr>
191
- <tr class="memitem:a7e3a8d6cb1715db9518579fb60181d5b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a7e3a8d6cb1715db9518579fb60181d5b">getPrevInsts</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *curInst, std::vector&lt; const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *&gt; &amp;instList)</td></tr>
192
- <tr class="memdesc:a7e3a8d6cb1715db9518579fb60181d5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the previous instructions following control flow. <a href="#a7e3a8d6cb1715db9518579fb60181d5b">More...</a><br /></td></tr>
193
- <tr class="separator:a7e3a8d6cb1715db9518579fb60181d5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
194
- <tr class="memitem:a1631bbbed23fbfe2204779ecc0dc2769"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a1631bbbed23fbfe2204779ecc0dc2769">getBBSuccessorPos</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB, const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *Succ)</td></tr>
195
- <tr class="memdesc:a1631bbbed23fbfe2204779ecc0dc2769"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get basic block successor position. <a href="#a1631bbbed23fbfe2204779ecc0dc2769">More...</a><br /></td></tr>
196
- <tr class="separator:a1631bbbed23fbfe2204779ecc0dc2769"><td class="memSeparator" colspan="2">&#160;</td></tr>
197
- <tr class="memitem:a737684498679dc16a26f2411d88f36aa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB)</td></tr>
198
- <tr class="memdesc:a737684498679dc16a26f2411d88f36aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get num of BB's successors. <a href="#a737684498679dc16a26f2411d88f36aa">More...</a><br /></td></tr>
199
- <tr class="separator:a737684498679dc16a26f2411d88f36aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
200
- <tr class="memitem:ae40e2e043b04ede541688ce61048fb4e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#ae40e2e043b04ede541688ce61048fb4e">getBBPredecessorPos</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB, const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *Pred)</td></tr>
201
- <tr class="memdesc:ae40e2e043b04ede541688ce61048fb4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get basic block predecessor positin. <a href="#ae40e2e043b04ede541688ce61048fb4e">More...</a><br /></td></tr>
202
- <tr class="separator:ae40e2e043b04ede541688ce61048fb4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
203
- <tr class="memitem:a0e78b0b6593209d78fae1dd0a5469463"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a0e78b0b6593209d78fae1dd0a5469463">getBBPredecessorNum</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB)</td></tr>
204
- <tr class="memdesc:a0e78b0b6593209d78fae1dd0a5469463"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get num of BB's predecessors. <a href="#a0e78b0b6593209d78fae1dd0a5469463">More...</a><br /></td></tr>
205
- <tr class="separator:a0e78b0b6593209d78fae1dd0a5469463"><td class="memSeparator" colspan="2">&#160;</td></tr>
206
- <tr class="memitem:aa1657ceed1953f96329fe7226bf7da4c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#aa1657ceed1953f96329fe7226bf7da4c">isIRFile</a> (const std::string &amp;filename)</td></tr>
207
- <tr class="memdesc:aa1657ceed1953f96329fe7226bf7da4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a file is an LLVM IR file. <a href="#aa1657ceed1953f96329fe7226bf7da4c">More...</a><br /></td></tr>
208
- <tr class="separator:aa1657ceed1953f96329fe7226bf7da4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
209
- <tr class="memitem:a62ca9a79ce7b6960e3fc42d8b183bd50"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">processArguments</a> (int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</td></tr>
210
- <tr class="memdesc:a62ca9a79ce7b6960e3fc42d8b183bd50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse argument for multi-module analysis. <a href="#a62ca9a79ce7b6960e3fc42d8b183bd50">More...</a><br /></td></tr>
211
- <tr class="separator:a62ca9a79ce7b6960e3fc42d8b183bd50"><td class="memSeparator" colspan="2">&#160;</td></tr>
212
143
  <tr class="memitem:a5c8cbc986cccb9d84f87aae162df3737"><td class="memTemplParams" colspan="2">template&lt;class X , class Y &gt; </td></tr>
213
144
  <tr class="memitem:a5c8cbc986cccb9d84f87aae162df3737"><td class="memTemplItemLeft" align="right" valign="top">LLVM_NODISCARD bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">isa</a> (const Y &amp;Val)</td></tr>
214
145
  <tr class="separator:a5c8cbc986cccb9d84f87aae162df3737"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -386,52 +317,6 @@ Functions</h2></td></tr>
386
317
  <tr class="memitem:a68b531ca4077e71dcc6d085e47a9730b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a68b531ca4077e71dcc6d085e47a9730b">isProgExitCall</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</td></tr>
387
318
  <tr class="separator:a68b531ca4077e71dcc6d085e47a9730b"><td class="memSeparator" colspan="2">&#160;</td></tr>
388
319
  <tr><td colspan="2"><div class="groupHeader"></div></td></tr>
389
- <tr class="memitem:a9232d260dc83d3a25cd98195ba76567a"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">getRefTypeOfHeapAllocOrStatic</a> (const <a class="el" href="classSVF_1_1CallSite.html">CallSite</a> cs)</td></tr>
390
- <tr class="memdesc:a9232d260dc83d3a25cd98195ba76567a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the reference type of heap/static object from an allocation site. <a href="#a9232d260dc83d3a25cd98195ba76567a">More...</a><br /></td></tr>
391
- <tr class="separator:a9232d260dc83d3a25cd98195ba76567a"><td class="memSeparator" colspan="2">&#160;</td></tr>
392
- <tr class="memitem:a642f8284fbb260dd81fb29d5fadf6822"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a642f8284fbb260dd81fb29d5fadf6822">getRefTypeOfHeapAllocOrStatic</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</td></tr>
393
- <tr class="separator:a642f8284fbb260dd81fb29d5fadf6822"><td class="memSeparator" colspan="2">&#160;</td></tr>
394
- <tr><td colspan="2"><div class="groupHeader"></div></td></tr>
395
- <tr class="memitem:a6d268e8d588717601345be3a911a7625"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a6d268e8d588717601345be3a911a7625">isDeadFunction</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun)</td></tr>
396
- <tr class="memdesc:a6d268e8d588717601345be3a911a7625"><td class="mdescLeft">&#160;</td><td class="mdescRight">whether this is a function without any possible caller? <a href="#a6d268e8d588717601345be3a911a7625">More...</a><br /></td></tr>
397
- <tr class="separator:a6d268e8d588717601345be3a911a7625"><td class="memSeparator" colspan="2">&#160;</td></tr>
398
- <tr class="memitem:a4543a9c0299c72deb68f2472e1ea05ce"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a4543a9c0299c72deb68f2472e1ea05ce">ArgInDeadFunction</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
399
- <tr class="memdesc:a4543a9c0299c72deb68f2472e1ea05ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">whether this is an argument in dead function <a href="#a4543a9c0299c72deb68f2472e1ea05ce">More...</a><br /></td></tr>
400
- <tr class="separator:a4543a9c0299c72deb68f2472e1ea05ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
401
- <tr><td colspan="2"><div class="groupHeader"></div></td></tr>
402
- <tr class="memitem:ae7007ebc6a543dc30ef076b4aed75b1b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#ae7007ebc6a543dc30ef076b4aed75b1b">isNoCallerFunction</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun)</td></tr>
403
- <tr class="memdesc:ae7007ebc6a543dc30ef076b4aed75b1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function does not have any possible caller in the call graph. <a href="#ae7007ebc6a543dc30ef076b4aed75b1b">More...</a><br /></td></tr>
404
- <tr class="separator:ae7007ebc6a543dc30ef076b4aed75b1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
405
- <tr class="memitem:afd690c09e01989e57899875ca97f0166"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#afd690c09e01989e57899875ca97f0166">ArgInNoCallerFunction</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
406
- <tr class="memdesc:afd690c09e01989e57899875ca97f0166"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if the argument in a function does not have a caller. <a href="#afd690c09e01989e57899875ca97f0166">More...</a><br /></td></tr>
407
- <tr class="separator:afd690c09e01989e57899875ca97f0166"><td class="memSeparator" colspan="2">&#160;</td></tr>
408
- <tr><td colspan="2"><div class="groupHeader"></div></td></tr>
409
- <tr class="memitem:a384b0986a6c4e99dfc4e1629b3598c3c"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">isGepConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
410
- <tr class="memdesc:a384b0986a6c4e99dfc4e1629b3598c3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return corresponding constant expression, otherwise return nullptr. <a href="#a384b0986a6c4e99dfc4e1629b3598c3c">More...</a><br /></td></tr>
411
- <tr class="separator:a384b0986a6c4e99dfc4e1629b3598c3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
412
- <tr class="memitem:a6bc4376ada53ddfbf8df2ca817153555"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">isInt2PtrConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
413
- <tr class="separator:a6bc4376ada53ddfbf8df2ca817153555"><td class="memSeparator" colspan="2">&#160;</td></tr>
414
- <tr class="memitem:a093b7ae4ad144fb5d028366b1814861a"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">isPtr2IntConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
415
- <tr class="separator:a093b7ae4ad144fb5d028366b1814861a"><td class="memSeparator" colspan="2">&#160;</td></tr>
416
- <tr class="memitem:a7e404bcc6613ba10a56c4fbdc842c5a8"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a7e404bcc6613ba10a56c4fbdc842c5a8">isCastConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
417
- <tr class="separator:a7e404bcc6613ba10a56c4fbdc842c5a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
418
- <tr class="memitem:a07d991d5bfccce9ebdef0cbb6f4bf739"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a07d991d5bfccce9ebdef0cbb6f4bf739">isSelectConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
419
- <tr class="separator:a07d991d5bfccce9ebdef0cbb6f4bf739"><td class="memSeparator" colspan="2">&#160;</td></tr>
420
- <tr class="memitem:a1373688c6faba4dcdb640106575ea433"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a1373688c6faba4dcdb640106575ea433">isTruncConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
421
- <tr class="separator:a1373688c6faba4dcdb640106575ea433"><td class="memSeparator" colspan="2">&#160;</td></tr>
422
- <tr class="memitem:a4adb63c87a9489ab905d42230ac66299"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">isCmpConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
423
- <tr class="separator:a4adb63c87a9489ab905d42230ac66299"><td class="memSeparator" colspan="2">&#160;</td></tr>
424
- <tr class="memitem:a43c9072210a5f5baeafe36da03f2fde2"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a43c9072210a5f5baeafe36da03f2fde2">isBinaryConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
425
- <tr class="separator:a43c9072210a5f5baeafe36da03f2fde2"><td class="memSeparator" colspan="2">&#160;</td></tr>
426
- <tr class="memitem:af14757d5cf466bba20a125f118378560"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#af14757d5cf466bba20a125f118378560">isUnaryConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
427
- <tr class="separator:af14757d5cf466bba20a125f118378560"><td class="memSeparator" colspan="2">&#160;</td></tr>
428
- <tr><td colspan="2"><div class="groupHeader"></div></td></tr>
429
- <tr class="memitem:a86fec3512ea1fc724cf567f52d348678"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a86fec3512ea1fc724cf567f52d348678">getTypeSizeInBytes</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type)</td></tr>
430
- <tr class="memdesc:a86fec3512ea1fc724cf567f52d348678"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper method to get the size of the type from target data layout. <a href="#a86fec3512ea1fc724cf567f52d348678">More...</a><br /></td></tr>
431
- <tr class="separator:a86fec3512ea1fc724cf567f52d348678"><td class="memSeparator" colspan="2">&#160;</td></tr>
432
- <tr class="memitem:a1dadc280bc2df41b82167ed236985dd5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a1dadc280bc2df41b82167ed236985dd5">getTypeSizeInBytes</a> (const <a class="el" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_index)</td></tr>
433
- <tr class="separator:a1dadc280bc2df41b82167ed236985dd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
434
- <tr><td colspan="2"><div class="groupHeader"></div></td></tr>
435
320
  <tr class="memitem:a5d4bb92f5df30417f414397f8e58cf01"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">errMsg</a> (std::string msg)</td></tr>
436
321
  <tr class="memdesc:a5d4bb92f5df30417f414397f8e58cf01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print error message by converting a string into red string output. <a href="#a5d4bb92f5df30417f414397f8e58cf01">More...</a><br /></td></tr>
437
322
  <tr class="separator:a5d4bb92f5df30417f414397f8e58cf01"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -605,99 +490,6 @@ Functions</h2></td></tr>
605
490
  </div>
606
491
  </div>
607
492
  <h2 class="groupheader">Function Documentation</h2>
608
- <a id="a4543a9c0299c72deb68f2472e1ea05ce"></a>
609
- <h2 class="memtitle"><span class="permalink"><a href="#a4543a9c0299c72deb68f2472e1ea05ce">&#9670;&nbsp;</a></span>ArgInDeadFunction()</h2>
610
-
611
- <div class="memitem">
612
- <div class="memproto">
613
- <table class="mlabels">
614
- <tr>
615
- <td class="mlabels-left">
616
- <table class="memname">
617
- <tr>
618
- <td class="memname">bool SVF::SVFUtil::ArgInDeadFunction </td>
619
- <td>(</td>
620
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
621
- <td class="paramname"><em>val</em></td><td>)</td>
622
- <td></td>
623
- </tr>
624
- </table>
625
- </td>
626
- <td class="mlabels-right">
627
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
628
- </tr>
629
- </table>
630
- </div><div class="memdoc">
631
-
632
- <p>whether this is an argument in dead function </p>
633
-
634
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00124">124</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
635
- <div class="fragment"><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;{</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6d268e8d588717601345be3a911a7625">isDeadFunction</a>(SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6d268e8d588717601345be3a911a7625"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6d268e8d588717601345be3a911a7625">SVF::SVFUtil::isDeadFunction</a></div><div class="ttdeci">bool isDeadFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller? </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00160">LLVMUtil.cpp:160</a></div></div>
636
- </div><!-- fragment -->
637
- </div>
638
- </div>
639
- <a id="afd690c09e01989e57899875ca97f0166"></a>
640
- <h2 class="memtitle"><span class="permalink"><a href="#afd690c09e01989e57899875ca97f0166">&#9670;&nbsp;</a></span>ArgInNoCallerFunction()</h2>
641
-
642
- <div class="memitem">
643
- <div class="memproto">
644
- <table class="mlabels">
645
- <tr>
646
- <td class="mlabels-left">
647
- <table class="memname">
648
- <tr>
649
- <td class="memname">bool SVF::SVFUtil::ArgInNoCallerFunction </td>
650
- <td>(</td>
651
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
652
- <td class="paramname"><em>val</em></td><td>)</td>
653
- <td></td>
654
- </tr>
655
- </table>
656
- </td>
657
- <td class="mlabels-right">
658
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
659
- </tr>
660
- </table>
661
- </div><div class="memdoc">
662
-
663
- <p>Return true if the argument in a function does not have a caller. </p>
664
-
665
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00152">152</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
666
- <div class="fragment"><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae7007ebc6a543dc30ef076b4aed75b1b">isNoCallerFunction</a>(SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae7007ebc6a543dc30ef076b4aed75b1b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae7007ebc6a543dc30ef076b4aed75b1b">SVF::SVFUtil::isNoCallerFunction</a></div><div class="ttdeci">bool isNoCallerFunction(const Function *fun)</div><div class="ttdoc">Function does not have any possible caller in the call graph. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00146">LLVMUtil.h:146</a></div></div>
667
- </div><!-- fragment -->
668
- </div>
669
- </div>
670
- <a id="a4d4191a1c81d80bf26aac120ed880135"></a>
671
- <h2 class="memtitle"><span class="permalink"><a href="#a4d4191a1c81d80bf26aac120ed880135">&#9670;&nbsp;</a></span>ArgInProgEntryFunction()</h2>
672
-
673
- <div class="memitem">
674
- <div class="memproto">
675
- <table class="mlabels">
676
- <tr>
677
- <td class="mlabels-left">
678
- <table class="memname">
679
- <tr>
680
- <td class="memname">bool SVF::SVFUtil::ArgInProgEntryFunction </td>
681
- <td>(</td>
682
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
683
- <td class="paramname"><em>val</em></td><td>)</td>
684
- <td></td>
685
- </tr>
686
- </table>
687
- </td>
688
- <td class="mlabels-right">
689
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
690
- </tr>
691
- </table>
692
- </div><div class="memdoc">
693
-
694
- <p>Return true if this is an argument of a program entry function (e.g. main) </p>
695
-
696
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00132">132</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
697
- <div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;{</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">isProgEntryFunction</a>(SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2c97c2b79b795465490512e267a9309b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">SVF::SVFUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const SVFFunction *fun)</div><div class="ttdoc">Program entry function e.g. main. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00417">SVFUtil.h:417</a></div></div>
698
- </div><!-- fragment -->
699
- </div>
700
- </div>
701
493
  <a id="af6c66553e2559eebfe4f98c0c7ec4b08"></a>
702
494
  <h2 class="memtitle"><span class="permalink"><a href="#af6c66553e2559eebfe4f98c0c7ec4b08">&#9670;&nbsp;</a></span>bugMsg1()</h2>
703
495
 
@@ -1320,32 +1112,6 @@ template&lt;class X , class Y &gt; </div>
1320
1112
  <div class="fragment"><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;{</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">return</span> ExtAPI::getExtAPI()-&gt;get_type(fun);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;}</div></div><!-- fragment -->
1321
1113
  </div>
1322
1114
  </div>
1323
- <a id="a7a7e06e90a215086696effb5f5537baf"></a>
1324
- <h2 class="memtitle"><span class="permalink"><a href="#a7a7e06e90a215086696effb5f5537baf">&#9670;&nbsp;</a></span>functionDoesNotRet()</h2>
1325
-
1326
- <div class="memitem">
1327
- <div class="memproto">
1328
- <table class="memname">
1329
- <tr>
1330
- <td class="memname">bool SVF::SVFUtil::functionDoesNotRet </td>
1331
- <td>(</td>
1332
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *&#160;</td>
1333
- <td class="paramname"><em>fun</em></td><td>)</td>
1334
- <td></td>
1335
- </tr>
1336
- </table>
1337
- </div><div class="memdoc">
1338
-
1339
- <p>Return true if the function has a return instruction reachable from function entry. </p>
1340
- <p>Return true if the function has a return instruction reachable from function entry </p>
1341
-
1342
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00123">123</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1343
- <div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; std::vector&lt;const BasicBlock*&gt; bbVec;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const BasicBlock*&gt;</a> visited;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; bbVec.push_back(&amp;fun-&gt;getEntryBlock());</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">while</span>(!bbVec.empty())</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; bbVec.pop_back();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb-&gt;begin(), eit = bb-&gt;end();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; it != eit; ++it)</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; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ReturnInst&gt;(*it))</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> sit = succ_begin(bb), esit = succ_end(bb);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; sit != esit; ++sit)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*sit);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; visited.insert(succbb);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; bbVec.push_back(succbb);</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; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment">// if(isProgEntryFunction(fun)==false) {</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment">// writeWrnMsg(fun-&gt;getName().str() + &quot; does not have return&quot;);</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment">// }</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
1344
- <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00119">BasicTypes.h:119</a></div></div>
1345
- <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00104">SVFBasicTypes.h:104</a></div></div>
1346
- </div><!-- fragment -->
1347
- </div>
1348
- </div>
1349
1115
  <a id="aaeeb386d80b51d729322317065606454"></a>
1350
1116
  <h2 class="memtitle"><span class="permalink"><a href="#aaeeb386d80b51d729322317065606454">&#9670;&nbsp;</a></span>getActualParmAtForkSite() <span class="overload">[1/2]</span></h2>
1351
1117
 
@@ -1404,126 +1170,6 @@ template&lt;class X , class Y &gt; </div>
1404
1170
  <div class="fragment"><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;{</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()-&gt;getActualParmAtForkSite(inst);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;}</div></div><!-- fragment -->
1405
1171
  </div>
1406
1172
  </div>
1407
- <a id="a0e78b0b6593209d78fae1dd0a5469463"></a>
1408
- <h2 class="memtitle"><span class="permalink"><a href="#a0e78b0b6593209d78fae1dd0a5469463">&#9670;&nbsp;</a></span>getBBPredecessorNum()</h2>
1409
-
1410
- <div class="memitem">
1411
- <div class="memproto">
1412
- <table class="memname">
1413
- <tr>
1414
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::SVFUtil::getBBPredecessorNum </td>
1415
- <td>(</td>
1416
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *&#160;</td>
1417
- <td class="paramname"><em>BB</em></td><td>)</td>
1418
- <td></td>
1419
- </tr>
1420
- </table>
1421
- </div><div class="memdoc">
1422
-
1423
- <p>Get num of BB's predecessors. </p>
1424
- <p>Get the num of BB's predecessors </p>
1425
-
1426
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00397">397</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1427
- <div class="fragment"><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;{</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a45136b941670180e9ba248bb4e52f09f">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; num++;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> num;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
1428
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a45136b941670180e9ba248bb4e52f09f"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a45136b941670180e9ba248bb4e52f09f">const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
1429
- </div><!-- fragment -->
1430
- </div>
1431
- </div>
1432
- <a id="ae40e2e043b04ede541688ce61048fb4e"></a>
1433
- <h2 class="memtitle"><span class="permalink"><a href="#ae40e2e043b04ede541688ce61048fb4e">&#9670;&nbsp;</a></span>getBBPredecessorPos()</h2>
1434
-
1435
- <div class="memitem">
1436
- <div class="memproto">
1437
- <table class="memname">
1438
- <tr>
1439
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::SVFUtil::getBBPredecessorPos </td>
1440
- <td>(</td>
1441
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *&#160;</td>
1442
- <td class="paramname"><em>bb</em>, </td>
1443
- </tr>
1444
- <tr>
1445
- <td class="paramkey"></td>
1446
- <td></td>
1447
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *&#160;</td>
1448
- <td class="paramname"><em>succbb</em>&#160;</td>
1449
- </tr>
1450
- <tr>
1451
- <td></td>
1452
- <td>)</td>
1453
- <td></td><td></td>
1454
- </tr>
1455
- </table>
1456
- </div><div class="memdoc">
1457
-
1458
- <p>Get basic block predecessor positin. </p>
1459
- <p>Return a position index from current bb to it successor bb </p>
1460
-
1461
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00374">374</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1462
- <div class="fragment"><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;{</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a45136b941670180e9ba248bb4e52f09f">const_pred_iterator</a> it = pred_begin(succbb), et = pred_end(succbb); it != et; ++it, ++pos)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span>(*it==bb)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Didn&#39;t find predecessor edge?&quot;</span>);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;}</div><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>
1463
- <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
1464
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a45136b941670180e9ba248bb4e52f09f"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a45136b941670180e9ba248bb4e52f09f">const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
1465
- </div><!-- fragment -->
1466
- </div>
1467
- </div>
1468
- <a id="a737684498679dc16a26f2411d88f36aa"></a>
1469
- <h2 class="memtitle"><span class="permalink"><a href="#a737684498679dc16a26f2411d88f36aa">&#9670;&nbsp;</a></span>getBBSuccessorNum()</h2>
1470
-
1471
- <div class="memitem">
1472
- <div class="memproto">
1473
- <table class="memname">
1474
- <tr>
1475
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::SVFUtil::getBBSuccessorNum </td>
1476
- <td>(</td>
1477
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *&#160;</td>
1478
- <td class="paramname"><em>BB</em></td><td>)</td>
1479
- <td></td>
1480
- </tr>
1481
- </table>
1482
- </div><div class="memdoc">
1483
-
1484
- <p>Get num of BB's successors. </p>
1485
- <p>Get the num of BB's successors </p>
1486
-
1487
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00389">389</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1488
- <div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;{</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">return</span> BB-&gt;getTerminator()-&gt;getNumSuccessors();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;}</div></div><!-- fragment -->
1489
- </div>
1490
- </div>
1491
- <a id="a1631bbbed23fbfe2204779ecc0dc2769"></a>
1492
- <h2 class="memtitle"><span class="permalink"><a href="#a1631bbbed23fbfe2204779ecc0dc2769">&#9670;&nbsp;</a></span>getBBSuccessorPos()</h2>
1493
-
1494
- <div class="memitem">
1495
- <div class="memproto">
1496
- <table class="memname">
1497
- <tr>
1498
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::SVFUtil::getBBSuccessorPos </td>
1499
- <td>(</td>
1500
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *&#160;</td>
1501
- <td class="paramname"><em>BB</em>, </td>
1502
- </tr>
1503
- <tr>
1504
- <td class="paramkey"></td>
1505
- <td></td>
1506
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *&#160;</td>
1507
- <td class="paramname"><em>Succ</em>&#160;</td>
1508
- </tr>
1509
- <tr>
1510
- <td></td>
1511
- <td>)</td>
1512
- <td></td><td></td>
1513
- </tr>
1514
- </table>
1515
- </div><div class="memdoc">
1516
-
1517
- <p>Get basic block successor position. </p>
1518
- <p>Get position of a successor basic block </p>
1519
-
1520
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00357">357</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1521
- <div class="fragment"><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;{</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *SuccBB: successors(BB))</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">if</span> (SuccBB == Succ)</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">return</span> i;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; i++;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Didn&#39;t find succesor edge?&quot;</span>);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
1522
- <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>
1523
- <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
1524
- </div><!-- fragment -->
1525
- </div>
1526
- </div>
1527
1173
  <a id="a145abbd2958629718fbca41d25c3124d"></a>
1528
1174
  <h2 class="memtitle"><span class="permalink"><a href="#a145abbd2958629718fbca41d25c3124d">&#9670;&nbsp;</a></span>getCallee() <span class="overload">[1/2]</span></h2>
1529
1175
 
@@ -1587,35 +1233,6 @@ template&lt;class X , class Y &gt; </div>
1587
1233
  </div><!-- fragment -->
1588
1234
  </div>
1589
1235
  </div>
1590
- <a id="abe0dde753f9f79e30296208eb4d97eed"></a>
1591
- <h2 class="memtitle"><span class="permalink"><a href="#abe0dde753f9f79e30296208eb4d97eed">&#9670;&nbsp;</a></span>getDataLayout()</h2>
1592
-
1593
- <div class="memitem">
1594
- <div class="memproto">
1595
- <table class="mlabels">
1596
- <tr>
1597
- <td class="mlabels-left">
1598
- <table class="memname">
1599
- <tr>
1600
- <td class="memname">static <a class="el" href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a>* SVF::SVFUtil::getDataLayout </td>
1601
- <td>(</td>
1602
- <td class="paramtype"><a class="el" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> *&#160;</td>
1603
- <td class="paramname"><em>mod</em></td><td>)</td>
1604
- <td></td>
1605
- </tr>
1606
- </table>
1607
- </td>
1608
- <td class="mlabels-right">
1609
- <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1610
- </tr>
1611
- </table>
1612
- </div><div class="memdoc">
1613
-
1614
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00280">280</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1615
- <div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;{</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">static</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a> *dl = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (dl == <span class="keyword">nullptr</span>) dl = <span class="keyword">new</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a>(mod);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> dl;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_aa81a27b9c6b2a354437417162220fb14"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a></div><div class="ttdeci">llvm::DataLayout DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00051">BasicTypes.h:51</a></div></div>
1616
- </div><!-- fragment -->
1617
- </div>
1618
- </div>
1619
1236
  <a id="a142e650415cb81011eb59dadd3cb0637"></a>
1620
1237
  <h2 class="memtitle"><span class="permalink"><a href="#a142e650415cb81011eb59dadd3cb0637">&#9670;&nbsp;</a></span>getDefFunForMultipleModule()</h2>
1621
1238
 
@@ -1737,77 +1354,6 @@ template&lt;class X , class Y &gt; </div>
1737
1354
  </div><!-- fragment -->
1738
1355
  </div>
1739
1356
  </div>
1740
- <a id="a3cb226930eeaf558575e09e5b65e0223"></a>
1741
- <h2 class="memtitle"><span class="permalink"><a href="#a3cb226930eeaf558575e09e5b65e0223">&#9670;&nbsp;</a></span>getFunExitBB()</h2>
1742
-
1743
- <div class="memitem">
1744
- <div class="memproto">
1745
- <table class="mlabels">
1746
- <tr>
1747
- <td class="mlabels-left">
1748
- <table class="memname">
1749
- <tr>
1750
- <td class="memname">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* SVF::SVFUtil::getFunExitBB </td>
1751
- <td>(</td>
1752
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *&#160;</td>
1753
- <td class="paramname"><em>fun</em></td><td>)</td>
1754
- <td></td>
1755
- </tr>
1756
- </table>
1757
- </td>
1758
- <td class="mlabels-right">
1759
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
1760
- </tr>
1761
- </table>
1762
- </div><div class="memdoc">
1763
- <p>Get function exit basic block FIXME: this back() here is only valid when UnifyFunctionExitNodes pass is invoked </p>
1764
-
1765
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00167">167</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1766
- <div class="fragment"><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> &amp;fun-&gt;back();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;}</div></div><!-- fragment -->
1767
- </div>
1768
- </div>
1769
- <a id="a61b29238f1f32978c7b6aded4b73244d"></a>
1770
- <h2 class="memtitle"><span class="permalink"><a href="#a61b29238f1f32978c7b6aded4b73244d">&#9670;&nbsp;</a></span>getFunReachableBBs()</h2>
1771
-
1772
- <div class="memitem">
1773
- <div class="memproto">
1774
- <table class="memname">
1775
- <tr>
1776
- <td class="memname">void SVF::SVFUtil::getFunReachableBBs </td>
1777
- <td>(</td>
1778
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *&#160;</td>
1779
- <td class="paramname"><em>fun</em>, </td>
1780
- </tr>
1781
- <tr>
1782
- <td class="paramkey"></td>
1783
- <td></td>
1784
- <td class="paramtype"><a class="el" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> *&#160;</td>
1785
- <td class="paramname"><em>dt</em>, </td>
1786
- </tr>
1787
- <tr>
1788
- <td class="paramkey"></td>
1789
- <td></td>
1790
- <td class="paramtype">std::vector&lt; const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *&gt; &amp;&#160;</td>
1791
- <td class="paramname"><em>reachableBBs</em>&#160;</td>
1792
- </tr>
1793
- <tr>
1794
- <td></td>
1795
- <td>)</td>
1796
- <td></td><td></td>
1797
- </tr>
1798
- </table>
1799
- </div><div class="memdoc">
1800
-
1801
- <p>Get reachable basic block from function entry. </p>
1802
- <p>Return reachable bbs from function entry </p>
1803
-
1804
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00094">94</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1805
- <div class="fragment"><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; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const BasicBlock*&gt;</a> visited;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; std::vector&lt;const BasicBlock*&gt; bbVec;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; bbVec.push_back(&amp;fun-&gt;getEntryBlock());</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">while</span>(!bbVec.empty())</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; bbVec.pop_back();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; reachableBBs.push_back(bb);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> *dtNode = dt-&gt;getNode(const_cast&lt;BasicBlock*&gt;(bb)))</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="keywordflow">for</span> (DomTreeNode::iterator DI = dtNode-&gt;begin(), DE = dtNode-&gt;end();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; DI != DE; ++DI)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*DI)-&gt;getBlock();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; visited.insert(succbb);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; bbVec.push_back(succbb);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
1806
- <div class="ttc" id="namespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00112">BasicTypes.h:112</a></div></div>
1807
- <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00104">SVFBasicTypes.h:104</a></div></div>
1808
- </div><!-- fragment -->
1809
- </div>
1810
- </div>
1811
1357
  <a id="a4b55d5252da1f316f505cf6ce2078b28"></a>
1812
1358
  <h2 class="memtitle"><span class="permalink"><a href="#a4b55d5252da1f316f505cf6ce2078b28">&#9670;&nbsp;</a></span>getGlobalRep()</h2>
1813
1359
 
@@ -2030,95 +1576,21 @@ template&lt;class X , class Y &gt; </div>
2030
1576
  </div><!-- fragment -->
2031
1577
  </div>
2032
1578
  </div>
2033
- <a id="a2f9959fa23ab4bdc65ca36fbda8c1b70"></a>
2034
- <h2 class="memtitle"><span class="permalink"><a href="#a2f9959fa23ab4bdc65ca36fbda8c1b70">&#9670;&nbsp;</a></span>getNextInsts()</h2>
1579
+ <a id="aa8017e3e5100b3f63ee338b66118d266"></a>
1580
+ <h2 class="memtitle"><span class="permalink"><a href="#aa8017e3e5100b3f63ee338b66118d266">&#9670;&nbsp;</a></span>getProgEntryFunction()</h2>
2035
1581
 
2036
1582
  <div class="memitem">
2037
1583
  <div class="memproto">
1584
+ <table class="mlabels">
1585
+ <tr>
1586
+ <td class="mlabels-left">
2038
1587
  <table class="memname">
2039
1588
  <tr>
2040
- <td class="memname">void SVF::SVFUtil::getNextInsts </td>
1589
+ <td class="memname">const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* SVF::SVFUtil::getProgEntryFunction </td>
2041
1590
  <td>(</td>
2042
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *&#160;</td>
2043
- <td class="paramname"><em>curInst</em>, </td>
2044
- </tr>
2045
- <tr>
2046
- <td class="paramkey"></td>
2047
- <td></td>
2048
- <td class="paramtype">std::vector&lt; const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *&gt; &amp;&#160;</td>
2049
- <td class="paramname"><em>instList</em>&#160;</td>
2050
- </tr>
2051
- <tr>
2052
- <td></td>
2053
- <td>)</td>
2054
- <td></td><td></td>
2055
- </tr>
2056
- </table>
2057
- </div><div class="memdoc">
2058
-
2059
- <p>Get the next instructions following control flow. </p>
2060
-
2061
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00250">250</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2062
- <div class="fragment"><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;{</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(nextInst))</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(nextInst, instList);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; instList.push_back(nextInst);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(nextInst))</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(nextInst, instList);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; instList.push_back(nextInst);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;}</div><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#l00181">SVFUtil.h:181</a></div></div>
2063
- <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
2064
- <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00119">BasicTypes.h:119</a></div></div>
2065
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2f9959fa23ab4bdc65ca36fbda8c1b70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">SVF::SVFUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector&lt; const Instruction *&gt; &amp;instList)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00250">LLVMUtil.cpp:250</a></div></div>
2066
- <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
2067
- </div><!-- fragment -->
2068
- </div>
2069
- </div>
2070
- <a id="a7e3a8d6cb1715db9518579fb60181d5b"></a>
2071
- <h2 class="memtitle"><span class="permalink"><a href="#a7e3a8d6cb1715db9518579fb60181d5b">&#9670;&nbsp;</a></span>getPrevInsts()</h2>
2072
-
2073
- <div class="memitem">
2074
- <div class="memproto">
2075
- <table class="memname">
2076
- <tr>
2077
- <td class="memname">void SVF::SVFUtil::getPrevInsts </td>
2078
- <td>(</td>
2079
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *&#160;</td>
2080
- <td class="paramname"><em>curInst</em>, </td>
2081
- </tr>
2082
- <tr>
2083
- <td class="paramkey"></td>
2084
- <td></td>
2085
- <td class="paramtype">std::vector&lt; const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *&gt; &amp;&#160;</td>
2086
- <td class="paramname"><em>instList</em>&#160;</td>
2087
- </tr>
2088
- <tr>
2089
- <td></td>
2090
- <td>)</td>
2091
- <td></td><td></td>
2092
- </tr>
2093
- </table>
2094
- </div><div class="memdoc">
2095
-
2096
- <p>Get the previous instructions following control flow. </p>
2097
-
2098
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00277">277</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2099
- <div class="fragment"><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(prevInst))</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7e3a8d6cb1715db9518579fb60181d5b">getPrevInsts</a>(prevInst, instList);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; instList.push_back(prevInst);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a45136b941670180e9ba248bb4e52f09f">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(prevInst))</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7e3a8d6cb1715db9518579fb60181d5b">getPrevInsts</a>(prevInst, instList);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; instList.push_back(prevInst);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;}</div><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#l00181">SVFUtil.h:181</a></div></div>
2100
- <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
2101
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7e3a8d6cb1715db9518579fb60181d5b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7e3a8d6cb1715db9518579fb60181d5b">SVF::SVFUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector&lt; const Instruction *&gt; &amp;instList)</div><div class="ttdoc">Get the previous instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00277">LLVMUtil.cpp:277</a></div></div>
2102
- <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
2103
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a45136b941670180e9ba248bb4e52f09f"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a45136b941670180e9ba248bb4e52f09f">const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
2104
- </div><!-- fragment -->
2105
- </div>
2106
- </div>
2107
- <a id="aa8017e3e5100b3f63ee338b66118d266"></a>
2108
- <h2 class="memtitle"><span class="permalink"><a href="#aa8017e3e5100b3f63ee338b66118d266">&#9670;&nbsp;</a></span>getProgEntryFunction()</h2>
2109
-
2110
- <div class="memitem">
2111
- <div class="memproto">
2112
- <table class="mlabels">
2113
- <tr>
2114
- <td class="mlabels-left">
2115
- <table class="memname">
2116
- <tr>
2117
- <td class="memname">const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* SVF::SVFUtil::getProgEntryFunction </td>
2118
- <td>(</td>
2119
- <td class="paramtype"><a class="el" href="classSVF_1_1SVFModule.html">SVFModule</a> *&#160;</td>
2120
- <td class="paramname"><em>svfModule</em></td><td>)</td>
2121
- <td></td>
1591
+ <td class="paramtype"><a class="el" href="classSVF_1_1SVFModule.html">SVFModule</a> *&#160;</td>
1592
+ <td class="paramname"><em>svfModule</em></td><td>)</td>
1593
+ <td></td>
2122
1594
  </tr>
2123
1595
  </table>
2124
1596
  </td>
@@ -2175,103 +1647,6 @@ template&lt;class X , class Y &gt; </div>
2175
1647
  <div class="fragment"><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;{</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">for</span> (SVFModule::const_iterator it = svfModule-&gt;begin(), eit = svfModule-&gt;end(); it != eit; ++it)</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keyword">const</span> SVFFunction *fun = *it;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (fun-&gt;getName()==funName)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">return</span> fun;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;}</div></div><!-- fragment -->
2176
1648
  </div>
2177
1649
  </div>
2178
- <a id="a8e7f56fa15cea924a09cd6903de2606c"></a>
2179
- <h2 class="memtitle"><span class="permalink"><a href="#a8e7f56fa15cea924a09cd6903de2606c">&#9670;&nbsp;</a></span>getPtrElementType()</h2>
2180
-
2181
- <div class="memitem">
2182
- <div class="memproto">
2183
- <table class="mlabels">
2184
- <tr>
2185
- <td class="mlabels-left">
2186
- <table class="memname">
2187
- <tr>
2188
- <td class="memname">static <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* SVF::SVFUtil::getPtrElementType </td>
2189
- <td>(</td>
2190
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *&#160;</td>
2191
- <td class="paramname"><em>pty</em></td><td>)</td>
2192
- <td></td>
2193
- </tr>
2194
- </table>
2195
- </td>
2196
- <td class="mlabels-right">
2197
- <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
2198
- </tr>
2199
- </table>
2200
- </div><div class="memdoc">
2201
-
2202
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00073">73</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2203
- <div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;{</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &lt; 14)</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> pty-&gt;getElementType();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!pty-&gt;isOpaque() &amp;&amp; <span class="stringliteral">&quot;Opaque Pointer is used, please recompile the source adding &#39;-Xclang -no-opaque-pointer&#39;&quot;</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> pty-&gt;getNonOpaquePointerElementType();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div><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>
2204
- </div><!-- fragment -->
2205
- </div>
2206
- </div>
2207
- <a id="a9232d260dc83d3a25cd98195ba76567a"></a>
2208
- <h2 class="memtitle"><span class="permalink"><a href="#a9232d260dc83d3a25cd98195ba76567a">&#9670;&nbsp;</a></span>getRefTypeOfHeapAllocOrStatic() <span class="overload">[1/2]</span></h2>
2209
-
2210
- <div class="memitem">
2211
- <div class="memproto">
2212
- <table class="mlabels">
2213
- <tr>
2214
- <td class="mlabels-left">
2215
- <table class="memname">
2216
- <tr>
2217
- <td class="memname">const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* SVF::SVFUtil::getRefTypeOfHeapAllocOrStatic </td>
2218
- <td>(</td>
2219
- <td class="paramtype">const <a class="el" href="classSVF_1_1CallSite.html">CallSite</a>&#160;</td>
2220
- <td class="paramname"><em>cs</em></td><td>)</td>
2221
- <td></td>
2222
- </tr>
2223
- </table>
2224
- </td>
2225
- <td class="mlabels-right">
2226
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
2227
- </tr>
2228
- </table>
2229
- </div><div class="memdoc">
2230
-
2231
- <p>Get the reference type of heap/static object from an allocation site. </p>
2232
-
2233
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00085">85</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2234
- <div class="fragment"><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;{</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refType = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="comment">// Case 1: heap object held by *argument, we should get its element type.</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">isHeapAllocExtCallViaArg</a>(cs))</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">int</span> argPos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">getHeapAllocHoldingArgPosition</a>(cs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *arg = cs.getArgument(argPos);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *argType = SVFUtil::dyn_cast&lt;PointerType&gt;(arg-&gt;getType()))</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; refType = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">getPtrElementType</a>(argType));</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// Case 2: heap/static object held by return value.</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((<a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">isStaticExtCall</a>(cs) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">isHeapAllocExtCallViaRet</a>(cs))</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; &amp;&amp; <span class="stringliteral">&quot;Must be heap alloc via ret, or static allocation site&quot;</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; refType = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(cs.getType());</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(refType &amp;&amp; <span class="stringliteral">&quot;Allocated object must be held by a pointer-typed value.&quot;</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> refType;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;}</div><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>
2235
- <div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
2236
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8e7f56fa15cea924a09cd6903de2606c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">SVF::SVFUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00073">LLVMUtil.h:73</a></div></div>
2237
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aedfa6e9216c6c788c26aef1967689b76"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00502">SVFUtil.h:502</a></div></div>
2238
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00513">SVFUtil.h:513</a></div></div>
2239
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae62938f722543d6d7fc201b685be1abf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00571">SVFUtil.h:571</a></div></div>
2240
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a73215bac62f1340a58f6c7f2ba9b0e7b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVF::SVFUtil::getHeapAllocHoldingArgPosition</a></div><div class="ttdeci">int getHeapAllocHoldingArgPosition(const SVFFunction *fun)</div><div class="ttdoc">Get the position of argument that holds an allocated heap object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00379">SVFUtil.h:379</a></div></div>
2241
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
2242
- <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
2243
- </div><!-- fragment -->
2244
- </div>
2245
- </div>
2246
- <a id="a642f8284fbb260dd81fb29d5fadf6822"></a>
2247
- <h2 class="memtitle"><span class="permalink"><a href="#a642f8284fbb260dd81fb29d5fadf6822">&#9670;&nbsp;</a></span>getRefTypeOfHeapAllocOrStatic() <span class="overload">[2/2]</span></h2>
2248
-
2249
- <div class="memitem">
2250
- <div class="memproto">
2251
- <table class="mlabels">
2252
- <tr>
2253
- <td class="mlabels-left">
2254
- <table class="memname">
2255
- <tr>
2256
- <td class="memname">const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* SVF::SVFUtil::getRefTypeOfHeapAllocOrStatic </td>
2257
- <td>(</td>
2258
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *&#160;</td>
2259
- <td class="paramname"><em>inst</em></td><td>)</td>
2260
- <td></td>
2261
- </tr>
2262
- </table>
2263
- </td>
2264
- <td class="mlabels-right">
2265
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
2266
- </tr>
2267
- </table>
2268
- </div><div class="memdoc">
2269
-
2270
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00107">107</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2271
- <div class="fragment"><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; CallSite cs(const_cast&lt;Instruction*&gt;(inst));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a642f8284fbb260dd81fb29d5fadf6822">getRefTypeOfHeapAllocOrStatic</a>(cs);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a642f8284fbb260dd81fb29d5fadf6822"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a642f8284fbb260dd81fb29d5fadf6822">SVF::SVFUtil::getRefTypeOfHeapAllocOrStatic</a></div><div class="ttdeci">const PointerType * getRefTypeOfHeapAllocOrStatic(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00107">LLVMUtil.h:107</a></div></div>
2272
- </div><!-- fragment -->
2273
- </div>
2274
- </div>
2275
1650
  <a id="a28c0ede7e4765d2a686fc8ae0f5641a4"></a>
2276
1651
  <h2 class="memtitle"><span class="permalink"><a href="#a28c0ede7e4765d2a686fc8ae0f5641a4">&#9670;&nbsp;</a></span>getSourceLoc()</h2>
2277
1652
 
@@ -2446,128 +1821,6 @@ template&lt;class X , class Y &gt; </div>
2446
1821
  <div class="fragment"><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;{</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()-&gt;getTaskFuncAtHareParForSite(inst);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;}</div></div><!-- fragment -->
2447
1822
  </div>
2448
1823
  </div>
2449
- <a id="a973113323e30a01fd904b35ac18d40ce"></a>
2450
- <h2 class="memtitle"><span class="permalink"><a href="#a973113323e30a01fd904b35ac18d40ce">&#9670;&nbsp;</a></span>getTypeOfHeapAlloc()</h2>
2451
-
2452
- <div class="memitem">
2453
- <div class="memproto">
2454
- <table class="memname">
2455
- <tr>
2456
- <td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * SVF::SVFUtil::getTypeOfHeapAlloc </td>
2457
- <td>(</td>
2458
- <td class="paramtype">const llvm::Instruction *&#160;</td>
2459
- <td class="paramname"><em>inst</em></td><td>)</td>
2460
- <td></td>
2461
- </tr>
2462
- </table>
2463
- </div><div class="memdoc">
2464
-
2465
- <p>Get the type of the heap allocation. </p>
2466
- <p>Return the type of the object from a heap allocation </p>
2467
-
2468
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00326">326</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2469
- <div class="fragment"><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;{</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(inst-&gt;getType());</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">isHeapAllocExtCallViaRet</a>(inst))</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* v = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad72b3529e87e71767c6d226821cfddb3">getUniqueUseViaCastInst</a>(inst))</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* newTy = SVFUtil::dyn_cast&lt;PointerType&gt;(v-&gt;getType()))</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; type = newTy;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">isHeapAllocExtCallViaArg</a>(inst))</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordtype">int</span> arg_pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">getHeapAllocHoldingArgPosition</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs));</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *arg = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(arg_pos);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(arg-&gt;getType());</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>( <span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not a heap allocation instruction?&quot;</span>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type &amp;&amp; <span class="stringliteral">&quot;not a pointer type?&quot;</span>);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">getPtrElementType</a>(type);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ad72b3529e87e71767c6d226821cfddb3"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ad72b3529e87e71767c6d226821cfddb3">SVF::SVFUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdoc">Return the bitcast instruction which is val&amp;#39;s only use site, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00307">LLVMUtil.cpp:307</a></div></div>
2470
- <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>
2471
- <div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
2472
- <div class="ttc" id="classSVF_1_1CallSite_html_a26a594d36bbb5b77e7085502812d9ca2"><div class="ttname"><a href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">SVF::CallSite::getArgument</a></div><div class="ttdeci">Value * getArgument(unsigned ArgNo) const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00215">BasicTypes.h:215</a></div></div>
2473
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8e7f56fa15cea924a09cd6903de2606c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">SVF::SVFUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00073">LLVMUtil.h:73</a></div></div>
2474
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aedfa6e9216c6c788c26aef1967689b76"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00502">SVFUtil.h:502</a></div></div>
2475
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00513">SVFUtil.h:513</a></div></div>
2476
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00281">SVFUtil.h:281</a></div></div>
2477
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a73215bac62f1340a58f6c7f2ba9b0e7b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVF::SVFUtil::getHeapAllocHoldingArgPosition</a></div><div class="ttdeci">int getHeapAllocHoldingArgPosition(const SVFFunction *fun)</div><div class="ttdoc">Get the position of argument that holds an allocated heap object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00379">SVFUtil.h:379</a></div></div>
2478
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00217">SVFUtil.h:217</a></div></div>
2479
- <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00202">BasicTypes.h:202</a></div></div>
2480
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
2481
- <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
2482
- </div><!-- fragment -->
2483
- </div>
2484
- </div>
2485
- <a id="a86fec3512ea1fc724cf567f52d348678"></a>
2486
- <h2 class="memtitle"><span class="permalink"><a href="#a86fec3512ea1fc724cf567f52d348678">&#9670;&nbsp;</a></span>getTypeSizeInBytes() <span class="overload">[1/2]</span></h2>
2487
-
2488
- <div class="memitem">
2489
- <div class="memproto">
2490
- <table class="memname">
2491
- <tr>
2492
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::SVFUtil::getTypeSizeInBytes </td>
2493
- <td>(</td>
2494
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td>
2495
- <td class="paramname"><em>type</em></td><td>)</td>
2496
- <td></td>
2497
- </tr>
2498
- </table>
2499
- </div><div class="memdoc">
2500
-
2501
- <p>Helper method to get the size of the type from target data layout. </p>
2502
-
2503
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00455">455</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2504
- <div class="fragment"><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;{</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span>(type-&gt;isSized())</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#abe0dde753f9f79e30296208eb4d97eed">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getMainLLVMModule())-&gt;getTypeStoreSize(const_cast&lt;Type*&gt;(type));</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_abe0dde753f9f79e30296208eb4d97eed"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#abe0dde753f9f79e30296208eb4d97eed">SVF::SVFUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00280">LLVMUtil.h:280</a></div></div>
2505
- </div><!-- fragment -->
2506
- </div>
2507
- </div>
2508
- <a id="a1dadc280bc2df41b82167ed236985dd5"></a>
2509
- <h2 class="memtitle"><span class="permalink"><a href="#a1dadc280bc2df41b82167ed236985dd5">&#9670;&nbsp;</a></span>getTypeSizeInBytes() <span class="overload">[2/2]</span></h2>
2510
-
2511
- <div class="memitem">
2512
- <div class="memproto">
2513
- <table class="memname">
2514
- <tr>
2515
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::SVFUtil::getTypeSizeInBytes </td>
2516
- <td>(</td>
2517
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *&#160;</td>
2518
- <td class="paramname"><em>sty</em>, </td>
2519
- </tr>
2520
- <tr>
2521
- <td class="paramkey"></td>
2522
- <td></td>
2523
- <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
2524
- <td class="paramname"><em>field_index</em>&#160;</td>
2525
- </tr>
2526
- <tr>
2527
- <td></td>
2528
- <td>)</td>
2529
- <td></td><td></td>
2530
- </tr>
2531
- </table>
2532
- </div><div class="memdoc">
2533
- <p>if this struct type does not have any element, i.e., opaque </p>
2534
-
2535
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00465">465</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2536
- <div class="fragment"><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;{</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#aef8af3d6e4b75a3e3e108b636a48fbd3">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1SVFUtil.html#abe0dde753f9f79e30296208eb4d97eed">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getMainLLVMModule())-&gt;getStructLayout( const_cast&lt;StructType *&gt;(sty) );</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_aef8af3d6e4b75a3e3e108b636a48fbd3"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#aef8af3d6e4b75a3e3e108b636a48fbd3">StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00048">BasicTypes.h:48</a></div></div>
2537
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_abe0dde753f9f79e30296208eb4d97eed"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#abe0dde753f9f79e30296208eb4d97eed">SVF::SVFUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00280">LLVMUtil.h:280</a></div></div>
2538
- </div><!-- fragment -->
2539
- </div>
2540
- </div>
2541
- <a id="ad72b3529e87e71767c6d226821cfddb3"></a>
2542
- <h2 class="memtitle"><span class="permalink"><a href="#ad72b3529e87e71767c6d226821cfddb3">&#9670;&nbsp;</a></span>getUniqueUseViaCastInst()</h2>
2543
-
2544
- <div class="memitem">
2545
- <div class="memproto">
2546
- <table class="memname">
2547
- <tr>
2548
- <td class="memname">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * SVF::SVFUtil::getUniqueUseViaCastInst </td>
2549
- <td>(</td>
2550
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
2551
- <td class="paramname"><em>val</em></td><td>)</td>
2552
- <td></td>
2553
- </tr>
2554
- </table>
2555
- </div><div class="memdoc">
2556
-
2557
- <p>Return the bitcast instruction which is val's only use site, otherwise return nullptr. </p>
2558
- <p>If type is void* (i8*) and val is only used at a bitcast instruction </p>
2559
-
2560
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00307">307</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2561
- <div class="fragment"><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;{</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a> *IT = SVFUtil::dyn_cast&lt;IntegerType&gt;(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">getPtrElementType</a>(type)))</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span> (IT-&gt;getBitWidth() == 8 &amp;&amp; val-&gt;getNumUses()==1)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a> *u = &amp;*val-&gt;use_begin();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="SVF-FE_2BasicTypes_8h.html#ab8cddf2ff868c0a9ae99483640c9ecef">BitCastInst</a>&gt;(u-&gt;getUser());</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;}</div><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>
2562
- <div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
2563
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_ab8cddf2ff868c0a9ae99483640c9ecef"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#ab8cddf2ff868c0a9ae99483640c9ecef">BitCastInst</a></div><div class="ttdeci">llvm::BitCastInst BitCastInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00066">BasicTypes.h:66</a></div></div>
2564
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8e7f56fa15cea924a09cd6903de2606c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">SVF::SVFUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00073">LLVMUtil.h:73</a></div></div>
2565
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a9c01c67684e99545d8e0403321594977"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00029">BasicTypes.h:29</a></div></div>
2566
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
2567
- <div class="ttc" id="namespaceSVF_html_a3d9e7f32dc17fe8d40f8d6a011403b91"><div class="ttname"><a href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">SVF::IntegerType</a></div><div class="ttdeci">llvm::IntegerType IntegerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
2568
- </div><!-- fragment -->
2569
- </div>
2570
- </div>
2571
1824
  <a id="a14a4c5124f2fd03ca3d898e2acd54160"></a>
2572
1825
  <h2 class="memtitle"><span class="permalink"><a href="#a14a4c5124f2fd03ca3d898e2acd54160">&#9670;&nbsp;</a></span>hclustMethodToString()</h2>
2573
1826
 
@@ -2821,65 +2074,6 @@ template&lt;class X , class Y &gt; </div>
2821
2074
  <div class="fragment"><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;{</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()-&gt;isTDBarWait(inst);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;}</div></div><!-- fragment -->
2822
2075
  </div>
2823
2076
  </div>
2824
- <a id="a43c9072210a5f5baeafe36da03f2fde2"></a>
2825
- <h2 class="memtitle"><span class="permalink"><a href="#a43c9072210a5f5baeafe36da03f2fde2">&#9670;&nbsp;</a></span>isBinaryConstantExpr()</h2>
2826
-
2827
- <div class="memitem">
2828
- <div class="memproto">
2829
- <table class="mlabels">
2830
- <tr>
2831
- <td class="mlabels-left">
2832
- <table class="memname">
2833
- <tr>
2834
- <td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::SVFUtil::isBinaryConstantExpr </td>
2835
- <td>(</td>
2836
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
2837
- <td class="paramname"><em>val</em></td><td>)</td>
2838
- <td></td>
2839
- </tr>
2840
- </table>
2841
- </td>
2842
- <td class="mlabels-right">
2843
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
2844
- </tr>
2845
- </table>
2846
- </div><div class="memdoc">
2847
-
2848
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00259">259</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2849
- <div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;{</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span>((constExpr-&gt;getOpcode() &gt;= Instruction::BinaryOpsBegin) &amp;&amp; (constExpr-&gt;getOpcode() &lt;= Instruction::BinaryOpsEnd))</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
2850
- </div><!-- fragment -->
2851
- </div>
2852
- </div>
2853
- <a id="ac0df4ee0bf78167dd9461227b5cce7af"></a>
2854
- <h2 class="memtitle"><span class="permalink"><a href="#ac0df4ee0bf78167dd9461227b5cce7af">&#9670;&nbsp;</a></span>isBlackholeSym()</h2>
2855
-
2856
- <div class="memitem">
2857
- <div class="memproto">
2858
- <table class="mlabels">
2859
- <tr>
2860
- <td class="mlabels-left">
2861
- <table class="memname">
2862
- <tr>
2863
- <td class="memname">bool SVF::SVFUtil::isBlackholeSym </td>
2864
- <td>(</td>
2865
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
2866
- <td class="paramname"><em>val</em></td><td>)</td>
2867
- <td></td>
2868
- </tr>
2869
- </table>
2870
- </td>
2871
- <td class="mlabels-right">
2872
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
2873
- </tr>
2874
- </table>
2875
- </div><div class="memdoc">
2876
-
2877
- <p>Check whether this value is a black hole. </p>
2878
-
2879
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00048">48</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2880
- <div class="fragment"><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="keywordflow">return</span> (SVFUtil::isa&lt;UndefValue&gt;(val));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div></div><!-- fragment -->
2881
- </div>
2882
- </div>
2883
2077
  <a id="a2e08ce822223842fa6a73fd659b1a526"></a>
2884
2078
  <h2 class="memtitle"><span class="permalink"><a href="#a2e08ce822223842fa6a73fd659b1a526">&#9670;&nbsp;</a></span>isCallSite() <span class="overload">[1/2]</span></h2>
2885
2079
 
@@ -2942,64 +2136,6 @@ template&lt;class X , class Y &gt; </div>
2942
2136
  </div><!-- fragment -->
2943
2137
  </div>
2944
2138
  </div>
2945
- <a id="a7e404bcc6613ba10a56c4fbdc842c5a8"></a>
2946
- <h2 class="memtitle"><span class="permalink"><a href="#a7e404bcc6613ba10a56c4fbdc842c5a8">&#9670;&nbsp;</a></span>isCastConstantExpr()</h2>
2947
-
2948
- <div class="memitem">
2949
- <div class="memproto">
2950
- <table class="mlabels">
2951
- <tr>
2952
- <td class="mlabels-left">
2953
- <table class="memname">
2954
- <tr>
2955
- <td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::SVFUtil::isCastConstantExpr </td>
2956
- <td>(</td>
2957
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
2958
- <td class="paramname"><em>val</em></td><td>)</td>
2959
- <td></td>
2960
- </tr>
2961
- </table>
2962
- </td>
2963
- <td class="mlabels-right">
2964
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
2965
- </tr>
2966
- </table>
2967
- </div><div class="memdoc">
2968
-
2969
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00215">215</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2970
- <div class="fragment"><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;{</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</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; <span class="keywordflow">if</span>(constExpr-&gt;getOpcode() == Instruction::BitCast)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
2971
- </div><!-- fragment -->
2972
- </div>
2973
- </div>
2974
- <a id="a4adb63c87a9489ab905d42230ac66299"></a>
2975
- <h2 class="memtitle"><span class="permalink"><a href="#a4adb63c87a9489ab905d42230ac66299">&#9670;&nbsp;</a></span>isCmpConstantExpr()</h2>
2976
-
2977
- <div class="memitem">
2978
- <div class="memproto">
2979
- <table class="mlabels">
2980
- <tr>
2981
- <td class="mlabels-left">
2982
- <table class="memname">
2983
- <tr>
2984
- <td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::SVFUtil::isCmpConstantExpr </td>
2985
- <td>(</td>
2986
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
2987
- <td class="paramname"><em>val</em></td><td>)</td>
2988
- <td></td>
2989
- </tr>
2990
- </table>
2991
- </td>
2992
- <td class="mlabels-right">
2993
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
2994
- </tr>
2995
- </table>
2996
- </div><div class="memdoc">
2997
-
2998
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00249">249</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2999
- <div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;{</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span>(constExpr-&gt;getOpcode() == Instruction::ICmp || constExpr-&gt;getOpcode() == Instruction::FCmp)</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
3000
- </div><!-- fragment -->
3001
- </div>
3002
- </div>
3003
2139
  <a id="a9e85d445e8b7b205134acd3874bba388"></a>
3004
2140
  <h2 class="memtitle"><span class="permalink"><a href="#a9e85d445e8b7b205134acd3874bba388">&#9670;&nbsp;</a></span>isConstantData()</h2>
3005
2141
 
@@ -3030,64 +2166,6 @@ template&lt;class X , class Y &gt; </div>
3030
2166
  <div class="fragment"><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;ConstantData&gt;(val)</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; || SVFUtil::isa&lt;ConstantAggregate&gt;(val)</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; || SVFUtil::isa&lt;MetadataAsValue&gt;(val)</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; || SVFUtil::isa&lt;BlockAddress&gt;(val);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;}</div></div><!-- fragment -->
3031
2167
  </div>
3032
2168
  </div>
3033
- <a id="a6442fbf0cccd55cf93eab2b656756e9a"></a>
3034
- <h2 class="memtitle"><span class="permalink"><a href="#a6442fbf0cccd55cf93eab2b656756e9a">&#9670;&nbsp;</a></span>isConstantObjSym()</h2>
3035
-
3036
- <div class="memitem">
3037
- <div class="memproto">
3038
- <table class="memname">
3039
- <tr>
3040
- <td class="memname">bool SVF::SVFUtil::isConstantObjSym </td>
3041
- <td>(</td>
3042
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
3043
- <td class="paramname"><em>val</em></td><td>)</td>
3044
- <td></td>
3045
- </tr>
3046
- </table>
3047
- </div><div class="memdoc">
3048
-
3049
- <p>Check whether this value points-to a constant object. </p>
3050
- <p>Check whether this value points-to a constant object </p>
3051
-
3052
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00060">60</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3053
- <div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* v = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">cppUtil::isValVtbl</a>(v))</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v-&gt;hasInitializer())</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(v-&gt;isExternalLinkage(v-&gt;getLinkage()))</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> *stInfo = SymbolTableInfo::SymbolInfo()-&gt;getStructInfo(v-&gt;getInitializer()-&gt;getType());</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">const</span> std::vector&lt;const Type*&gt; &amp;fields = stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a7fe5593e487a04e8f0eb28ca7bc31fe9">getFlattenFieldTypes</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">for</span> (std::vector&lt;const Type*&gt;::const_iterator it = fields.begin(), eit = fields.end(); it != eit; ++it)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *elemTy = *it;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!SVFUtil::isa&lt;FunctionType&gt;(elemTy) &amp;&amp; <span class="stringliteral">&quot;Initializer of a global is a function?&quot;</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(elemTy))</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> v-&gt;isConstant();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
3054
- <div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
3055
- <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>
3056
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00124">CPPUtil.cpp:124</a></div></div>
3057
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00457">SVFUtil.h:457</a></div></div>
3058
- <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00467">SymbolTableInfo.h:467</a></div></div>
3059
- <div class="ttc" id="classSVF_1_1StInfo_html_a7fe5593e487a04e8f0eb28ca7bc31fe9"><div class="ttname"><a href="classSVF_1_1StInfo.html#a7fe5593e487a04e8f0eb28ca7bc31fe9">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector&lt; const Type * &gt; &amp; getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00521">SymbolTableInfo.h:521</a></div></div>
3060
- </div><!-- fragment -->
3061
- </div>
3062
- </div>
3063
- <a id="a6d268e8d588717601345be3a911a7625"></a>
3064
- <h2 class="memtitle"><span class="permalink"><a href="#a6d268e8d588717601345be3a911a7625">&#9670;&nbsp;</a></span>isDeadFunction()</h2>
3065
-
3066
- <div class="memitem">
3067
- <div class="memproto">
3068
- <table class="memname">
3069
- <tr>
3070
- <td class="memname">bool SVF::SVFUtil::isDeadFunction </td>
3071
- <td>(</td>
3072
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *&#160;</td>
3073
- <td class="paramname"><em>fun</em></td><td>)</td>
3074
- <td></td>
3075
- </tr>
3076
- </table>
3077
- </div><div class="memdoc">
3078
-
3079
- <p>whether this is a function without any possible caller? </p>
3080
- <p>Method for dead function, which does not have any possible caller function address is not taken and never be used in call or invoke instruction</p>
3081
- <p>Return true if this is a function without any possible caller </p>
3082
-
3083
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00160">160</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3084
- <div class="fragment"><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;{</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span>(fun-&gt;hasAddressTaken())</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">isProgEntryFunction</a>(fun))</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator i = fun-&gt;user_begin(), e = fun-&gt;user_end(); i != e; ++i)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(*i))</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()-&gt;hasDeclaration(fun))</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFModule.html#acfd1ffb4696136de493843786c799e6b">SVFModule::FunctionSetType</a> &amp;decls = LLVMModuleSet::getLLVMModuleSet()-&gt;getDeclaration(fun);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">for</span> (SVFModule::FunctionSetType::const_iterator it = decls.begin(),</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; eit = decls.end(); it != eit; ++it)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *decl = (*it)-&gt;getLLVMFun();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span>(decl-&gt;hasAddressTaken())</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator i = decl-&gt;user_begin(), e = decl-&gt;user_end(); i != e; ++i)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(*i))</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</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; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</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#l00196">SVFUtil.h:196</a></div></div>
3085
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2c97c2b79b795465490512e267a9309b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">SVF::SVFUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const SVFFunction *fun)</div><div class="ttdoc">Program entry function e.g. main. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00417">SVFUtil.h:417</a></div></div>
3086
- <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
3087
- <div class="ttc" id="classSVF_1_1SVFModule_html_acfd1ffb4696136de493843786c799e6b"><div class="ttname"><a href="classSVF_1_1SVFModule.html#acfd1ffb4696136de493843786c799e6b">SVF::SVFModule::FunctionSetType</a></div><div class="ttdeci">std::vector&lt; const SVFFunction * &gt; FunctionSetType</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00044">SVFModule.h:44</a></div></div>
3088
- </div><!-- fragment -->
3089
- </div>
3090
- </div>
3091
2169
  <a id="a1f52a7f183f1eec7c4db7e4e54fa5e2c"></a>
3092
2170
  <h2 class="memtitle"><span class="permalink"><a href="#a1f52a7f183f1eec7c4db7e4e54fa5e2c">&#9670;&nbsp;</a></span>isDeallocExtCall() <span class="overload">[1/2]</span></h2>
3093
2171
 
@@ -3268,37 +2346,6 @@ template&lt;class X , class Y &gt; </div>
3268
2346
  </div><!-- fragment -->
3269
2347
  </div>
3270
2348
  </div>
3271
- <a id="a384b0986a6c4e99dfc4e1629b3598c3c"></a>
3272
- <h2 class="memtitle"><span class="permalink"><a href="#a384b0986a6c4e99dfc4e1629b3598c3c">&#9670;&nbsp;</a></span>isGepConstantExpr()</h2>
3273
-
3274
- <div class="memitem">
3275
- <div class="memproto">
3276
- <table class="mlabels">
3277
- <tr>
3278
- <td class="mlabels-left">
3279
- <table class="memname">
3280
- <tr>
3281
- <td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::SVFUtil::isGepConstantExpr </td>
3282
- <td>(</td>
3283
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
3284
- <td class="paramname"><em>val</em></td><td>)</td>
3285
- <td></td>
3286
- </tr>
3287
- </table>
3288
- </td>
3289
- <td class="mlabels-right">
3290
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
3291
- </tr>
3292
- </table>
3293
- </div><div class="memdoc">
3294
-
3295
- <p>Return corresponding constant expression, otherwise return nullptr. </p>
3296
-
3297
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00185">185</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3298
- <div class="fragment"><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; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span>(constExpr-&gt;getOpcode() == Instruction::GetElementPtr)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> constExpr;</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; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
3299
- </div><!-- fragment -->
3300
- </div>
3301
- </div>
3302
2349
  <a id="a28fbb7cc51eb7e25d88f43e3eb1f30fb"></a>
3303
2350
  <h2 class="memtitle"><span class="permalink"><a href="#a28fbb7cc51eb7e25d88f43e3eb1f30fb">&#9670;&nbsp;</a></span>isHareParForCall() <span class="overload">[1/2]</span></h2>
3304
2351
 
@@ -3659,35 +2706,6 @@ template&lt;class X , class Y &gt; </div>
3659
2706
  </div><!-- fragment -->
3660
2707
  </div>
3661
2708
  </div>
3662
- <a id="a6bc4376ada53ddfbf8df2ca817153555"></a>
3663
- <h2 class="memtitle"><span class="permalink"><a href="#a6bc4376ada53ddfbf8df2ca817153555">&#9670;&nbsp;</a></span>isInt2PtrConstantExpr()</h2>
3664
-
3665
- <div class="memitem">
3666
- <div class="memproto">
3667
- <table class="mlabels">
3668
- <tr>
3669
- <td class="mlabels-left">
3670
- <table class="memname">
3671
- <tr>
3672
- <td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::SVFUtil::isInt2PtrConstantExpr </td>
3673
- <td>(</td>
3674
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
3675
- <td class="paramname"><em>val</em></td><td>)</td>
3676
- <td></td>
3677
- </tr>
3678
- </table>
3679
- </td>
3680
- <td class="mlabels-right">
3681
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
3682
- </tr>
3683
- </table>
3684
- </div><div class="memdoc">
3685
-
3686
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00195">195</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3687
- <div class="fragment"><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; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span>(constExpr-&gt;getOpcode() == Instruction::IntToPtr)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
3688
- </div><!-- fragment -->
3689
- </div>
3690
- </div>
3691
2709
  <a id="ad2c53be5490882768d51aa894b37cbf1"></a>
3692
2710
  <h2 class="memtitle"><span class="permalink"><a href="#ad2c53be5490882768d51aa894b37cbf1">&#9670;&nbsp;</a></span>isIntrinsicFun()</h2>
3693
2711
 
@@ -3749,28 +2767,6 @@ template&lt;class X , class Y &gt; </div>
3749
2767
  </div><!-- fragment -->
3750
2768
  </div>
3751
2769
  </div>
3752
- <a id="aa1657ceed1953f96329fe7226bf7da4c"></a>
3753
- <h2 class="memtitle"><span class="permalink"><a href="#aa1657ceed1953f96329fe7226bf7da4c">&#9670;&nbsp;</a></span>isIRFile()</h2>
3754
-
3755
- <div class="memitem">
3756
- <div class="memproto">
3757
- <table class="memname">
3758
- <tr>
3759
- <td class="memname">bool SVF::SVFUtil::isIRFile </td>
3760
- <td>(</td>
3761
- <td class="paramtype">const std::string &amp;&#160;</td>
3762
- <td class="paramname"><em>filename</em></td><td>)</td>
3763
- <td></td>
3764
- </tr>
3765
- </table>
3766
- </div><div class="memdoc">
3767
-
3768
- <p>Check whether a file is an LLVM IR file. </p>
3769
-
3770
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00410">410</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3771
- <div class="fragment"><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;{</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; llvm::ErrorOr&lt;std::unique_ptr&lt;llvm::MemoryBuffer&gt;&gt; FileOrErr = llvm::MemoryBuffer::getFileOrSTDIN(filename);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> (FileOrErr.getError())</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; llvm::MemoryBufferRef Buffer = FileOrErr.get()-&gt;getMemBufferRef();</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferStart =</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferStart();</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferEnd =</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferEnd();</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">return</span> llvm::isBitcode(bufferStart, bufferEnd) ? true :</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; Buffer.getBuffer().startswith(<span class="stringliteral">&quot;; ModuleID =&quot;</span>);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;}</div></div><!-- fragment -->
3772
- </div>
3773
- </div>
3774
2770
  <a id="a5f3ecd0770991b6e84afe47a3934f0d2"></a>
3775
2771
  <h2 class="memtitle"><span class="permalink"><a href="#a5f3ecd0770991b6e84afe47a3934f0d2">&#9670;&nbsp;</a></span>isLockAquireCall() <span class="overload">[1/2]</span></h2>
3776
2772
 
@@ -3828,98 +2824,8 @@ template&lt;class X , class Y &gt; </div>
3828
2824
  <div class="fragment"><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;{</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()-&gt;isTDAcquire(inst);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;}</div></div><!-- fragment -->
3829
2825
  </div>
3830
2826
  </div>
3831
- <a id="a1241ef1c19df14f7db0bd62dd68f14f9"></a>
3832
- <h2 class="memtitle"><span class="permalink"><a href="#a1241ef1c19df14f7db0bd62dd68f14f9">&#9670;&nbsp;</a></span>isLockReleaseCall() <span class="overload">[1/2]</span></h2>
3833
-
3834
- <div class="memitem">
3835
- <div class="memproto">
3836
- <table class="mlabels">
3837
- <tr>
3838
- <td class="mlabels-left">
3839
- <table class="memname">
3840
- <tr>
3841
- <td class="memname">bool SVF::SVFUtil::isLockReleaseCall </td>
3842
- <td>(</td>
3843
- <td class="paramtype">const <a class="el" href="classSVF_1_1CallSite.html">CallSite</a>&#160;</td>
3844
- <td class="paramname"><em>cs</em></td><td>)</td>
3845
- <td></td>
3846
- </tr>
3847
- </table>
3848
- </td>
3849
- <td class="mlabels-right">
3850
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
3851
- </tr>
3852
- </table>
3853
- </div><div class="memdoc">
3854
- <p>Return true if this is a lock acquire call </p>
3855
-
3856
- <p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00659">659</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
3857
- <div class="fragment"><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;{</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()-&gt;isTDRelease(cs);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;}</div></div><!-- fragment -->
3858
- </div>
3859
- </div>
3860
- <a id="a84ac49c70252036a957694f2cf05ae2c"></a>
3861
- <h2 class="memtitle"><span class="permalink"><a href="#a84ac49c70252036a957694f2cf05ae2c">&#9670;&nbsp;</a></span>isLockReleaseCall() <span class="overload">[2/2]</span></h2>
3862
-
3863
- <div class="memitem">
3864
- <div class="memproto">
3865
- <table class="mlabels">
3866
- <tr>
3867
- <td class="mlabels-left">
3868
- <table class="memname">
3869
- <tr>
3870
- <td class="memname">bool SVF::SVFUtil::isLockReleaseCall </td>
3871
- <td>(</td>
3872
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *&#160;</td>
3873
- <td class="paramname"><em>inst</em></td><td>)</td>
3874
- <td></td>
3875
- </tr>
3876
- </table>
3877
- </td>
3878
- <td class="mlabels-right">
3879
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
3880
- </tr>
3881
- </table>
3882
- </div><div class="memdoc">
3883
-
3884
- <p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00663">663</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
3885
- <div class="fragment"><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;{</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()-&gt;isTDRelease(inst);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;}</div></div><!-- fragment -->
3886
- </div>
3887
- </div>
3888
- <a id="ae7007ebc6a543dc30ef076b4aed75b1b"></a>
3889
- <h2 class="memtitle"><span class="permalink"><a href="#ae7007ebc6a543dc30ef076b4aed75b1b">&#9670;&nbsp;</a></span>isNoCallerFunction()</h2>
3890
-
3891
- <div class="memitem">
3892
- <div class="memproto">
3893
- <table class="mlabels">
3894
- <tr>
3895
- <td class="mlabels-left">
3896
- <table class="memname">
3897
- <tr>
3898
- <td class="memname">bool SVF::SVFUtil::isNoCallerFunction </td>
3899
- <td>(</td>
3900
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *&#160;</td>
3901
- <td class="paramname"><em>fun</em></td><td>)</td>
3902
- <td></td>
3903
- </tr>
3904
- </table>
3905
- </td>
3906
- <td class="mlabels-right">
3907
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
3908
- </tr>
3909
- </table>
3910
- </div><div class="memdoc">
3911
-
3912
- <p>Function does not have any possible caller in the call graph. </p>
3913
- <p>Return true if the function does not have a caller (either it is a main function or a dead function) </p>
3914
-
3915
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00146">146</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3916
- <div class="fragment"><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">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6d268e8d588717601345be3a911a7625">isDeadFunction</a>(fun) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">isProgEntryFunction</a>(fun);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2c97c2b79b795465490512e267a9309b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">SVF::SVFUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const SVFFunction *fun)</div><div class="ttdoc">Program entry function e.g. main. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00417">SVFUtil.h:417</a></div></div>
3917
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6d268e8d588717601345be3a911a7625"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6d268e8d588717601345be3a911a7625">SVF::SVFUtil::isDeadFunction</a></div><div class="ttdeci">bool isDeadFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller? </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00160">LLVMUtil.cpp:160</a></div></div>
3918
- </div><!-- fragment -->
3919
- </div>
3920
- </div>
3921
- <a id="a8d8216a92140d982303f83ea424ddc91"></a>
3922
- <h2 class="memtitle"><span class="permalink"><a href="#a8d8216a92140d982303f83ea424ddc91">&#9670;&nbsp;</a></span>isNonInstricCallSite()</h2>
2827
+ <a id="a1241ef1c19df14f7db0bd62dd68f14f9"></a>
2828
+ <h2 class="memtitle"><span class="permalink"><a href="#a1241ef1c19df14f7db0bd62dd68f14f9">&#9670;&nbsp;</a></span>isLockReleaseCall() <span class="overload">[1/2]</span></h2>
3923
2829
 
3924
2830
  <div class="memitem">
3925
2831
  <div class="memproto">
@@ -3928,10 +2834,10 @@ template&lt;class X , class Y &gt; </div>
3928
2834
  <td class="mlabels-left">
3929
2835
  <table class="memname">
3930
2836
  <tr>
3931
- <td class="memname">bool SVF::SVFUtil::isNonInstricCallSite </td>
2837
+ <td class="memname">bool SVF::SVFUtil::isLockReleaseCall </td>
3932
2838
  <td>(</td>
3933
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *&#160;</td>
3934
- <td class="paramname"><em>inst</em></td><td>)</td>
2839
+ <td class="paramtype">const <a class="el" href="classSVF_1_1CallSite.html">CallSite</a>&#160;</td>
2840
+ <td class="paramname"><em>cs</em></td><td>)</td>
3935
2841
  <td></td>
3936
2842
  </tr>
3937
2843
  </table>
@@ -3941,17 +2847,14 @@ template&lt;class X , class Y &gt; </div>
3941
2847
  </tr>
3942
2848
  </table>
3943
2849
  </div><div class="memdoc">
2850
+ <p>Return true if this is a lock acquire call </p>
3944
2851
 
3945
- <p>Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls. </p>
3946
-
3947
- <p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00209">209</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
3948
- <div class="fragment"><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(inst))</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a38bf8f7eaa18fc5a09711959b5417854">isCallSite</a>(inst);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div><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#l00181">SVFUtil.h:181</a></div></div>
3949
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a38bf8f7eaa18fc5a09711959b5417854"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a38bf8f7eaa18fc5a09711959b5417854">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Value *val)</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#l00201">SVFUtil.h:201</a></div></div>
3950
- </div><!-- fragment -->
2852
+ <p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00659">659</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
2853
+ <div class="fragment"><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;{</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()-&gt;isTDRelease(cs);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;}</div></div><!-- fragment -->
3951
2854
  </div>
3952
2855
  </div>
3953
- <a id="a4c1107b2635f374e71e6a3a43834469b"></a>
3954
- <h2 class="memtitle"><span class="permalink"><a href="#a4c1107b2635f374e71e6a3a43834469b">&#9670;&nbsp;</a></span>isNullPtrSym()</h2>
2856
+ <a id="a84ac49c70252036a957694f2cf05ae2c"></a>
2857
+ <h2 class="memtitle"><span class="permalink"><a href="#a84ac49c70252036a957694f2cf05ae2c">&#9670;&nbsp;</a></span>isLockReleaseCall() <span class="overload">[2/2]</span></h2>
3955
2858
 
3956
2859
  <div class="memitem">
3957
2860
  <div class="memproto">
@@ -3960,10 +2863,10 @@ template&lt;class X , class Y &gt; </div>
3960
2863
  <td class="mlabels-left">
3961
2864
  <table class="memname">
3962
2865
  <tr>
3963
- <td class="memname">bool SVF::SVFUtil::isNullPtrSym </td>
2866
+ <td class="memname">bool SVF::SVFUtil::isLockReleaseCall </td>
3964
2867
  <td>(</td>
3965
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
3966
- <td class="paramname"><em>val</em></td><td>)</td>
2868
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *&#160;</td>
2869
+ <td class="paramname"><em>inst</em></td><td>)</td>
3967
2870
  <td></td>
3968
2871
  </tr>
3969
2872
  </table>
@@ -3974,35 +2877,39 @@ template&lt;class X , class Y &gt; </div>
3974
2877
  </table>
3975
2878
  </div><div class="memdoc">
3976
2879
 
3977
- <p>Check whether this value is a black hole. </p>
3978
-
3979
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00054">54</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3980
- <div class="fragment"><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; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* v = SVFUtil::dyn_cast&lt;Constant&gt;(val))</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> v-&gt;isNullValue() &amp;&amp; v-&gt;getType()-&gt;isPointerTy();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
3981
- </div><!-- fragment -->
2880
+ <p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00663">663</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
2881
+ <div class="fragment"><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;{</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()-&gt;isTDRelease(inst);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;}</div></div><!-- fragment -->
3982
2882
  </div>
3983
2883
  </div>
3984
- <a id="acc9fd07cb66dbdeef696c3c745856094"></a>
3985
- <h2 class="memtitle"><span class="permalink"><a href="#acc9fd07cb66dbdeef696c3c745856094">&#9670;&nbsp;</a></span>isObject()</h2>
2884
+ <a id="a8d8216a92140d982303f83ea424ddc91"></a>
2885
+ <h2 class="memtitle"><span class="permalink"><a href="#a8d8216a92140d982303f83ea424ddc91">&#9670;&nbsp;</a></span>isNonInstricCallSite()</h2>
3986
2886
 
3987
2887
  <div class="memitem">
3988
2888
  <div class="memproto">
2889
+ <table class="mlabels">
2890
+ <tr>
2891
+ <td class="mlabels-left">
3989
2892
  <table class="memname">
3990
2893
  <tr>
3991
- <td class="memname">bool SVF::SVFUtil::isObject </td>
2894
+ <td class="memname">bool SVF::SVFUtil::isNonInstricCallSite </td>
3992
2895
  <td>(</td>
3993
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
3994
- <td class="paramname"><em>ref</em></td><td>)</td>
2896
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *&#160;</td>
2897
+ <td class="paramname"><em>inst</em></td><td>)</td>
3995
2898
  <td></td>
3996
2899
  </tr>
3997
2900
  </table>
2901
+ </td>
2902
+ <td class="mlabels-right">
2903
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
2904
+ </tr>
2905
+ </table>
3998
2906
  </div><div class="memdoc">
3999
2907
 
4000
- <p>Return true if this value refers to a object. </p>
4001
- <p>A value represents an object if it is 1) function, 2) global 3) stack 4) heap </p>
2908
+ <p>Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls. </p>
4002
2909
 
4003
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00042">42</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
4004
- <div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">bool</span> createobj = <span class="keyword">false</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(ref) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVFUtil::isStaticExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(ref)) )</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(ref) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(SVFUtil::cast&lt;Instruction&gt;(ref)))</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalVariable&gt;(ref))</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function&gt;(ref) || SVFUtil::isa&lt;AllocaInst&gt;(ref) )</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> createobj;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00513">SVFUtil.h:513</a></div></div>
4005
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae62938f722543d6d7fc201b685be1abf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00571">SVFUtil.h:571</a></div></div>
2910
+ <p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00209">209</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
2911
+ <div class="fragment"><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(inst))</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a38bf8f7eaa18fc5a09711959b5417854">isCallSite</a>(inst);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div><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#l00181">SVFUtil.h:181</a></div></div>
2912
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a38bf8f7eaa18fc5a09711959b5417854"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a38bf8f7eaa18fc5a09711959b5417854">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Value *val)</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#l00201">SVFUtil.h:201</a></div></div>
4006
2913
  </div><!-- fragment -->
4007
2914
  </div>
4008
2915
  </div>
@@ -4155,61 +3062,6 @@ template&lt;class X , class Y &gt; </div>
4155
3062
  <div class="fragment"><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;{</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">return</span> fun &amp;&amp; (fun-&gt;getName() == <span class="stringliteral">&quot;exit&quot;</span> ||</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; fun-&gt;getName() == <span class="stringliteral">&quot;__assert_rtn&quot;</span> ||</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; fun-&gt;getName() == <span class="stringliteral">&quot;__assert_fail&quot;</span> );</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;}</div></div><!-- fragment -->
4156
3063
  </div>
4157
3064
  </div>
4158
- <a id="a093b7ae4ad144fb5d028366b1814861a"></a>
4159
- <h2 class="memtitle"><span class="permalink"><a href="#a093b7ae4ad144fb5d028366b1814861a">&#9670;&nbsp;</a></span>isPtr2IntConstantExpr()</h2>
4160
-
4161
- <div class="memitem">
4162
- <div class="memproto">
4163
- <table class="mlabels">
4164
- <tr>
4165
- <td class="mlabels-left">
4166
- <table class="memname">
4167
- <tr>
4168
- <td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::SVFUtil::isPtr2IntConstantExpr </td>
4169
- <td>(</td>
4170
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
4171
- <td class="paramname"><em>val</em></td><td>)</td>
4172
- <td></td>
4173
- </tr>
4174
- </table>
4175
- </td>
4176
- <td class="mlabels-right">
4177
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
4178
- </tr>
4179
- </table>
4180
- </div><div class="memdoc">
4181
-
4182
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00205">205</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
4183
- <div class="fragment"><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span>(constExpr-&gt;getOpcode() == Instruction::PtrToInt)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
4184
- </div><!-- fragment -->
4185
- </div>
4186
- </div>
4187
- <a id="a4dcfe3e66a16813350ec8dffd47c5644"></a>
4188
- <h2 class="memtitle"><span class="permalink"><a href="#a4dcfe3e66a16813350ec8dffd47c5644">&#9670;&nbsp;</a></span>isPtrInDeadFunction()</h2>
4189
-
4190
- <div class="memitem">
4191
- <div class="memproto">
4192
- <table class="memname">
4193
- <tr>
4194
- <td class="memname">bool SVF::SVFUtil::isPtrInDeadFunction </td>
4195
- <td>(</td>
4196
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
4197
- <td class="paramname"><em>value</em></td><td>)</td>
4198
- <td></td>
4199
- </tr>
4200
- </table>
4201
- </div><div class="memdoc">
4202
-
4203
- <p>Return true if this is value in a dead function (function without any caller) </p>
4204
- <p>Return true if this is a value in a dead function (function without any caller) </p>
4205
-
4206
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00193">193</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
4207
- <div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(value))</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; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a6d268e8d588717601345be3a911a7625">isDeadFunction</a>(inst-&gt;getParent()-&gt;getParent()))</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast&lt;Argument&gt;(value))</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a6d268e8d588717601345be3a911a7625">isDeadFunction</a>(arg-&gt;getParent()))</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
4208
- <div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdoc">LLVM Aliases and constants. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
4209
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6d268e8d588717601345be3a911a7625"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6d268e8d588717601345be3a911a7625">SVF::SVFUtil::isDeadFunction</a></div><div class="ttdeci">bool isDeadFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller? </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00160">LLVMUtil.cpp:160</a></div></div>
4210
- </div><!-- fragment -->
4211
- </div>
4212
- </div>
4213
3065
  <a id="a6740e7686ba111ae525c6c093cbbaf46"></a>
4214
3066
  <h2 class="memtitle"><span class="permalink"><a href="#a6740e7686ba111ae525c6c093cbbaf46">&#9670;&nbsp;</a></span>isReallocExtCall() <span class="overload">[1/2]</span></h2>
4215
3067
 
@@ -4301,65 +3153,6 @@ template&lt;class X , class Y &gt; </div>
4301
3153
  <div class="fragment"><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;{</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> fun &amp;&amp; (ExtAPI::getExtAPI()-&gt;is_realloc(fun));</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;}</div></div><!-- fragment -->
4302
3154
  </div>
4303
3155
  </div>
4304
- <a id="abd525a2e3b7b9167b61b2304cc2cbdf2"></a>
4305
- <h2 class="memtitle"><span class="permalink"><a href="#abd525a2e3b7b9167b61b2304cc2cbdf2">&#9670;&nbsp;</a></span>isReturn()</h2>
4306
-
4307
- <div class="memitem">
4308
- <div class="memproto">
4309
- <table class="mlabels">
4310
- <tr>
4311
- <td class="mlabels-left">
4312
- <table class="memname">
4313
- <tr>
4314
- <td class="memname">bool SVF::SVFUtil::isReturn </td>
4315
- <td>(</td>
4316
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *&#160;</td>
4317
- <td class="paramname"><em>inst</em></td><td>)</td>
4318
- <td></td>
4319
- </tr>
4320
- </table>
4321
- </td>
4322
- <td class="mlabels-right">
4323
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
4324
- </tr>
4325
- </table>
4326
- </div><div class="memdoc">
4327
-
4328
- <p>Whether an instruction is a return instruction. </p>
4329
-
4330
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00068">68</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
4331
- <div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;ReturnInst&gt;(inst);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;}</div></div><!-- fragment -->
4332
- </div>
4333
- </div>
4334
- <a id="a07d991d5bfccce9ebdef0cbb6f4bf739"></a>
4335
- <h2 class="memtitle"><span class="permalink"><a href="#a07d991d5bfccce9ebdef0cbb6f4bf739">&#9670;&nbsp;</a></span>isSelectConstantExpr()</h2>
4336
-
4337
- <div class="memitem">
4338
- <div class="memproto">
4339
- <table class="mlabels">
4340
- <tr>
4341
- <td class="mlabels-left">
4342
- <table class="memname">
4343
- <tr>
4344
- <td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::SVFUtil::isSelectConstantExpr </td>
4345
- <td>(</td>
4346
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
4347
- <td class="paramname"><em>val</em></td><td>)</td>
4348
- <td></td>
4349
- </tr>
4350
- </table>
4351
- </td>
4352
- <td class="mlabels-right">
4353
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
4354
- </tr>
4355
- </table>
4356
- </div><div class="memdoc">
4357
-
4358
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00225">225</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
4359
- <div class="fragment"><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;{</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span>(constExpr-&gt;getOpcode() == Instruction::Select)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
4360
- </div><!-- fragment -->
4361
- </div>
4362
- </div>
4363
3156
  <a id="ae62938f722543d6d7fc201b685be1abf"></a>
4364
3157
  <h2 class="memtitle"><span class="permalink"><a href="#ae62938f722543d6d7fc201b685be1abf">&#9670;&nbsp;</a></span>isStaticExtCall() <span class="overload">[1/2]</span></h2>
4365
3158
 
@@ -4622,64 +3415,6 @@ template&lt;class X , class Y &gt; </div>
4622
3415
  <div class="fragment"><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;{</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">return</span> ThreadAPI::getThreadAPI()-&gt;isTDJoin(inst);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;}</div></div><!-- fragment -->
4623
3416
  </div>
4624
3417
  </div>
4625
- <a id="a1373688c6faba4dcdb640106575ea433"></a>
4626
- <h2 class="memtitle"><span class="permalink"><a href="#a1373688c6faba4dcdb640106575ea433">&#9670;&nbsp;</a></span>isTruncConstantExpr()</h2>
4627
-
4628
- <div class="memitem">
4629
- <div class="memproto">
4630
- <table class="mlabels">
4631
- <tr>
4632
- <td class="mlabels-left">
4633
- <table class="memname">
4634
- <tr>
4635
- <td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::SVFUtil::isTruncConstantExpr </td>
4636
- <td>(</td>
4637
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
4638
- <td class="paramname"><em>val</em></td><td>)</td>
4639
- <td></td>
4640
- </tr>
4641
- </table>
4642
- </td>
4643
- <td class="mlabels-right">
4644
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
4645
- </tr>
4646
- </table>
4647
- </div><div class="memdoc">
4648
-
4649
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00235">235</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
4650
- <div class="fragment"><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span>(constExpr-&gt;getOpcode() == Instruction::Trunc ||</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; constExpr-&gt;getOpcode() == Instruction::FPTrunc ||</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; constExpr-&gt;getOpcode() == Instruction::ZExt ||</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; constExpr-&gt;getOpcode() == Instruction::SExt ||</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; constExpr-&gt;getOpcode() == Instruction::FPExt)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
4651
- </div><!-- fragment -->
4652
- </div>
4653
- </div>
4654
- <a id="af14757d5cf466bba20a125f118378560"></a>
4655
- <h2 class="memtitle"><span class="permalink"><a href="#af14757d5cf466bba20a125f118378560">&#9670;&nbsp;</a></span>isUnaryConstantExpr()</h2>
4656
-
4657
- <div class="memitem">
4658
- <div class="memproto">
4659
- <table class="mlabels">
4660
- <tr>
4661
- <td class="mlabels-left">
4662
- <table class="memname">
4663
- <tr>
4664
- <td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::SVFUtil::isUnaryConstantExpr </td>
4665
- <td>(</td>
4666
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
4667
- <td class="paramname"><em>val</em></td><td>)</td>
4668
- <td></td>
4669
- </tr>
4670
- </table>
4671
- </td>
4672
- <td class="mlabels-right">
4673
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
4674
- </tr>
4675
- </table>
4676
- </div><div class="memdoc">
4677
-
4678
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00269">269</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
4679
- <div class="fragment"><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;{</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span>((constExpr-&gt;getOpcode() &gt;= Instruction::UnaryOpsBegin) &amp;&amp; (constExpr-&gt;getOpcode() &lt;= Instruction::UnaryOpsEnd))</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
4680
- </div><!-- fragment -->
4681
- </div>
4682
- </div>
4683
3418
  <a id="a36c91f952a69875c33d4bd0b05a27ff2"></a>
4684
3419
  <h2 class="memtitle"><span class="permalink"><a href="#a36c91f952a69875c33d4bd0b05a27ff2">&#9670;&nbsp;</a></span>mergePtsOccMaps()</h2>
4685
3420
 
@@ -4768,58 +3503,6 @@ template&lt;typename Data &gt; </div>
4768
3503
  </div><!-- fragment -->
4769
3504
  </div>
4770
3505
  </div>
4771
- <a id="a62ca9a79ce7b6960e3fc42d8b183bd50"></a>
4772
- <h2 class="memtitle"><span class="permalink"><a href="#a62ca9a79ce7b6960e3fc42d8b183bd50">&#9670;&nbsp;</a></span>processArguments()</h2>
4773
-
4774
- <div class="memitem">
4775
- <div class="memproto">
4776
- <table class="memname">
4777
- <tr>
4778
- <td class="memname">void SVF::SVFUtil::processArguments </td>
4779
- <td>(</td>
4780
- <td class="paramtype">int&#160;</td>
4781
- <td class="paramname"><em>argc</em>, </td>
4782
- </tr>
4783
- <tr>
4784
- <td class="paramkey"></td>
4785
- <td></td>
4786
- <td class="paramtype">char **&#160;</td>
4787
- <td class="paramname"><em>argv</em>, </td>
4788
- </tr>
4789
- <tr>
4790
- <td class="paramkey"></td>
4791
- <td></td>
4792
- <td class="paramtype">int &amp;&#160;</td>
4793
- <td class="paramname"><em>arg_num</em>, </td>
4794
- </tr>
4795
- <tr>
4796
- <td class="paramkey"></td>
4797
- <td></td>
4798
- <td class="paramtype">char **&#160;</td>
4799
- <td class="paramname"><em>arg_value</em>, </td>
4800
- </tr>
4801
- <tr>
4802
- <td class="paramkey"></td>
4803
- <td></td>
4804
- <td class="paramtype">std::vector&lt; std::string &gt; &amp;&#160;</td>
4805
- <td class="paramname"><em>moduleNameVec</em>&#160;</td>
4806
- </tr>
4807
- <tr>
4808
- <td></td>
4809
- <td>)</td>
4810
- <td></td><td></td>
4811
- </tr>
4812
- </table>
4813
- </div><div class="memdoc">
4814
-
4815
- <p>Parse argument for multi-module analysis. </p>
4816
- <p>Get the names of all modules into a vector And process arguments </p>
4817
-
4818
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00427">427</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
4819
- <div class="fragment"><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;{</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; ++i)</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; std::string argument(argv[i]);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#aa1657ceed1953f96329fe7226bf7da4c">SVFUtil::isIRFile</a>(argument))</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; == moduleNameVec.end())</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; moduleNameVec.push_back(argument);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; arg_value[arg_num] = argv[i];</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; arg_num++;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; first_ir_file = <span class="keyword">false</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; arg_value[arg_num] = argv[i];</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; arg_num++;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aa1657ceed1953f96329fe7226bf7da4c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aa1657ceed1953f96329fe7226bf7da4c">SVF::SVFUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &amp;filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00410">LLVMUtil.cpp:410</a></div></div>
4820
- </div><!-- fragment -->
4821
- </div>
4822
- </div>
4823
3506
  <a id="a86ebab122895189be57637b84adc7642"></a>
4824
3507
  <h2 class="memtitle"><span class="permalink"><a href="#a86ebab122895189be57637b84adc7642">&#9670;&nbsp;</a></span>ptsToNodeBS()</h2>
4825
3508
 
@@ -5050,57 +3733,6 @@ template&lt;typename Key , typename KeySet &gt; </div>
5050
3733
  <div class="fragment"><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;{</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">if</span> (limitTimerSet) alarm(0);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;}</div></div><!-- fragment -->
5051
3734
  </div>
5052
3735
  </div>
5053
- <a id="a69991ab4e9a7705202c1357079ab5fa8"></a>
5054
- <h2 class="memtitle"><span class="permalink"><a href="#a69991ab4e9a7705202c1357079ab5fa8">&#9670;&nbsp;</a></span>stripAllCasts()</h2>
5055
-
5056
- <div class="memitem">
5057
- <div class="memproto">
5058
- <table class="memname">
5059
- <tr>
5060
- <td class="memname">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * SVF::SVFUtil::stripAllCasts </td>
5061
- <td>(</td>
5062
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
5063
- <td class="paramname"><em>val</em></td><td>)</td>
5064
- <td></td>
5065
- </tr>
5066
- </table>
5067
- </div><div class="memdoc">
5068
-
5069
- <p>Strip off the all casts. </p>
5070
- <p>Strip all casts </p>
5071
-
5072
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00226">226</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
5073
- <div class="fragment"><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;{</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a20b13f90796ee748f58e6c5faa7c63da">CastInst</a> *ci = SVFUtil::dyn_cast&lt;CastInst&gt;(val))</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; val = ci-&gt;getOperand(0);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</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#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *ce = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span>(ce-&gt;isCast())</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; val = ce-&gt;getOperand(0);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a20b13f90796ee748f58e6c5faa7c63da"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a20b13f90796ee748f58e6c5faa7c63da">CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
5074
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
5075
- </div><!-- fragment -->
5076
- </div>
5077
- </div>
5078
- <a id="a86763e6a3606598580cd0172aecb5bc7"></a>
5079
- <h2 class="memtitle"><span class="permalink"><a href="#a86763e6a3606598580cd0172aecb5bc7">&#9670;&nbsp;</a></span>stripConstantCasts()</h2>
5080
-
5081
- <div class="memitem">
5082
- <div class="memproto">
5083
- <table class="memname">
5084
- <tr>
5085
- <td class="memname">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * SVF::SVFUtil::stripConstantCasts </td>
5086
- <td>(</td>
5087
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
5088
- <td class="paramname"><em>val</em></td><td>)</td>
5089
- <td></td>
5090
- </tr>
5091
- </table>
5092
- </div><div class="memdoc">
5093
-
5094
- <p>Strip off the constant casts. </p>
5095
- <p>Strip constant casts </p>
5096
-
5097
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00211">211</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
5098
- <div class="fragment"><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;{</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalValue&gt;(val) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">isInt2PtrConstantExpr</a>(val))</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</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#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *CE = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> (Instruction::isCast(CE-&gt;getOpcode()))</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86763e6a3606598580cd0172aecb5bc7">stripConstantCasts</a>(CE-&gt;getOperand(0));</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6bc4376ada53ddfbf8df2ca817153555"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">SVF::SVFUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00195">LLVMUtil.h:195</a></div></div>
5099
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a86763e6a3606598580cd0172aecb5bc7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a86763e6a3606598580cd0172aecb5bc7">SVF::SVFUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00211">LLVMUtil.cpp:211</a></div></div>
5100
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
5101
- </div><!-- fragment -->
5102
- </div>
5103
- </div>
5104
3736
  <a id="a6a55f1f8598998a3ffbbc67d32eaf8c4"></a>
5105
3737
  <h2 class="memtitle"><span class="permalink"><a href="#a6a55f1f8598998a3ffbbc67d32eaf8c4">&#9670;&nbsp;</a></span>sucMsg()</h2>
5106
3738