svf-tools 1.0.757 → 1.0.759

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 (844) hide show
  1. package/CMakeLists.txt +7 -0
  2. package/README.md +2 -2
  3. package/SVF-doxygen/html/html/AccessPath_8cpp_source.html +4 -4
  4. package/SVF-doxygen/html/html/AddressValue_8h_source.html +1 -1
  5. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +3 -3
  9. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/CFBasicBlockG_8cpp_source.html +4 -4
  11. package/SVF-doxygen/html/html/CFBasicBlockG_8h_source.html +2 -2
  12. package/SVF-doxygen/html/html/CFGrammar_8cpp_source.html +11 -8
  13. package/SVF-doxygen/html/html/CFGrammar_8h_source.html +1 -1
  14. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +9 -9
  15. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +17 -17
  18. package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
  19. package/SVF-doxygen/html/html/CHG_8cpp_source.html +7 -7
  20. package/SVF-doxygen/html/html/CHG_8h_source.html +4 -4
  21. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +6 -6
  22. package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/Casting_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/CommandLine_8h_source.html +2 -1
  25. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/ConsExeState_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/ConsExeState_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  29. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  30. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
  31. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  32. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +2 -2
  33. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +11 -11
  34. package/SVF-doxygen/html/html/DCHG_8h_source.html +3 -3
  35. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  36. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  37. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/ExeState_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/ExtAPI_8cpp.html +0 -196
  42. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +121 -786
  43. package/SVF-doxygen/html/html/ExtAPI_8h.html +2 -67
  44. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +69 -654
  45. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -2
  46. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +2 -2
  47. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
  48. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +3 -3
  50. package/SVF-doxygen/html/html/GraphTraits_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/GraphWriter_8h_source.html +1 -1
  52. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +13 -13
  53. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +2 -2
  54. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
  55. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +4 -4
  56. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +7 -7
  57. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  58. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  59. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  60. package/SVF-doxygen/html/html/IntervalExeState_8h_source.html +2 -2
  61. package/SVF-doxygen/html/html/IntervalValue_8h.html +1 -1
  62. package/SVF-doxygen/html/html/IntervalValue_8h_source.html +2 -2
  63. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +6 -6
  64. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +1 -1
  65. package/SVF-doxygen/html/html/LLVMModule_8cpp.html +3 -4
  66. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1411 -1292
  67. package/SVF-doxygen/html/html/LLVMModule_8h.html +1 -0
  68. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +418 -400
  69. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +744 -616
  70. package/SVF-doxygen/html/html/LLVMUtil_8h.html +9 -1
  71. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +485 -472
  72. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  73. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +14 -14
  74. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +2 -2
  75. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +8 -8
  76. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +5 -5
  77. package/SVF-doxygen/html/html/MHP_8cpp_source.html +15 -15
  78. package/SVF-doxygen/html/html/MHP_8h_source.html +4 -4
  79. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +4 -4
  80. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
  81. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +4 -4
  82. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +7 -7
  83. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +7 -7
  84. package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
  85. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
  86. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +13 -13
  87. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  88. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +21 -21
  89. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  90. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  91. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +2 -2
  92. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +1 -1
  93. package/SVF-doxygen/html/html/NumericLiteral_8h_source.html +1 -1
  94. package/SVF-doxygen/html/html/Options_8cpp_source.html +9 -8
  95. package/SVF-doxygen/html/html/PCG_8cpp_source.html +13 -13
  96. package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
  97. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +3 -3
  98. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
  99. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +1 -1
  100. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
  101. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +12 -12
  102. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
  103. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +2 -2
  104. package/SVF-doxygen/html/html/PointsTo_8h_source.html +1 -1
  105. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
  106. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
  107. package/SVF-doxygen/html/html/RelExeState_8h_source.html +1 -1
  108. package/SVF-doxygen/html/html/SVFBugReport_8cpp_source.html +362 -365
  109. package/SVF-doxygen/html/html/SVFBugReport_8h_source.html +25 -25
  110. package/SVF-doxygen/html/html/SVFFileSystem_8cpp_source.html +2087 -2084
  111. package/SVF-doxygen/html/html/SVFFileSystem_8h.html +1 -1
  112. package/SVF-doxygen/html/html/SVFFileSystem_8h_source.html +62 -62
  113. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  114. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  115. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +1 -1
  116. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +5 -5
  117. package/SVF-doxygen/html/html/SVFIR2ConsExeState_8cpp_source.html +6 -6
  118. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +5 -5
  119. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +458 -531
  120. package/SVF-doxygen/html/html/SVFIRBuilder_8h.html +1 -1
  121. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +211 -233
  122. package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp.html +2 -0
  123. package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp_source.html +286 -682
  124. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +4 -4
  125. package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
  126. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +9 -9
  127. package/SVF-doxygen/html/html/SVFModule_8h.html +0 -1
  128. package/SVF-doxygen/html/html/SVFModule_8h_source.html +258 -260
  129. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +8 -8
  130. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +5 -5
  131. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +18 -18
  132. package/SVF-doxygen/html/html/SVFType_8h_source.html +6 -6
  133. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -7
  134. package/SVF-doxygen/html/html/SVFUtil_8h.html +6 -11
  135. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +392 -405
  136. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +14 -13
  137. package/SVF-doxygen/html/html/SVFValue_8h_source.html +1038 -1030
  138. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  139. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +1 -1
  140. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  141. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +14 -14
  142. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +6 -6
  143. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  144. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +2 -2
  145. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
  146. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +2 -2
  147. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +5 -5
  148. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  149. package/SVF-doxygen/html/html/SymState_8cpp_source.html +1 -1
  150. package/SVF-doxygen/html/html/SymState_8h_source.html +2 -2
  151. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +30 -30
  152. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +2 -2
  153. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +6 -6
  154. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +5 -5
  155. package/SVF-doxygen/html/html/TCT_8cpp_source.html +16 -16
  156. package/SVF-doxygen/html/html/TCT_8h_source.html +8 -8
  157. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +14 -14
  158. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +5 -5
  159. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  160. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
  161. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  162. package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
  163. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  164. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +2 -2
  165. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  166. package/SVF-doxygen/html/html/WPASolver_8h_source.html +1 -1
  167. package/SVF-doxygen/html/html/WTO_8h_source.html +1 -1
  168. package/SVF-doxygen/html/html/annotated.html +2 -5
  169. package/SVF-doxygen/html/html/cJSON_8cpp.html +2 -1
  170. package/SVF-doxygen/html/html/cJSON_8cpp_source.html +2 -1
  171. package/SVF-doxygen/html/html/cJSON_8h_source.html +1 -1
  172. package/SVF-doxygen/html/html/cfl_8cpp.html +2 -2
  173. package/SVF-doxygen/html/html/cfl_8cpp_source.html +2 -2
  174. package/SVF-doxygen/html/html/classOption.html +2 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1AccessPath.html +6 -6
  176. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  177. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  178. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
  180. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +4 -4
  182. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1AddressValue.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +1 -1
  185. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  186. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +13 -13
  187. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
  188. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +4 -4
  189. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +3 -3
  190. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
  192. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +2 -2
  194. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
  195. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +5 -5
  196. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
  197. package/SVF-doxygen/html/html/classSVF_1_1BitVector.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +3 -3
  199. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
  200. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1BufferOverflowBug.html +50 -50
  202. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTO.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTOCycle.html +1 -1
  204. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockNode.html +2 -2
  205. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +2 -2
  206. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +9 -9
  207. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +1 -1
  209. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +18 -18
  210. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +5 -5
  211. package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +1 -1
  212. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  213. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +3 -3
  214. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +6 -6
  215. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +3 -3
  216. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +3 -3
  218. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +95 -95
  219. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +5 -5
  220. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
  221. package/SVF-doxygen/html/html/classSVF_1_1CondPointsToSet.html +3 -3
  222. package/SVF-doxygen/html/html/classSVF_1_1ConsExeState.html +2 -2
  223. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +7 -7
  224. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
  225. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
  226. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +4 -4
  227. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  228. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +4 -4
  229. package/SVF-doxygen/html/html/classSVF_1_1CxtDPItem.html +1 -1
  230. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  231. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  232. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +1 -1
  233. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +9 -9
  234. package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1DPItem.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeBug.html +35 -35
  237. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +3 -3
  238. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +2 -2
  239. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +2 -2
  240. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +1 -1
  241. package/SVF-doxygen/html/html/classSVF_1_1EntryCHI.html +2 -2
  242. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +1 -1
  243. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +8 -77
  244. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +130 -1337
  245. package/SVF-doxygen/html/html/classSVF_1_1FILOWorkList.html +1 -1
  246. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +3 -3
  247. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +4 -4
  248. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +1 -1
  249. package/SVF-doxygen/html/html/classSVF_1_1FileNeverCloseBug.html +10 -10
  250. package/SVF-doxygen/html/html/classSVF_1_1FilePartialCloseBug.html +35 -35
  251. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +4 -4
  252. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  253. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +12 -12
  254. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  255. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  256. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  257. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  258. package/SVF-doxygen/html/html/classSVF_1_1FullNullPtrDereferenceBug.html +10 -10
  259. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +4 -4
  260. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +5 -5
  261. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +2 -2
  262. package/SVF-doxygen/html/html/classSVF_1_1GenericBug.html +9 -13
  263. package/SVF-doxygen/html/html/classSVF_1_1GenericGraphReader.html +1 -1
  264. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +2 -2
  265. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
  266. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +4 -4
  267. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  268. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -3
  269. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +11 -8
  271. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +2 -2
  272. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter.html +1 -1
  273. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  274. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +13 -13
  275. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  276. package/SVF-doxygen/html/html/classSVF_1_1ICFGWriter.html +11 -11
  277. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +1 -1
  278. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +2 -2
  279. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +2 -2
  280. package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +3 -3
  281. package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +1 -1
  282. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  283. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +4 -4
  284. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  285. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
  286. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +5 -5
  287. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +42 -40
  288. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1586 -1455
  289. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  290. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +4 -4
  291. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  292. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +15 -15
  293. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +8 -8
  294. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +18 -18
  295. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +3 -3
  296. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +14 -14
  297. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  298. package/SVF-doxygen/html/html/classSVF_1_1MSSACHI.html +4 -4
  299. package/SVF-doxygen/html/html/classSVF_1_1MSSADEF.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHI.html +2 -2
  301. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  303. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
  304. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +2 -2
  305. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +7 -7
  306. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  307. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +1 -1
  308. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +24 -24
  309. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +4 -4
  310. package/SVF-doxygen/html/html/classSVF_1_1MutableIncDFPTData.html +6 -6
  311. package/SVF-doxygen/html/html/classSVF_1_1NeverFreeBug.html +10 -10
  312. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +2 -2
  313. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  314. package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral.html +1 -1
  315. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +3 -3
  316. package/SVF-doxygen/html/html/classSVF_1_1Options.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +14 -14
  318. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
  319. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +3 -3
  320. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
  321. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
  322. package/SVF-doxygen/html/html/classSVF_1_1PartialLeakBug.html +34 -34
  323. package/SVF-doxygen/html/html/classSVF_1_1PartialNullPtrDereferenceBug.html +10 -10
  324. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +3 -3
  325. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +5 -5
  326. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +11 -11
  327. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +3 -3
  328. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +1 -1
  329. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +3 -3
  330. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +7 -7
  331. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +3 -3
  332. package/SVF-doxygen/html/html/classSVF_1_1ReaderIDToObjMap.html +2 -2
  333. package/SVF-doxygen/html/html/classSVF_1_1ReaderPtrPool.html +2 -2
  334. package/SVF-doxygen/html/html/classSVF_1_1RelExeState.html +1 -1
  335. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  336. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +3 -3
  337. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +3 -3
  338. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
  339. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +30 -30
  340. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +75 -75
  341. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +15 -15
  342. package/SVF-doxygen/html/html/classSVF_1_1SVFBugEvent.html +50 -50
  343. package/SVF-doxygen/html/html/classSVF_1_1SVFBugReport.html +88 -88
  344. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +67 -67
  345. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +17 -17
  346. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +23 -23
  347. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +21 -21
  348. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +27 -27
  349. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +15 -15
  350. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +15 -13
  351. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +222 -153
  352. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +5 -5
  353. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +5 -5
  354. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
  355. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +34 -34
  356. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +7 -7
  357. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ConsExeState.html +5 -5
  358. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +5 -5
  359. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +64 -73
  360. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +915 -1777
  361. package/SVF-doxygen/html/html/classSVF_1_1SVFIRReader.html +1128 -1126
  362. package/SVF-doxygen/html/html/classSVF_1_1SVFIRWriter.html +548 -547
  363. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +53 -53
  364. package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo.html +3 -3
  365. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +15 -15
  366. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +173 -173
  367. package/SVF-doxygen/html/html/classSVF_1_1SVFModuleReader.html +1 -1
  368. package/SVF-doxygen/html/html/classSVF_1_1SVFModuleWriter.html +23 -23
  369. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +1 -1
  370. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +11 -11
  371. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +8 -8
  372. package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +1 -1
  373. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +27 -27
  374. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
  375. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +53 -53
  376. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +15 -15
  377. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  378. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +5 -5
  379. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +1 -1
  380. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +3 -3
  381. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +12 -12
  382. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +6 -6
  383. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  384. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +2 -2
  385. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +4 -4
  386. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  387. package/SVF-doxygen/html/html/classSVF_1_1SymState.html +3 -3
  388. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +34 -34
  389. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +11 -11
  390. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfoReader.html +1 -1
  391. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +18 -18
  392. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  393. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +4 -4
  394. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +4 -4
  395. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +8 -8
  396. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  397. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +5 -5
  398. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +4 -4
  399. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +3 -3
  400. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  401. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +2 -2
  402. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  403. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +3 -3
  404. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
  405. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
  406. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  407. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +1 -1
  408. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +1 -1
  409. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
  410. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +1 -1
  411. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +3 -3
  412. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +1 -1
  413. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +1 -1
  414. package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +1 -1
  415. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +1 -1
  416. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +1 -1
  417. package/SVF-doxygen/html/html/classes.html +335 -338
  418. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  419. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  420. package/SVF-doxygen/html/html/dir_fee120689dee99ef16f8bfcaa7a76083.html +2 -0
  421. package/SVF-doxygen/html/html/extapi_8c.html +1950 -0
  422. package/SVF-doxygen/html/html/extapi_8c_source.html +1488 -0
  423. package/SVF-doxygen/html/html/fastcluster_8cpp.html +1 -1
  424. package/SVF-doxygen/html/html/fastcluster_8cpp_source.html +3 -3
  425. package/SVF-doxygen/html/html/fastcluster_8h.html +2 -2
  426. package/SVF-doxygen/html/html/fastcluster_8h_source.html +4 -4
  427. package/SVF-doxygen/html/html/files.html +10 -9
  428. package/SVF-doxygen/html/html/functions_a.html +17 -27
  429. package/SVF-doxygen/html/html/functions_b.html +9 -12
  430. package/SVF-doxygen/html/html/functions_c.html +26 -70
  431. package/SVF-doxygen/html/html/functions_d.html +3 -7
  432. package/SVF-doxygen/html/html/functions_e.html +4 -121
  433. package/SVF-doxygen/html/html/functions_enum.html +0 -6
  434. package/SVF-doxygen/html/html/functions_eval.html +0 -1
  435. package/SVF-doxygen/html/html/functions_eval_c.html +1 -15
  436. package/SVF-doxygen/html/html/functions_eval_e.html +0 -96
  437. package/SVF-doxygen/html/html/functions_eval_g.html +1 -2
  438. package/SVF-doxygen/html/html/functions_eval_l.html +0 -1
  439. package/SVF-doxygen/html/html/functions_eval_m.html +0 -6
  440. package/SVF-doxygen/html/html/functions_eval_o.html +0 -3
  441. package/SVF-doxygen/html/html/functions_eval_r.html +0 -6
  442. package/SVF-doxygen/html/html/functions_eval_s.html +0 -1
  443. package/SVF-doxygen/html/html/functions_f.html +16 -19
  444. package/SVF-doxygen/html/html/functions_func.html +6 -18
  445. package/SVF-doxygen/html/html/functions_func_e.html +1 -13
  446. package/SVF-doxygen/html/html/functions_func_g.html +24 -91
  447. package/SVF-doxygen/html/html/functions_func_h.html +9 -12
  448. package/SVF-doxygen/html/html/functions_func_i.html +16 -28
  449. package/SVF-doxygen/html/html/functions_func_n.html +0 -3
  450. package/SVF-doxygen/html/html/functions_func_p.html +3 -12
  451. package/SVF-doxygen/html/html/functions_func_s.html +20 -83
  452. package/SVF-doxygen/html/html/functions_g.html +32 -100
  453. package/SVF-doxygen/html/html/functions_h.html +6 -9
  454. package/SVF-doxygen/html/html/functions_i.html +16 -28
  455. package/SVF-doxygen/html/html/functions_l.html +0 -1
  456. package/SVF-doxygen/html/html/functions_m.html +1 -7
  457. package/SVF-doxygen/html/html/functions_n.html +4 -7
  458. package/SVF-doxygen/html/html/functions_o.html +31 -44
  459. package/SVF-doxygen/html/html/functions_p.html +18 -29
  460. package/SVF-doxygen/html/html/functions_r.html +9 -16
  461. package/SVF-doxygen/html/html/functions_s.html +16 -84
  462. package/SVF-doxygen/html/html/functions_t.html +4 -10
  463. package/SVF-doxygen/html/html/functions_v.html +3 -3
  464. package/SVF-doxygen/html/html/functions_vars_a.html +3 -0
  465. package/SVF-doxygen/html/html/functions_vars_b.html +0 -3
  466. package/SVF-doxygen/html/html/functions_vars_c.html +1 -23
  467. package/SVF-doxygen/html/html/functions_vars_d.html +1 -5
  468. package/SVF-doxygen/html/html/functions_vars_e.html +2 -8
  469. package/SVF-doxygen/html/html/functions_vars_f.html +0 -3
  470. package/SVF-doxygen/html/html/functions_vars_o.html +0 -9
  471. package/SVF-doxygen/html/html/functions_vars_r.html +1 -2
  472. package/SVF-doxygen/html/html/functions_vars_s.html +1 -5
  473. package/SVF-doxygen/html/html/functions_vars_t.html +0 -6
  474. package/SVF-doxygen/html/html/globals.html +22 -4
  475. package/SVF-doxygen/html/html/globals_a.html +3 -0
  476. package/SVF-doxygen/html/html/globals_b.html +3 -0
  477. package/SVF-doxygen/html/html/globals_defs.html +3 -9
  478. package/SVF-doxygen/html/html/globals_e.html +0 -3
  479. package/SVF-doxygen/html/html/globals_f.html +11 -2
  480. package/SVF-doxygen/html/html/globals_func.html +159 -15
  481. package/SVF-doxygen/html/html/globals_g.html +13 -4
  482. package/SVF-doxygen/html/html/globals_i.html +41 -2
  483. package/SVF-doxygen/html/html/globals_j.html +3 -6
  484. package/SVF-doxygen/html/html/globals_l.html +3 -0
  485. package/SVF-doxygen/html/html/globals_m.html +8 -2
  486. package/SVF-doxygen/html/html/globals_n.html +2 -1
  487. package/SVF-doxygen/html/html/globals_p.html +1 -4
  488. package/SVF-doxygen/html/html/globals_r.html +12 -6
  489. package/SVF-doxygen/html/html/globals_s.html +33 -0
  490. package/SVF-doxygen/html/html/globals_t.html +3 -0
  491. package/SVF-doxygen/html/html/hierarchy.html +526 -529
  492. package/SVF-doxygen/html/html/iterator_8h_source.html +1 -1
  493. package/SVF-doxygen/html/html/iterator__range_8h_source.html +1 -1
  494. package/SVF-doxygen/html/html/llvm2svf_8cpp.html +1 -1
  495. package/SVF-doxygen/html/html/llvm2svf_8cpp_source.html +1 -1
  496. package/SVF-doxygen/html/html/menudata.js +3 -0
  497. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  498. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  499. package/SVF-doxygen/html/html/namespaceSVF.html +154 -153
  500. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +1003 -776
  501. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +305 -375
  502. package/SVF-doxygen/html/html/namespacemembers_func_g.html +11 -5
  503. package/SVF-doxygen/html/html/namespacemembers_func_i.html +11 -14
  504. package/SVF-doxygen/html/html/namespacemembers_func_r.html +6 -0
  505. package/SVF-doxygen/html/html/namespacemembers_g.html +11 -5
  506. package/SVF-doxygen/html/html/namespacemembers_i.html +8 -11
  507. package/SVF-doxygen/html/html/namespacemembers_r.html +6 -0
  508. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  509. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  510. package/SVF-doxygen/html/html/search/all_0.js +153 -147
  511. package/SVF-doxygen/html/html/search/all_1.js +476 -478
  512. package/SVF-doxygen/html/html/search/all_10.js +323 -327
  513. package/SVF-doxygen/html/html/search/all_11.js +212 -209
  514. package/SVF-doxygen/html/html/search/all_12.js +536 -547
  515. package/SVF-doxygen/html/html/search/all_13.js +188 -189
  516. package/SVF-doxygen/html/html/search/all_14.js +66 -66
  517. package/SVF-doxygen/html/html/search/all_15.js +170 -170
  518. package/SVF-doxygen/html/html/search/all_16.js +60 -60
  519. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  520. package/SVF-doxygen/html/html/search/all_18.js +1 -1
  521. package/SVF-doxygen/html/html/search/all_19.js +10 -10
  522. package/SVF-doxygen/html/html/search/all_1a.js +169 -169
  523. package/SVF-doxygen/html/html/search/all_2.js +159 -159
  524. package/SVF-doxygen/html/html/search/all_3.js +597 -608
  525. package/SVF-doxygen/html/html/search/all_4.js +226 -227
  526. package/SVF-doxygen/html/html/search/all_5.js +116 -156
  527. package/SVF-doxygen/html/html/search/all_6.js +225 -223
  528. package/SVF-doxygen/html/html/search/all_7.js +996 -1012
  529. package/SVF-doxygen/html/html/search/all_8.js +191 -192
  530. package/SVF-doxygen/html/html/search/all_9.js +605 -597
  531. package/SVF-doxygen/html/html/search/all_a.js +46 -47
  532. package/SVF-doxygen/html/html/search/all_b.js +26 -26
  533. package/SVF-doxygen/html/html/search/all_c.js +114 -113
  534. package/SVF-doxygen/html/html/search/all_d.js +196 -196
  535. package/SVF-doxygen/html/html/search/all_e.js +205 -206
  536. package/SVF-doxygen/html/html/search/all_f.js +116 -122
  537. package/SVF-doxygen/html/html/search/classes_0.js +26 -26
  538. package/SVF-doxygen/html/html/search/classes_1.js +9 -9
  539. package/SVF-doxygen/html/html/search/classes_10.js +73 -73
  540. package/SVF-doxygen/html/html/search/classes_11.js +15 -15
  541. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  542. package/SVF-doxygen/html/html/search/classes_13.js +10 -10
  543. package/SVF-doxygen/html/html/search/classes_14.js +14 -14
  544. package/SVF-doxygen/html/html/search/classes_15.js +1 -1
  545. package/SVF-doxygen/html/html/search/classes_2.js +76 -76
  546. package/SVF-doxygen/html/html/search/classes_3.js +35 -35
  547. package/SVF-doxygen/html/html/search/classes_4.js +8 -10
  548. package/SVF-doxygen/html/html/search/classes_5.js +28 -28
  549. package/SVF-doxygen/html/html/search/classes_6.js +98 -98
  550. package/SVF-doxygen/html/html/search/classes_7.js +33 -33
  551. package/SVF-doxygen/html/html/search/classes_8.js +56 -56
  552. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  553. package/SVF-doxygen/html/html/search/classes_a.js +12 -12
  554. package/SVF-doxygen/html/html/search/classes_b.js +29 -29
  555. package/SVF-doxygen/html/html/search/classes_c.js +6 -6
  556. package/SVF-doxygen/html/html/search/classes_d.js +18 -19
  557. package/SVF-doxygen/html/html/search/classes_e.js +36 -36
  558. package/SVF-doxygen/html/html/search/classes_f.js +25 -25
  559. package/SVF-doxygen/html/html/search/defines_0.js +3 -3
  560. package/SVF-doxygen/html/html/search/defines_1.js +2 -2
  561. package/SVF-doxygen/html/html/search/defines_2.js +30 -30
  562. package/SVF-doxygen/html/html/search/defines_3.js +20 -20
  563. package/SVF-doxygen/html/html/search/defines_4.js +2 -3
  564. package/SVF-doxygen/html/html/search/defines_5.js +4 -4
  565. package/SVF-doxygen/html/html/search/defines_6.js +2 -2
  566. package/SVF-doxygen/html/html/search/defines_7.js +5 -5
  567. package/SVF-doxygen/html/html/search/defines_8.js +11 -13
  568. package/SVF-doxygen/html/html/search/defines_9.js +9 -9
  569. package/SVF-doxygen/html/html/search/defines_a.js +2 -2
  570. package/SVF-doxygen/html/html/search/defines_b.js +1 -1
  571. package/SVF-doxygen/html/html/search/defines_c.js +3 -2
  572. package/SVF-doxygen/html/html/search/defines_d.js +2 -2
  573. package/SVF-doxygen/html/html/search/defines_e.js +6 -6
  574. package/SVF-doxygen/html/html/search/defines_f.js +3 -3
  575. package/SVF-doxygen/html/html/search/enums_0.js +3 -3
  576. package/SVF-doxygen/html/html/search/enums_1.js +2 -2
  577. package/SVF-doxygen/html/html/search/enums_10.js +1 -1
  578. package/SVF-doxygen/html/html/search/enums_11.js +1 -1
  579. package/SVF-doxygen/html/html/search/enums_2.js +8 -8
  580. package/SVF-doxygen/html/html/search/enums_3.js +1 -1
  581. package/SVF-doxygen/html/html/search/enums_4.js +3 -4
  582. package/SVF-doxygen/html/html/search/enums_5.js +1 -1
  583. package/SVF-doxygen/html/html/search/enums_6.js +2 -2
  584. package/SVF-doxygen/html/html/search/enums_7.js +2 -2
  585. package/SVF-doxygen/html/html/search/enums_8.js +4 -4
  586. package/SVF-doxygen/html/html/search/enums_9.js +1 -1
  587. package/SVF-doxygen/html/html/search/enums_a.js +1 -2
  588. package/SVF-doxygen/html/html/search/enums_b.js +7 -7
  589. package/SVF-doxygen/html/html/search/enums_c.js +1 -1
  590. package/SVF-doxygen/html/html/search/enums_d.js +4 -4
  591. package/SVF-doxygen/html/html/search/enums_e.js +2 -2
  592. package/SVF-doxygen/html/html/search/enums_f.js +4 -4
  593. package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
  594. package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
  595. package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
  596. package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
  597. package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
  598. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  599. package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
  600. package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
  601. package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -40
  602. package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
  603. package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -34
  604. package/SVF-doxygen/html/html/search/enumvalues_5.js +48 -48
  605. package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
  606. package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
  607. package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
  608. package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
  609. package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -17
  610. package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
  611. package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -6
  612. package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
  613. package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -11
  614. package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
  615. package/SVF-doxygen/html/html/search/files_0.js +13 -13
  616. package/SVF-doxygen/html/html/search/files_1.js +7 -7
  617. package/SVF-doxygen/html/html/search/files_10.js +8 -8
  618. package/SVF-doxygen/html/html/search/files_11.js +8 -8
  619. package/SVF-doxygen/html/html/search/files_12.js +2 -2
  620. package/SVF-doxygen/html/html/search/files_2.js +49 -49
  621. package/SVF-doxygen/html/html/search/files_3.js +14 -14
  622. package/SVF-doxygen/html/html/search/files_4.js +5 -4
  623. package/SVF-doxygen/html/html/search/files_5.js +13 -13
  624. package/SVF-doxygen/html/html/search/files_6.js +9 -9
  625. package/SVF-doxygen/html/html/search/files_7.js +14 -14
  626. package/SVF-doxygen/html/html/search/files_8.js +13 -13
  627. package/SVF-doxygen/html/html/search/files_9.js +18 -18
  628. package/SVF-doxygen/html/html/search/files_a.js +3 -3
  629. package/SVF-doxygen/html/html/search/files_b.js +2 -2
  630. package/SVF-doxygen/html/html/search/files_c.js +20 -20
  631. package/SVF-doxygen/html/html/search/files_d.js +4 -4
  632. package/SVF-doxygen/html/html/search/files_e.js +62 -62
  633. package/SVF-doxygen/html/html/search/files_f.js +8 -8
  634. package/SVF-doxygen/html/html/search/functions_0.js +6 -351
  635. package/SVF-doxygen/html/html/search/functions_1.js +348 -81
  636. package/SVF-doxygen/html/html/search/functions_10.js +139 -122
  637. package/SVF-doxygen/html/html/search/functions_11.js +126 -283
  638. package/SVF-doxygen/html/html/search/functions_12.js +273 -55
  639. package/SVF-doxygen/html/html/search/functions_13.js +56 -38
  640. package/SVF-doxygen/html/html/search/functions_14.js +38 -71
  641. package/SVF-doxygen/html/html/search/functions_15.js +71 -29
  642. package/SVF-doxygen/html/html/search/functions_16.js +29 -2
  643. package/SVF-doxygen/html/html/search/functions_17.js +2 -169
  644. package/SVF-doxygen/html/html/search/functions_18.html +30 -0
  645. package/SVF-doxygen/html/html/search/functions_18.js +172 -0
  646. package/SVF-doxygen/html/html/search/functions_2.js +82 -251
  647. package/SVF-doxygen/html/html/search/functions_3.js +251 -71
  648. package/SVF-doxygen/html/html/search/functions_4.js +71 -55
  649. package/SVF-doxygen/html/html/search/functions_5.js +51 -55
  650. package/SVF-doxygen/html/html/search/functions_6.js +58 -832
  651. package/SVF-doxygen/html/html/search/functions_7.js +816 -144
  652. package/SVF-doxygen/html/html/search/functions_8.js +143 -417
  653. package/SVF-doxygen/html/html/search/functions_9.js +425 -29
  654. package/SVF-doxygen/html/html/search/functions_a.js +30 -2
  655. package/SVF-doxygen/html/html/search/functions_b.js +2 -23
  656. package/SVF-doxygen/html/html/search/functions_c.js +24 -75
  657. package/SVF-doxygen/html/html/search/functions_d.js +77 -35
  658. package/SVF-doxygen/html/html/search/functions_e.js +34 -56
  659. package/SVF-doxygen/html/html/search/functions_f.js +56 -143
  660. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  661. package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
  662. package/SVF-doxygen/html/html/search/related_0.js +2 -2
  663. package/SVF-doxygen/html/html/search/related_1.js +1 -1
  664. package/SVF-doxygen/html/html/search/related_2.js +2 -2
  665. package/SVF-doxygen/html/html/search/related_3.js +2 -2
  666. package/SVF-doxygen/html/html/search/related_4.js +2 -2
  667. package/SVF-doxygen/html/html/search/related_5.js +1 -1
  668. package/SVF-doxygen/html/html/search/related_6.js +2 -2
  669. package/SVF-doxygen/html/html/search/related_7.js +4 -4
  670. package/SVF-doxygen/html/html/search/related_8.js +2 -2
  671. package/SVF-doxygen/html/html/search/related_9.js +4 -4
  672. package/SVF-doxygen/html/html/search/related_a.js +19 -19
  673. package/SVF-doxygen/html/html/search/related_b.js +4 -4
  674. package/SVF-doxygen/html/html/search/related_c.js +1 -1
  675. package/SVF-doxygen/html/html/search/related_d.js +11 -11
  676. package/SVF-doxygen/html/html/search/related_e.js +2 -2
  677. package/SVF-doxygen/html/html/search/related_f.js +2 -2
  678. package/SVF-doxygen/html/html/search/searchdata.js +1 -1
  679. package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
  680. package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
  681. package/SVF-doxygen/html/html/search/typedefs_10.js +60 -60
  682. package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
  683. package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
  684. package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
  685. package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
  686. package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
  687. package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
  688. package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
  689. package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
  690. package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
  691. package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
  692. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  693. package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
  694. package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
  695. package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
  696. package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
  697. package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
  698. package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
  699. package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
  700. package/SVF-doxygen/html/html/search/variables_0.js +147 -147
  701. package/SVF-doxygen/html/html/search/variables_1.js +75 -74
  702. package/SVF-doxygen/html/html/search/variables_10.js +97 -97
  703. package/SVF-doxygen/html/html/search/variables_11.js +46 -46
  704. package/SVF-doxygen/html/html/search/variables_12.js +92 -93
  705. package/SVF-doxygen/html/html/search/variables_13.js +75 -77
  706. package/SVF-doxygen/html/html/search/variables_14.js +14 -14
  707. package/SVF-doxygen/html/html/search/variables_15.js +48 -48
  708. package/SVF-doxygen/html/html/search/variables_16.js +9 -9
  709. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  710. package/SVF-doxygen/html/html/search/variables_18.js +2 -2
  711. package/SVF-doxygen/html/html/search/variables_2.js +34 -35
  712. package/SVF-doxygen/html/html/search/variables_3.js +141 -148
  713. package/SVF-doxygen/html/html/search/variables_4.js +55 -56
  714. package/SVF-doxygen/html/html/search/variables_5.js +38 -40
  715. package/SVF-doxygen/html/html/search/variables_6.js +66 -67
  716. package/SVF-doxygen/html/html/search/variables_7.js +33 -33
  717. package/SVF-doxygen/html/html/search/variables_8.js +7 -7
  718. package/SVF-doxygen/html/html/search/variables_9.js +77 -77
  719. package/SVF-doxygen/html/html/search/variables_a.js +4 -4
  720. package/SVF-doxygen/html/html/search/variables_b.js +10 -10
  721. package/SVF-doxygen/html/html/search/variables_c.js +45 -45
  722. package/SVF-doxygen/html/html/search/variables_d.js +56 -56
  723. package/SVF-doxygen/html/html/search/variables_e.js +123 -123
  724. package/SVF-doxygen/html/html/search/variables_f.js +30 -33
  725. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  726. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  727. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +2 -2
  728. package/SVF-doxygen/html/html/structSVF_1_1MemRegion_1_1equalMemRegion.html +1 -1
  729. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__iterable.html +1 -1
  730. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__iterable_3_01T_00_01void__t_3_01decltype_07std_1_1begin_07std_1_1dec794949348c8e1e00603fd8633b6dd1f3.html +1 -1
  731. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map.html +1 -1
  732. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map_3_01std_1_1map_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  733. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map_3_01std_1_1unordered__map_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  734. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container.html +1 -1
  735. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1deque_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  736. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1list_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  737. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1vector_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  738. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set.html +1 -1
  739. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set_3_01std_1_1set_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  740. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set_3_01std_1_1unordered__set_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  741. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1make__void.html +4 -4
  742. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +7 -7
  743. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  744. package/SVF-doxygen/html/html/svf-ex_8cpp.html +3 -3
  745. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +4 -4
  746. package/SVF-doxygen/html/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +9 -9
  747. package/SVF-doxygen/html/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +9 -9
  748. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  749. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  750. package/build.sh +1 -1
  751. package/package.json +1 -1
  752. package/svf/include/AbstractExecution/ConsExeState.h +1 -1
  753. package/svf/include/AbstractExecution/IntervalExeState.h +1 -1
  754. package/svf/include/AbstractExecution/IntervalValue.h +1 -1
  755. package/svf/include/AbstractExecution/SymState.h +1 -1
  756. package/svf/include/CFL/CFGrammar.h +1 -1
  757. package/svf/include/CFL/GrammarBuilder.h +3 -3
  758. package/svf/include/FastCluster/fastcluster.h +4 -4
  759. package/svf/include/Graphs/CHG.h +1 -1
  760. package/svf/include/Graphs/ConsG.h +3 -3
  761. package/svf/include/Graphs/GenericGraph.h +2 -2
  762. package/svf/include/Graphs/GraphTraits.h +1 -1
  763. package/svf/include/Graphs/GraphWriter.h +1 -1
  764. package/svf/include/Graphs/IRGraph.h +1 -1
  765. package/svf/include/Graphs/PTACallGraph.h +1 -1
  766. package/svf/include/Graphs/VFGNode.h +2 -2
  767. package/svf/include/MSSA/MSSAMuChi.h +2 -2
  768. package/svf/include/MSSA/MemRegion.h +1 -1
  769. package/svf/include/MSSA/MemSSA.h +1 -1
  770. package/svf/include/MTA/FSMPTA.h +1 -1
  771. package/svf/include/MTA/MHP.h +1 -1
  772. package/svf/include/MTA/TCT.h +1 -1
  773. package/svf/include/MemoryModel/ConditionalPT.h +1 -1
  774. package/svf/include/MemoryModel/MutablePointsToDS.h +2 -2
  775. package/svf/include/MemoryModel/PersistentPointsToDS.h +1 -1
  776. package/svf/include/MemoryModel/PointerAnalysis.h +1 -1
  777. package/svf/include/MemoryModel/PointsTo.h +1 -1
  778. package/svf/include/SABER/SaberCondAllocator.h +1 -1
  779. package/svf/include/SABER/SrcSnkDDA.h +1 -1
  780. package/svf/include/SVFIR/SVFFileSystem.h +3 -3
  781. package/svf/include/SVFIR/SVFIR.h +1 -1
  782. package/svf/include/SVFIR/SVFModule.h +0 -1
  783. package/svf/include/SVFIR/SVFStatements.h +19 -19
  784. package/svf/include/SVFIR/SVFType.h +5 -5
  785. package/svf/include/SVFIR/SVFValue.h +8 -2
  786. package/svf/include/SVFIR/SVFVariables.h +3 -3
  787. package/svf/include/SVFIR/SymbolTableInfo.h +3 -3
  788. package/svf/include/Util/Casting.h +1 -1
  789. package/svf/include/Util/CoreBitVector.h +2 -2
  790. package/svf/include/Util/DPItem.h +1 -1
  791. package/svf/include/Util/ExtAPI.h +11 -457
  792. package/svf/include/Util/NodeIDAllocator.h +1 -1
  793. package/svf/include/Util/Options.h +1 -1
  794. package/svf/include/Util/SVFBugReport.h +1 -1
  795. package/svf/include/Util/SVFUtil.h +11 -26
  796. package/svf/include/Util/WorkList.h +1 -1
  797. package/svf/include/Util/cJSON.h +1 -1
  798. package/svf/include/WPA/Andersen.h +1 -1
  799. package/svf/include/WPA/FlowSensitive.h +1 -1
  800. package/svf/include/WPA/WPASolver.h +1 -1
  801. package/svf/lib/AbstractExecution/SVFIR2ConsExeState.cpp +1 -1
  802. package/svf/lib/CFL/CFGNormalizer.cpp +2 -2
  803. package/svf/lib/CFL/CFLAlias.cpp +2 -2
  804. package/svf/lib/CFL/CFLGraphBuilder.cpp +2 -2
  805. package/svf/lib/CFL/CFLVF.cpp +1 -1
  806. package/svf/lib/DDA/ContextDDA.cpp +1 -1
  807. package/svf/lib/FastCluster/fastcluster.cpp +3 -3
  808. package/svf/lib/Graphs/ConsG.cpp +1 -1
  809. package/svf/lib/Graphs/SVFGOPT.cpp +2 -2
  810. package/svf/lib/Graphs/VFG.cpp +2 -2
  811. package/svf/lib/MSSA/MemRegion.cpp +1 -1
  812. package/svf/lib/MTA/FSMPTA.cpp +1 -1
  813. package/svf/lib/MTA/LockAnalysis.cpp +1 -1
  814. package/svf/lib/MTA/MHP.cpp +1 -1
  815. package/svf/lib/MemoryModel/AccessPath.cpp +2 -2
  816. package/svf/lib/SABER/ProgSlice.cpp +1 -1
  817. package/svf/lib/SABER/SaberCondAllocator.cpp +1 -1
  818. package/svf/lib/SVFIR/SVFFileSystem.cpp +3 -1
  819. package/svf/lib/SVFIR/SVFIR.cpp +3 -3
  820. package/svf/lib/SVFIR/SVFValue.cpp +5 -5
  821. package/svf/lib/SVFIR/SymbolTableInfo.cpp +2 -2
  822. package/svf/lib/Util/ExtAPI.cpp +36 -595
  823. package/svf/lib/Util/NodeIDAllocator.cpp +2 -2
  824. package/svf/lib/Util/Options.cpp +8 -8
  825. package/svf/lib/Util/SVFBugReport.cpp +0 -2
  826. package/svf/lib/Util/SVFUtil.cpp +2 -2
  827. package/svf/lib/Util/extapi.c +1348 -0
  828. package/svf/lib/WPA/Andersen.cpp +6 -6
  829. package/svf/lib/WPA/VersionedFlowSensitive.cpp +2 -2
  830. package/svf-llvm/CMakeLists.txt +1 -1
  831. package/svf-llvm/include/SVF-LLVM/GEPTypeBridgeIterator.h +1 -1
  832. package/svf-llvm/include/SVF-LLVM/LLVMModule.h +17 -0
  833. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +14 -1
  834. package/svf-llvm/include/SVF-LLVM/SVFIRBuilder.h +5 -14
  835. package/svf-llvm/include/SVF-LLVM/SymbolTableBuilder.h +1 -1
  836. package/svf-llvm/lib/BreakConstantExpr.cpp +1 -1
  837. package/svf-llvm/lib/ICFGBuilder.cpp +2 -2
  838. package/svf-llvm/lib/LLVMModule.cpp +160 -46
  839. package/svf-llvm/lib/LLVMUtil.cpp +121 -0
  840. package/svf-llvm/lib/SVFIRBuilder.cpp +12 -81
  841. package/svf-llvm/lib/SVFIRExtAPI.cpp +161 -536
  842. package/svf-llvm/lib/SymbolTableBuilder.cpp +2 -2
  843. package/svf-llvm/tools/MTA/MTAResultValidator.cpp +1 -1
  844. package/svf/include/Util/ExtAPI.json +0 -5853
@@ -203,6 +203,15 @@ Functions</h2></td></tr>
203
203
  <tr class="separator:a003b769751b93b94bdb011bd704cfde1"><td class="memSeparator" colspan="2">&#160;</td></tr>
204
204
  <tr class="memitem:a4638a12f5481dff947b59cf8353e619b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">isIntrinsicFun</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *func)</td></tr>
205
205
  <tr class="separator:a4638a12f5481dff947b59cf8353e619b"><td class="memSeparator" colspan="2">&#160;</td></tr>
206
+ <tr class="memitem:a47d2af43ff12d9e1014fa19256619466"><td class="memItemLeft" align="right" valign="top">std::vector&lt; const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="el" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</td></tr>
207
+ <tr class="memdesc:a47d2af43ff12d9e1014fa19256619466"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get all called funcions in a parent function. <a href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">More...</a><br /></td></tr>
208
+ <tr class="separator:a47d2af43ff12d9e1014fa19256619466"><td class="memSeparator" colspan="2">&#160;</td></tr>
209
+ <tr class="memitem:a8cd4d6410017b9e5f47f2f88450b78d8"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">getFunAnnotations</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun)</td></tr>
210
+ <tr class="separator:a8cd4d6410017b9e5f47f2f88450b78d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
211
+ <tr class="memitem:a523a8c3f9bfaea178733822ac598d552"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">removeFunAnnotations</a> (std::vector&lt; <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * &gt; &amp;removedFuncList)</td></tr>
212
+ <tr class="separator:a523a8c3f9bfaea178733822ac598d552"><td class="memSeparator" colspan="2">&#160;</td></tr>
213
+ <tr class="memitem:a74ed17168bf5946cfb3f17495ec6db99"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a74ed17168bf5946cfb3f17495ec6db99">removeUnusedFuncsAndAnnotations</a> (std::vector&lt; <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * &gt; removedFuncList)</td></tr>
214
+ <tr class="separator:a74ed17168bf5946cfb3f17495ec6db99"><td class="memSeparator" colspan="2">&#160;</td></tr>
206
215
  <tr class="memitem:a63222955897ba34e921b9cfd8a2a3619"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a63222955897ba34e921b9cfd8a2a3619">getFunction</a> (const <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> &amp;<a class="el" href="cJSON_8cpp.html#acc128f98d9ceca227038c771308eff39">name</a>)</td></tr>
207
216
  <tr class="memdesc:a63222955897ba34e921b9cfd8a2a3619"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the corresponding Function based on its name. <a href="namespaceSVF_1_1LLVMUtil.html#a63222955897ba34e921b9cfd8a2a3619">More...</a><br /></td></tr>
208
217
  <tr class="separator:a63222955897ba34e921b9cfd8a2a3619"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -287,11 +296,11 @@ Functions</h2></td></tr>
287
296
 
288
297
  <p>whether this is an argument in dead function </p>
289
298
 
290
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00173">173</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
291
- <div class="fragment"><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;{</div>
292
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val)</div>
293
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; &amp;&amp; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div>
294
- <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;}</div>
299
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00172">172</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
300
+ <div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;{</div>
301
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val)</div>
302
+ <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; &amp;&amp; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div>
303
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;}</div>
295
304
  </div><!-- fragment -->
296
305
  </div>
297
306
  </div>
@@ -321,12 +330,12 @@ Functions</h2></td></tr>
321
330
 
322
331
  <p>Return true if this is an argument of a program entry function (e.g. main) </p>
323
332
 
324
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00181">181</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
325
- <div class="fragment"><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;{</div>
326
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val) &amp;&amp;</div>
327
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">LLVMUtil::isProgEntryFunction</a>(</div>
328
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div>
329
- <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;}</div>
333
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00180">180</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
334
+ <div class="fragment"><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;{</div>
335
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val) &amp;&amp;</div>
336
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">LLVMUtil::isProgEntryFunction</a>(</div>
337
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div>
338
+ <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div>
330
339
  </div><!-- fragment -->
331
340
  </div>
332
341
  </div>
@@ -413,6 +422,45 @@ Functions</h2></td></tr>
413
422
  </div><!-- fragment -->
414
423
  </div>
415
424
  </div>
425
+ <a id="a47d2af43ff12d9e1014fa19256619466"></a>
426
+ <h2 class="memtitle"><span class="permalink"><a href="#a47d2af43ff12d9e1014fa19256619466">&#9670;&nbsp;</a></span>getCalledFunctions()</h2>
427
+
428
+ <div class="memitem">
429
+ <div class="memproto">
430
+ <table class="memname">
431
+ <tr>
432
+ <td class="memname">std::vector&lt; const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * &gt; SVF::LLVMUtil::getCalledFunctions </td>
433
+ <td>(</td>
434
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *&#160;</td>
435
+ <td class="paramname"><em>F</em></td><td>)</td>
436
+ <td></td>
437
+ </tr>
438
+ </table>
439
+ </div><div class="memdoc">
440
+
441
+ <p>Get all called funcions in a parent function. </p>
442
+
443
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00549">549</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
444
+ <div class="fragment"><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;{</div>
445
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; std::vector&lt;const Function *&gt; calledFunctions;</div>
446
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &amp;I : instructions(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
447
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {</div>
448
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callInst = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;I))</div>
449
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; {</div>
450
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *calledFunction = callInst-&gt;getCalledFunction();</div>
451
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">if</span> (calledFunction)</div>
452
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; {</div>
453
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; calledFunctions.push_back(calledFunction);</div>
454
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; std::vector&lt;const Function *&gt; nestedCalledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a>(calledFunction);</div>
455
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
456
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div>
457
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div>
458
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; }</div>
459
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">return</span> calledFunctions;</div>
460
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;}</div>
461
+ </div><!-- fragment -->
462
+ </div>
463
+ </div>
416
464
  <a id="ad56c48be3ba6ebb95416623256524097"></a>
417
465
  <h2 class="memtitle"><span class="permalink"><a href="#ad56c48be3ba6ebb95416623256524097">&#9670;&nbsp;</a></span>getCallee()</h2>
418
466
 
@@ -437,12 +485,12 @@ Functions</h2></td></tr>
437
485
  </table>
438
486
  </div><div class="memdoc">
439
487
 
440
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00075">75</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
441
- <div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;{</div>
442
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// FIXME: do we need to strip-off the casts here to discover more library functions</span></div>
443
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = SVFUtil::dyn_cast&lt;Function&gt;(cs-&gt;getCalledOperand()-&gt;stripPointerCasts());</div>
444
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> callee ? <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">getDefFunForMultipleModule</a>(callee) : nullptr;</div>
445
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div>
488
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00074">74</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
489
+ <div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;{</div>
490
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// FIXME: do we need to strip-off the casts here to discover more library functions</span></div>
491
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = SVFUtil::dyn_cast&lt;Function&gt;(cs-&gt;getCalledOperand()-&gt;stripPointerCasts());</div>
492
+ <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> callee ? <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">getDefFunForMultipleModule</a>(callee) : nullptr;</div>
493
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div>
446
494
  </div><!-- fragment -->
447
495
  </div>
448
496
  </div>
@@ -462,29 +510,29 @@ Functions</h2></td></tr>
462
510
  </table>
463
511
  </div><div class="memdoc">
464
512
 
465
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00951">951</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
466
- <div class="fragment"><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;{</div>
467
- <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <span class="stringliteral">&quot;&quot;</span>;</div>
468
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrType = SVFUtil::dyn_cast&lt;PointerType&gt;(ty))</div>
469
- <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; {</div>
470
- <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemType = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrType);</div>
471
- <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(elemType) &amp;&amp;</div>
472
- <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; !((SVFUtil::cast&lt;StructType&gt;(elemType))-&gt;isLiteral()))</div>
473
- <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; {</div>
474
- <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> elemTypeName = elemType-&gt;getStructName().str();</div>
475
- <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>) == 0)</div>
476
- <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; {</div>
477
- <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size());</div>
478
- <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; }</div>
479
- <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>) ==</div>
480
- <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; 0)</div>
481
- <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; {</div>
482
- <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size());</div>
483
- <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; }</div>
484
- <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; }</div>
485
- <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; }</div>
486
- <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">return</span> className;</div>
487
- <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;}</div>
513
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01072">1072</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
514
+ <div class="fragment"><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;{</div>
515
+ <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <span class="stringliteral">&quot;&quot;</span>;</div>
516
+ <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrType = SVFUtil::dyn_cast&lt;PointerType&gt;(ty))</div>
517
+ <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; {</div>
518
+ <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemType = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrType);</div>
519
+ <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(elemType) &amp;&amp;</div>
520
+ <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; !((SVFUtil::cast&lt;StructType&gt;(elemType))-&gt;isLiteral()))</div>
521
+ <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; {</div>
522
+ <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> elemTypeName = elemType-&gt;getStructName().str();</div>
523
+ <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>) == 0)</div>
524
+ <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; {</div>
525
+ <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size());</div>
526
+ <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; }</div>
527
+ <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>) ==</div>
528
+ <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; 0)</div>
529
+ <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; {</div>
530
+ <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size());</div>
531
+ <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; }</div>
532
+ <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; }</div>
533
+ <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; }</div>
534
+ <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">return</span> className;</div>
535
+ <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;}</div>
488
536
  </div><!-- fragment -->
489
537
  </div>
490
538
  </div>
@@ -504,32 +552,32 @@ Functions</h2></td></tr>
504
552
  </table>
505
553
  </div><div class="memdoc">
506
554
 
507
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00975">975</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
508
- <div class="fragment"><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;{</div>
509
- <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> thisPtrClassName;</div>
510
- <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst-&gt;getMetadata(<span class="stringliteral">&quot;VCallPtrType&quot;</span>))</div>
511
- <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; {</div>
512
- <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0).get());</div>
513
- <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; thisPtrClassName = mdstr-&gt;getString().str();</div>
514
- <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div>
515
- <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">if</span> (thisPtrClassName.size() == 0)</div>
516
- <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; {</div>
517
- <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(inst);</div>
518
- <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; thisPtrClassName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">getClassNameFromType</a>(thisPtr-&gt;getType());</div>
519
- <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; }</div>
520
- <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; </div>
521
- <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keywordtype">size_t</span> found = thisPtrClassName.find_last_not_of(<span class="stringliteral">&quot;0123456789&quot;</span>);</div>
522
- <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">if</span> (found != std::string::npos)</div>
523
- <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {</div>
524
- <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">if</span> (found != thisPtrClassName.size() - 1 &amp;&amp;</div>
525
- <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; thisPtrClassName[found] == <span class="charliteral">&#39;.&#39;</span>)</div>
526
- <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; {</div>
527
- <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">return</span> thisPtrClassName.substr(0, found);</div>
528
- <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; }</div>
529
- <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; }</div>
530
- <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; </div>
531
- <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">return</span> thisPtrClassName;</div>
532
- <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;}</div>
555
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01096">1096</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
556
+ <div class="fragment"><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;{</div>
557
+ <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> thisPtrClassName;</div>
558
+ <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst-&gt;getMetadata(<span class="stringliteral">&quot;VCallPtrType&quot;</span>))</div>
559
+ <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; {</div>
560
+ <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0).get());</div>
561
+ <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; thisPtrClassName = mdstr-&gt;getString().str();</div>
562
+ <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; }</div>
563
+ <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keywordflow">if</span> (thisPtrClassName.size() == 0)</div>
564
+ <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; {</div>
565
+ <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(inst);</div>
566
+ <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; thisPtrClassName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">getClassNameFromType</a>(thisPtr-&gt;getType());</div>
567
+ <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; }</div>
568
+ <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; </div>
569
+ <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordtype">size_t</span> found = thisPtrClassName.find_last_not_of(<span class="stringliteral">&quot;0123456789&quot;</span>);</div>
570
+ <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="keywordflow">if</span> (found != std::string::npos)</div>
571
+ <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; {</div>
572
+ <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">if</span> (found != thisPtrClassName.size() - 1 &amp;&amp;</div>
573
+ <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; thisPtrClassName[found] == <span class="charliteral">&#39;.&#39;</span>)</div>
574
+ <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; {</div>
575
+ <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="keywordflow">return</span> thisPtrClassName.substr(0, found);</div>
576
+ <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; }</div>
577
+ <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; }</div>
578
+ <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; </div>
579
+ <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordflow">return</span> thisPtrClassName;</div>
580
+ <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;}</div>
533
581
  </div><!-- fragment -->
534
582
  </div>
535
583
  </div>
@@ -549,14 +597,14 @@ Functions</h2></td></tr>
549
597
  </table>
550
598
  </div><div class="memdoc">
551
599
 
552
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00843">843</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
553
- <div class="fragment"><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;{</div>
554
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; assert((<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(fun)) &amp;&amp;</div>
555
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="stringliteral">&quot;not a constructor?&quot;</span>);</div>
556
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; assert(fun-&gt;arg_size() &gt;= 1 &amp;&amp; <span class="stringliteral">&quot;argument size &gt;= 1?&quot;</span>);</div>
557
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr = &amp;*(fun-&gt;arg_begin());</div>
558
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">return</span> thisPtr;</div>
559
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;}</div>
600
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00964">964</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
601
+ <div class="fragment"><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;{</div>
602
+ <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; assert((<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(fun)) &amp;&amp;</div>
603
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="stringliteral">&quot;not a constructor?&quot;</span>);</div>
604
+ <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; assert(fun-&gt;arg_size() &gt;= 1 &amp;&amp; <span class="stringliteral">&quot;argument size &gt;= 1?&quot;</span>);</div>
605
+ <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr = &amp;*(fun-&gt;arg_begin());</div>
606
+ <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">return</span> thisPtr;</div>
607
+ <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160;}</div>
560
608
  </div><!-- fragment -->
561
609
  </div>
562
610
  </div>
@@ -584,13 +632,13 @@ Functions</h2></td></tr>
584
632
  </table>
585
633
  </div><div class="memdoc">
586
634
 
587
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00330">330</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
588
- <div class="fragment"><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;{</div>
589
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a> *dl = <span class="keyword">nullptr</span>;</div>
590
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">if</span> (dl == <span class="keyword">nullptr</span>)</div>
591
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; dl = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a>(mod);</div>
592
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> dl;</div>
593
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;}</div>
635
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00329">329</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
636
+ <div class="fragment"><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;{</div>
637
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a> *dl = <span class="keyword">nullptr</span>;</div>
638
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (dl == <span class="keyword">nullptr</span>)</div>
639
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; dl = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a>(mod);</div>
640
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> dl;</div>
641
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;}</div>
594
642
  </div><!-- fragment -->
595
643
  </div>
596
644
  </div>
@@ -620,15 +668,74 @@ Functions</h2></td></tr>
620
668
 
621
669
  <p>Get the definition of a function across multiple modules. </p>
622
670
 
623
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00058">58</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
624
- <div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div>
625
- <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (fun == <span class="keyword">nullptr</span>)</div>
626
- <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
627
- <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; LLVMModuleSet* llvmModuleset = LLVMModuleSet::getLLVMModuleSet();</div>
628
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration() &amp;&amp; llvmModuleset-&gt;hasDefinition(fun))</div>
629
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; fun = LLVMModuleSet::getLLVMModuleSet()-&gt;getDefinition(fun);</div>
630
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> fun;</div>
631
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div>
671
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00057">57</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
672
+ <div class="fragment"><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div>
673
+ <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span> (fun == <span class="keyword">nullptr</span>)</div>
674
+ <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
675
+ <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; LLVMModuleSet* llvmModuleset = LLVMModuleSet::getLLVMModuleSet();</div>
676
+ <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration() &amp;&amp; llvmModuleset-&gt;hasDefinition(fun))</div>
677
+ <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; fun = LLVMModuleSet::getLLVMModuleSet()-&gt;getDefinition(fun);</div>
678
+ <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> fun;</div>
679
+ <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;}</div>
680
+ </div><!-- fragment -->
681
+ </div>
682
+ </div>
683
+ <a id="a8cd4d6410017b9e5f47f2f88450b78d8"></a>
684
+ <h2 class="memtitle"><span class="permalink"><a href="#a8cd4d6410017b9e5f47f2f88450b78d8">&#9670;&nbsp;</a></span>getFunAnnotations()</h2>
685
+
686
+ <div class="memitem">
687
+ <div class="memproto">
688
+ <table class="memname">
689
+ <tr>
690
+ <td class="memname">std::vector&lt; <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> &gt; SVF::LLVMUtil::getFunAnnotations </td>
691
+ <td>(</td>
692
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *&#160;</td>
693
+ <td class="paramname"><em>fun</em></td><td>)</td>
694
+ <td></td>
695
+ </tr>
696
+ </table>
697
+ </div><div class="memdoc">
698
+
699
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00446">446</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
700
+ <div class="fragment"><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;{</div>
701
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; std::vector&lt;std::string&gt; annotations;</div>
702
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="comment">// Get annotation variable</span></div>
703
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *glob = fun-&gt;getParent()-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
704
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
705
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">return</span> annotations;</div>
706
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; </div>
707
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
708
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
709
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">return</span> annotations;</div>
710
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; </div>
711
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
712
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; {</div>
713
+ <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
714
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
715
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">continue</span>;</div>
716
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; </div>
717
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0));</div>
718
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">if</span> (expr == <span class="keyword">nullptr</span> || expr-&gt;getOpcode() != Instruction::BitCast || expr-&gt;getOperand(0) != fun)</div>
719
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">continue</span>;</div>
720
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; </div>
721
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *note = SVFUtil::cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(1));</div>
722
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span> (note-&gt;getOpcode() != Instruction::GetElementPtr)</div>
723
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">continue</span>;</div>
724
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; </div>
725
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *annotateStr = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(note-&gt;getOperand(0));</div>
726
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">if</span> (annotateStr == <span class="keyword">nullptr</span> || !annotateStr-&gt;hasInitializer())</div>
727
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">continue</span>;</div>
728
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; </div>
729
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a> *data = SVFUtil::dyn_cast&lt;ConstantDataSequential&gt;(annotateStr-&gt;getInitializer());</div>
730
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">if</span> (data-&gt;isString())</div>
731
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div>
732
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> annotation = data-&gt;getAsString().str();</div>
733
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span> (!annotation.empty())</div>
734
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; annotations.push_back(annotation);</div>
735
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div>
736
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div>
737
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">return</span> annotations;</div>
738
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;}</div>
632
739
  </div><!-- fragment -->
633
740
  </div>
634
741
  </div>
@@ -658,10 +765,10 @@ Functions</h2></td></tr>
658
765
 
659
766
  <p>Get the corresponding Function based on its name. </p>
660
767
 
661
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00377">377</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
662
- <div class="fragment"><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;{</div>
663
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
664
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;}</div>
768
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00390">390</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
769
+ <div class="fragment"><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;{</div>
770
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
771
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;}</div>
665
772
  </div><!-- fragment -->
666
773
  </div>
667
774
  </div>
@@ -681,16 +788,16 @@ Functions</h2></td></tr>
681
788
  </table>
682
789
  </div><div class="memdoc">
683
790
 
684
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01002">1002</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
685
- <div class="fragment"><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;{</div>
686
- <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName;</div>
687
- <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst-&gt;getMetadata(<span class="stringliteral">&quot;VCallFunName&quot;</span>))</div>
688
- <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; {</div>
689
- <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0).get());</div>
690
- <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; funName = mdstr-&gt;getString().str();</div>
691
- <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; }</div>
692
- <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">return</span> funName;</div>
693
- <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;}</div>
791
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01123">1123</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
792
+ <div class="fragment"><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;{</div>
793
+ <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName;</div>
794
+ <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst-&gt;getMetadata(<span class="stringliteral">&quot;VCallFunName&quot;</span>))</div>
795
+ <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; {</div>
796
+ <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0).get());</div>
797
+ <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; funName = mdstr-&gt;getString().str();</div>
798
+ <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; }</div>
799
+ <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="keywordflow">return</span> funName;</div>
800
+ <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;}</div>
694
801
  </div><!-- fragment -->
695
802
  </div>
696
803
  </div>
@@ -783,15 +890,15 @@ Functions</h2></td></tr>
783
890
 
784
891
  <p>find the unique defined global across multiple modules </p>
785
892
 
786
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00390">390</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
787
- <div class="fragment"><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;{</div>
788
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
789
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div>
790
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()-&gt;hasGlobalRep(gvar))</div>
791
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; val = LLVMModuleSet::getLLVMModuleSet()-&gt;getGlobalRep(gvar);</div>
792
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div>
793
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">return</span> val;</div>
794
- <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;}</div>
893
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00403">403</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
894
+ <div class="fragment"><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;{</div>
895
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
896
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; {</div>
897
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()-&gt;hasGlobalRep(gvar))</div>
898
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; val = LLVMModuleSet::getLLVMModuleSet()-&gt;getGlobalRep(gvar);</div>
899
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
900
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> val;</div>
901
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;}</div>
795
902
  </div><!-- fragment -->
796
903
  </div>
797
904
  </div>
@@ -821,11 +928,11 @@ Functions</h2></td></tr>
821
928
 
822
929
  <p>Return LLVM callsite given a value. </p>
823
930
 
824
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00069">69</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
825
- <div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div>
826
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; assert(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#aeaa116fd9718c8b31f30d3fe62bb6403">isCallSite</a>(value) &amp;&amp; <span class="stringliteral">&quot;not a callsite?&quot;</span>);</div>
827
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CallBase&gt;(value);</div>
828
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div>
931
+ <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>
932
+ <div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div>
933
+ <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; assert(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#aeaa116fd9718c8b31f30d3fe62bb6403">isCallSite</a>(value) &amp;&amp; <span class="stringliteral">&quot;not a callsite?&quot;</span>);</div>
934
+ <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CallBase&gt;(value);</div>
935
+ <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;}</div>
829
936
  </div><!-- fragment -->
830
937
  </div>
831
938
  </div>
@@ -855,10 +962,10 @@ Functions</h2></td></tr>
855
962
 
856
963
  <p>Return LLVM function if this value is. </p>
857
964
 
858
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00083">83</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
859
- <div class="fragment"><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;{</div>
860
- <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> SVFUtil::dyn_cast&lt;Function&gt;(val-&gt;stripPointerCasts());</div>
861
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div>
965
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00082">82</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
966
+ <div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;{</div>
967
+ <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> SVFUtil::dyn_cast&lt;Function&gt;(val-&gt;stripPointerCasts());</div>
968
+ <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div>
862
969
  </div><!-- fragment -->
863
970
  </div>
864
971
  </div>
@@ -890,30 +997,30 @@ Functions</h2></td></tr>
890
997
 
891
998
  <p>Get the next instructions following control flow. </p>
892
999
 
893
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00592">592</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
894
- <div class="fragment"><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;{</div>
895
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
896
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div>
897
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
898
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
899
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
900
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">else</span></div>
901
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; instList.push_back(nextInst);</div>
902
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div>
903
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">else</span></div>
904
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {</div>
905
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
906
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
907
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</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>
908
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; {</div>
909
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
910
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
911
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
912
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">else</span></div>
913
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; instList.push_back(nextInst);</div>
914
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div>
915
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div>
916
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;}</div>
1000
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00713">713</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1001
+ <div class="fragment"><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;{</div>
1002
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
1003
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {</div>
1004
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
1005
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1006
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1007
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">else</span></div>
1008
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; instList.push_back(nextInst);</div>
1009
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div>
1010
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">else</span></div>
1011
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; {</div>
1012
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
1013
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1014
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</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>
1015
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {</div>
1016
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
1017
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1018
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1019
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">else</span></div>
1020
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; instList.push_back(nextInst);</div>
1021
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; }</div>
1022
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div>
1023
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;}</div>
917
1024
  </div><!-- fragment -->
918
1025
  </div>
919
1026
  </div>
@@ -1002,30 +1109,30 @@ Functions</h2></td></tr>
1002
1109
 
1003
1110
  <p>Get the previous instructions following control flow. </p>
1004
1111
 
1005
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00619">619</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1006
- <div class="fragment"><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;{</div>
1007
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
1008
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; {</div>
1009
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
1010
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1011
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1012
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">else</span></div>
1013
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; instList.push_back(prevInst);</div>
1014
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div>
1015
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">else</span></div>
1016
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; {</div>
1017
- <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
1018
- <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1019
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
1020
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; {</div>
1021
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
1022
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1023
- <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1024
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">else</span></div>
1025
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; instList.push_back(prevInst);</div>
1026
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; }</div>
1027
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div>
1028
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;}</div>
1112
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00740">740</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1113
+ <div class="fragment"><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;{</div>
1114
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
1115
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; {</div>
1116
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
1117
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1118
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1119
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">else</span></div>
1120
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; instList.push_back(prevInst);</div>
1121
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; }</div>
1122
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">else</span></div>
1123
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; {</div>
1124
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
1125
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1126
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
1127
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; {</div>
1128
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
1129
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1130
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1131
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">else</span></div>
1132
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; instList.push_back(prevInst);</div>
1133
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; }</div>
1134
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; }</div>
1135
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;}</div>
1029
1136
  </div><!-- fragment -->
1030
1137
  </div>
1031
1138
  </div>
@@ -1113,18 +1220,18 @@ Functions</h2></td></tr>
1113
1220
 
1114
1221
  <p>Get program entry function from module. </p>
1115
1222
 
1116
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00089">89</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1117
- <div class="fragment"><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;{</div>
1118
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; M : LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMModules())</div>
1119
- <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div>
1120
- <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; fun : M)</div>
1121
- <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div>
1122
- <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span> (fun.getName() == funName)</div>
1123
- <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> &amp;fun;</div>
1124
- <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div>
1125
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div>
1126
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
1127
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div>
1223
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00088">88</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1224
+ <div class="fragment"><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;{</div>
1225
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; M : LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMModules())</div>
1226
+ <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div>
1227
+ <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; fun : M)</div>
1228
+ <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div>
1229
+ <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (fun.getName() == funName)</div>
1230
+ <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> &amp;fun;</div>
1231
+ <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
1232
+ <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div>
1233
+ <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
1234
+ <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;}</div>
1128
1235
  </div><!-- fragment -->
1129
1236
  </div>
1130
1237
  </div>
@@ -1152,15 +1259,15 @@ Functions</h2></td></tr>
1152
1259
  </table>
1153
1260
  </div><div class="memdoc">
1154
1261
 
1155
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00120">120</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1156
- <div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;{</div>
1157
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &lt; 14)</span></div>
1158
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> pty-&gt;getElementType();</div>
1159
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor">#else</span></div>
1160
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; assert(!pty-&gt;isOpaque() &amp;&amp; <span class="stringliteral">&quot;Opaque Pointer is used, please recompile the source adding &#39;-Xclang -no-opaque-pointers&#39;&quot;</span>);</div>
1161
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> pty-&gt;getNonOpaquePointerElementType();</div>
1162
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor">#endif</span></div>
1163
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;}</div>
1262
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00119">119</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1263
+ <div class="fragment"><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;{</div>
1264
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &lt; 14)</span></div>
1265
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> pty-&gt;getElementType();</div>
1266
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="preprocessor">#else</span></div>
1267
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; assert(!pty-&gt;isOpaque() &amp;&amp; <span class="stringliteral">&quot;Opaque Pointer is used, please recompile the source adding &#39;-Xclang -no-opaque-pointers&#39;&quot;</span>);</div>
1268
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> pty-&gt;getNonOpaquePointerElementType();</div>
1269
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="preprocessor">#endif</span></div>
1270
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;}</div>
1164
1271
  </div><!-- fragment -->
1165
1272
  </div>
1166
1273
  </div>
@@ -1190,29 +1297,29 @@ Functions</h2></td></tr>
1190
1297
 
1191
1298
  <p>Get the reference type of heap/static object from an allocation site. </p>
1192
1299
 
1193
- <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>
1194
- <div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;{</div>
1195
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refType = <span class="keyword">nullptr</span>;</div>
1196
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">const</span> SVFInstruction* svfcall = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(cs);</div>
1197
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; CallSite svfcs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(svfcall);</div>
1198
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// Case 1: heap object held by *argument, we should get its element type.</span></div>
1199
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVFUtil::isHeapAllocExtCallViaArg</a>(svfcs))</div>
1200
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div>
1201
- <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordtype">int</span> argPos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVFUtil::getHeapAllocHoldingArgPosition</a>(svfcs);</div>
1202
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* arg = cs-&gt;getArgOperand(argPos);</div>
1203
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</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>
1204
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; refType = SVFUtil::dyn_cast&lt;PointerType&gt;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(argType));</div>
1205
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
1206
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// Case 2: heap/static object held by return value.</span></div>
1207
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">else</span></div>
1208
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div>
1209
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; assert((<a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVFUtil::isStaticExtCall</a>(svfcs) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfcs))</div>
1210
- <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; &amp;&amp; <span class="stringliteral">&quot;Must be heap alloc via ret, or static allocation site&quot;</span>);</div>
1211
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; refType = SVFUtil::dyn_cast&lt;PointerType&gt;(cs-&gt;getType());</div>
1212
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
1213
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; assert(refType &amp;&amp; <span class="stringliteral">&quot;Allocated object must be held by a pointer-typed value.&quot;</span>);</div>
1214
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> refType;</div>
1215
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;}</div>
1300
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00131">131</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1301
+ <div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div>
1302
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refType = <span class="keyword">nullptr</span>;</div>
1303
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">const</span> SVFInstruction* svfcall = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(cs);</div>
1304
+ <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; CallSite svfcs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(svfcall);</div>
1305
+ <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// Case 1: heap object held by *argument, we should get its element type.</span></div>
1306
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVFUtil::isHeapAllocExtCallViaArg</a>(svfcs))</div>
1307
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div>
1308
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">int</span> argPos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVFUtil::getHeapAllocHoldingArgPosition</a>(svfcs);</div>
1309
+ <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* arg = cs-&gt;getArgOperand(argPos);</div>
1310
+ <div class="line"><a name="l00141"></a><span class="lineno"> 141</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>
1311
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; refType = SVFUtil::dyn_cast&lt;PointerType&gt;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(argType));</div>
1312
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
1313
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">// Case 2: heap/static object held by return value.</span></div>
1314
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">else</span></div>
1315
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div>
1316
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; assert((<a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVFUtil::isStaticExtCall</a>(svfcs) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfcs))</div>
1317
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; &amp;&amp; <span class="stringliteral">&quot;Must be heap alloc via ret, or static allocation site&quot;</span>);</div>
1318
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; refType = SVFUtil::dyn_cast&lt;PointerType&gt;(cs-&gt;getType());</div>
1319
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
1320
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; assert(refType &amp;&amp; <span class="stringliteral">&quot;Allocated object must be held by a pointer-typed value.&quot;</span>);</div>
1321
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> refType;</div>
1322
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div>
1216
1323
  </div><!-- fragment -->
1217
1324
  </div>
1218
1325
  </div>
@@ -1240,11 +1347,11 @@ Functions</h2></td></tr>
1240
1347
  </table>
1241
1348
  </div><div class="memdoc">
1242
1349
 
1243
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00156">156</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1244
- <div class="fragment"><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;{</div>
1245
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">getLLVMCallSite</a>(inst);</div>
1246
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa81614cdb6a2a912638d5dc980480af7">getRefTypeOfHeapAllocOrStatic</a>(cs);</div>
1247
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;}</div>
1350
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00155">155</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1351
+ <div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;{</div>
1352
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">getLLVMCallSite</a>(inst);</div>
1353
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa81614cdb6a2a912638d5dc980480af7">getRefTypeOfHeapAllocOrStatic</a>(cs);</div>
1354
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;}</div>
1248
1355
  </div><!-- fragment -->
1249
1356
  </div>
1250
1357
  </div>
@@ -1265,105 +1372,105 @@ Functions</h2></td></tr>
1265
1372
  </div><div class="memdoc">
1266
1373
  <p>Get the meta data (line number and file name) info of a LLVM value </p>
1267
1374
 
1268
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00471">471</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1269
- <div class="fragment"><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;{</div>
1270
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">&quot;{ empty val }&quot;</span>;</div>
1271
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; </div>
1272
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1273
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; std::stringstream rawstr(str);</div>
1274
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
1275
- <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; </div>
1276
- <div class="line"><a name="l00479"></a><span class="lineno"> 479</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;(val))</div>
1277
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; {</div>
1278
- <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div>
1279
- <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div>
1280
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">&gt;</span>(inst)))</div>
1281
- <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div>
1282
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</div>
1283
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div>
1284
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div>
1285
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DIVar-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DIVar-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1286
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">break</span>;</div>
1287
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div>
1288
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div>
1289
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; }</div>
1290
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst-&gt;getMetadata(<span class="stringliteral">&quot;dbg&quot;</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
1291
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div>
1292
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
1293
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
1294
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
1295
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div>
1296
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
1297
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
1298
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div>
1299
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
1300
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
1301
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div>
1302
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; Line = inlineLoc-&gt;getLine();</div>
1303
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
1304
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
1305
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div>
1306
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; }</div>
1307
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; Line &lt;&lt; <span class="stringliteral">&quot;, \&quot;cl\&quot;: &quot;</span> &lt;&lt; Column &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; File &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1308
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</div>
1309
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div>
1310
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</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>* argument = SVFUtil::dyn_cast&lt;Argument&gt;(val))</div>
1311
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div>
1312
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
1313
- <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div>
1314
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div>
1315
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;nd&quot;</span>;</div>
1316
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 3)</div>
1317
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;rd&quot;</span>;</div>
1318
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">else</span></div>
1319
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;th&quot;</span>;</div>
1320
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; arg &quot;</span> &lt;&lt; argument-&gt;getParent()-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot; &quot;</span></div>
1321
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument-&gt;getParent());</div>
1322
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div>
1323
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
1324
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div>
1325
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
1326
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar-&gt;getParent()-&gt;getNamedMetadata(<span class="stringliteral">&quot;llvm.dbg.cu&quot;</span>);</div>
1327
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
1328
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {</div>
1329
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div>
1330
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div>
1331
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div>
1332
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</div>
1333
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div>
1334
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
1335
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; </div>
1336
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div>
1337
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div>
1338
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DGV-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DGV-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1339
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div>
1340
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; </div>
1341
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div>
1342
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div>
1343
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
1344
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div>
1345
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(val))</div>
1346
- <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; {</div>
1347
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
1348
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; }</div>
1349
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(val))</div>
1350
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {</div>
1351
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;basic block\&quot;: &quot;</span> &lt;&lt; bb-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;, \&quot;location\&quot;: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb-&gt;getFirstNonPHI());</div>
1352
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div>
1353
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
1354
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; {</div>
1355
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div>
1356
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div>
1357
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">else</span></div>
1358
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; {</div>
1359
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;N/A&quot;</span>;</div>
1360
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div>
1361
- <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
1362
- <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; </div>
1363
- <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div>
1364
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
1365
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1366
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;}</div>
1375
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00592">592</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1376
+ <div class="fragment"><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;{</div>
1377
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">&quot;{ empty val }&quot;</span>;</div>
1378
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; </div>
1379
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1380
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; std::stringstream rawstr(str);</div>
1381
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
1382
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; </div>
1383
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</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;(val))</div>
1384
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; {</div>
1385
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div>
1386
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {</div>
1387
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">&gt;</span>(inst)))</div>
1388
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div>
1389
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</div>
1390
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; {</div>
1391
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div>
1392
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DIVar-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DIVar-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1393
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">break</span>;</div>
1394
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div>
1395
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; }</div>
1396
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div>
1397
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst-&gt;getMetadata(<span class="stringliteral">&quot;dbg&quot;</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
1398
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div>
1399
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
1400
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
1401
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
1402
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div>
1403
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
1404
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
1405
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; {</div>
1406
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
1407
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
1408
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; {</div>
1409
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; Line = inlineLoc-&gt;getLine();</div>
1410
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
1411
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
1412
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }</div>
1413
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; }</div>
1414
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; Line &lt;&lt; <span class="stringliteral">&quot;, \&quot;cl\&quot;: &quot;</span> &lt;&lt; Column &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; File &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1415
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; }</div>
1416
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; }</div>
1417
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</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>* argument = SVFUtil::dyn_cast&lt;Argument&gt;(val))</div>
1418
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; {</div>
1419
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
1420
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div>
1421
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div>
1422
+ <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;nd&quot;</span>;</div>
1423
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 3)</div>
1424
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;rd&quot;</span>;</div>
1425
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">else</span></div>
1426
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;th&quot;</span>;</div>
1427
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; arg &quot;</span> &lt;&lt; argument-&gt;getParent()-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot; &quot;</span></div>
1428
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument-&gt;getParent());</div>
1429
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</div>
1430
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
1431
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div>
1432
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
1433
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar-&gt;getParent()-&gt;getNamedMetadata(<span class="stringliteral">&quot;llvm.dbg.cu&quot;</span>);</div>
1434
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
1435
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div>
1436
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div>
1437
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div>
1438
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div>
1439
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</div>
1440
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; {</div>
1441
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
1442
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; </div>
1443
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div>
1444
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div>
1445
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DGV-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DGV-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1446
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div>
1447
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; </div>
1448
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div>
1449
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div>
1450
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div>
1451
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; }</div>
1452
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(val))</div>
1453
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; {</div>
1454
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
1455
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div>
1456
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(val))</div>
1457
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; {</div>
1458
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;basic block\&quot;: &quot;</span> &lt;&lt; bb-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;, \&quot;location\&quot;: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb-&gt;getFirstNonPHI());</div>
1459
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div>
1460
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
1461
+ <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; {</div>
1462
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div>
1463
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div>
1464
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">else</span></div>
1465
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; {</div>
1466
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;N/A&quot;</span>;</div>
1467
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div>
1468
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
1469
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; </div>
1470
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div>
1471
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
1472
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1473
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;}</div>
1367
1474
  </div><!-- fragment -->
1368
1475
  </div>
1369
1476
  </div>
@@ -1384,21 +1491,21 @@ Functions</h2></td></tr>
1384
1491
  </div><div class="memdoc">
1385
1492
  <p>Get source code line number of a function according to debug info </p>
1386
1493
 
1387
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00575">575</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1388
- <div class="fragment"><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;{</div>
1389
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1390
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; std::stringstream rawstr(str);</div>
1391
- <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="comment">/*</span></div>
1392
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
1393
- <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="comment"> * looks like the relevant</span></div>
1394
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="comment"> */</span></div>
1395
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getSubprogram())</div>
1396
- <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; {</div>
1397
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
1398
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; SP-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;file\&quot;: \&quot;&quot;</span> &lt;&lt; SP-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1399
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div>
1400
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1401
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;}</div>
1494
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00696">696</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1495
+ <div class="fragment"><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;{</div>
1496
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1497
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; std::stringstream rawstr(str);</div>
1498
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="comment">/*</span></div>
1499
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
1500
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="comment"> * looks like the relevant</span></div>
1501
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="comment"> */</span></div>
1502
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getSubprogram())</div>
1503
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; {</div>
1504
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
1505
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; SP-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;file\&quot;: \&quot;&quot;</span> &lt;&lt; SP-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1506
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div>
1507
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1508
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;}</div>
1402
1509
  </div><!-- fragment -->
1403
1510
  </div>
1404
1511
  </div>
@@ -1418,27 +1525,27 @@ Functions</h2></td></tr>
1418
1525
  </table>
1419
1526
  </div><div class="memdoc">
1420
1527
 
1421
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00771">771</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1422
- <div class="fragment"><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;{</div>
1423
- <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* ret = <span class="keyword">nullptr</span>;</div>
1424
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; </div>
1425
- <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; bb : *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
1426
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; {</div>
1427
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; inst : bb)</div>
1428
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; {</div>
1429
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;inst))</div>
1430
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div>
1431
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="comment">// assert(cs.getCalledFunction() &amp;&amp;</span></div>
1432
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="comment">// &quot;Indirect call detected in thunk func&quot;);</span></div>
1433
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="comment">// assert(ret == nullptr &amp;&amp; &quot;multiple callsites in thunk func&quot;);</span></div>
1434
- <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; </div>
1435
- <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; ret = callbase-&gt;getCalledFunction();</div>
1436
- <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; }</div>
1437
- <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; }</div>
1438
- <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; }</div>
1439
- <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; </div>
1440
- <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">return</span> ret;</div>
1441
- <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;}</div>
1528
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00892">892</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1529
+ <div class="fragment"><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;{</div>
1530
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* ret = <span class="keyword">nullptr</span>;</div>
1531
+ <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; </div>
1532
+ <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; bb : *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
1533
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; {</div>
1534
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; inst : bb)</div>
1535
+ <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; {</div>
1536
+ <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;inst))</div>
1537
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; {</div>
1538
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="comment">// assert(cs.getCalledFunction() &amp;&amp;</span></div>
1539
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="comment">// &quot;Indirect call detected in thunk func&quot;);</span></div>
1540
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="comment">// assert(ret == nullptr &amp;&amp; &quot;multiple callsites in thunk func&quot;);</span></div>
1541
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; </div>
1542
+ <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; ret = callbase-&gt;getCalledFunction();</div>
1543
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; }</div>
1544
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; }</div>
1545
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; }</div>
1546
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; </div>
1547
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">return</span> ret;</div>
1548
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160;}</div>
1442
1549
  </div><!-- fragment -->
1443
1550
  </div>
1444
1551
  </div>
@@ -1518,15 +1625,15 @@ Functions</h2></td></tr>
1518
1625
  </div><div class="memdoc">
1519
1626
  <p>if this struct type does not have any element, i.e., opaque</p>
1520
1627
 
1521
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00457">457</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1522
- <div class="fragment"><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;{</div>
1523
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; </div>
1524
- <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getMainLLVMModule())-&gt;getStructLayout( <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *<span class="keyword">&gt;</span>(sty) );</div>
1525
- <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
1526
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> 0;</div>
1527
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">else</span></div>
1528
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
1529
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;}</div>
1628
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00578">578</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1629
+ <div class="fragment"><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;{</div>
1630
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; </div>
1631
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getMainLLVMModule())-&gt;getStructLayout( <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *<span class="keyword">&gt;</span>(sty) );</div>
1632
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
1633
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">return</span> 0;</div>
1634
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">else</span></div>
1635
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
1636
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;}</div>
1530
1637
  </div><!-- fragment -->
1531
1638
  </div>
1532
1639
  </div>
@@ -1548,15 +1655,15 @@ Functions</h2></td></tr>
1548
1655
 
1549
1656
  <p>Helper method to get the size of the type from target data layout. </p>
1550
1657
 
1551
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00447">447</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1552
- <div class="fragment"><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;{</div>
1553
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; </div>
1554
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
1555
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;isSized())</div>
1556
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getMainLLVMModule())-&gt;getTypeStoreSize(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*<span class="keyword">&gt;</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div>
1557
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">else</span></div>
1558
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> 0;</div>
1559
- <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;}</div>
1658
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00568">568</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1659
+ <div class="fragment"><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;{</div>
1660
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; </div>
1661
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
1662
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;isSized())</div>
1663
+ <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getMainLLVMModule())-&gt;getTypeStoreSize(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*<span class="keyword">&gt;</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div>
1664
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">else</span></div>
1665
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">return</span> 0;</div>
1666
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;}</div>
1560
1667
  </div><!-- fragment -->
1561
1668
  </div>
1562
1669
  </div>
@@ -1611,28 +1718,28 @@ Functions</h2></td></tr>
1611
1718
  </table>
1612
1719
  </div><div class="memdoc">
1613
1720
 
1614
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01013">1013</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1615
- <div class="fragment"><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;{</div>
1616
- <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst =</div>
1617
- <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
1618
- <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; assert(vfuncloadinst != <span class="keyword">nullptr</span>);</div>
1619
- <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
1620
- <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
1621
- <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
1622
- <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; User::const_op_iterator oi = vfuncptrgepinst-&gt;idx_begin();</div>
1623
- <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* idx = SVFUtil::dyn_cast&lt;ConstantInt&gt;(oi-&gt;get());</div>
1624
- <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx_value;</div>
1625
- <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <span class="keywordflow">if</span> (idx == <span class="keyword">nullptr</span>)</div>
1626
- <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; {</div>
1627
- <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;vcall gep idx not constantint\n&quot;</span>;</div>
1628
- <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; idx_value = 0;</div>
1629
- <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; }</div>
1630
- <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <span class="keywordflow">else</span></div>
1631
- <div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; {</div>
1632
- <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; idx_value = (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)idx-&gt;getSExtValue();</div>
1633
- <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; }</div>
1634
- <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">return</span> idx_value;</div>
1635
- <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;}</div>
1721
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01134">1134</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1722
+ <div class="fragment"><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;{</div>
1723
+ <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst =</div>
1724
+ <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
1725
+ <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; assert(vfuncloadinst != <span class="keyword">nullptr</span>);</div>
1726
+ <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
1727
+ <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
1728
+ <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
1729
+ <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; User::const_op_iterator oi = vfuncptrgepinst-&gt;idx_begin();</div>
1730
+ <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* idx = SVFUtil::dyn_cast&lt;ConstantInt&gt;(oi-&gt;get());</div>
1731
+ <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx_value;</div>
1732
+ <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="keywordflow">if</span> (idx == <span class="keyword">nullptr</span>)</div>
1733
+ <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; {</div>
1734
+ <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;vcall gep idx not constantint\n&quot;</span>;</div>
1735
+ <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; idx_value = 0;</div>
1736
+ <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; }</div>
1737
+ <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keywordflow">else</span></div>
1738
+ <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; {</div>
1739
+ <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; idx_value = (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)idx-&gt;getSExtValue();</div>
1740
+ <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; }</div>
1741
+ <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keywordflow">return</span> idx_value;</div>
1742
+ <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;}</div>
1636
1743
  </div><!-- fragment -->
1637
1744
  </div>
1638
1745
  </div>
@@ -1652,17 +1759,17 @@ Functions</h2></td></tr>
1652
1759
  </table>
1653
1760
  </div><div class="memdoc">
1654
1761
 
1655
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00793">793</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1656
- <div class="fragment"><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;{</div>
1657
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">if</span> (cs-&gt;paramHasAttr(0, llvm::Attribute::StructRet))</div>
1658
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; {</div>
1659
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(1);</div>
1660
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; }</div>
1661
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">else</span></div>
1662
- <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; {</div>
1663
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(0);</div>
1664
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</div>
1665
- <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;}</div>
1762
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00914">914</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1763
+ <div class="fragment"><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;{</div>
1764
+ <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">if</span> (cs-&gt;paramHasAttr(0, llvm::Attribute::StructRet))</div>
1765
+ <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; {</div>
1766
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(1);</div>
1767
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; }</div>
1768
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keywordflow">else</span></div>
1769
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; {</div>
1770
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(0);</div>
1771
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; }</div>
1772
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;}</div>
1666
1773
  </div><!-- fragment -->
1667
1774
  </div>
1668
1775
  </div>
@@ -1682,18 +1789,18 @@ Functions</h2></td></tr>
1682
1789
  </table>
1683
1790
  </div><div class="memdoc">
1684
1791
 
1685
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00922">922</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1686
- <div class="fragment"><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;{</div>
1687
- <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* loadInst =</div>
1688
- <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
1689
- <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; assert(loadInst != <span class="keyword">nullptr</span>);</div>
1690
- <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = loadInst-&gt;getPointerOperand();</div>
1691
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gepInst =</div>
1692
- <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
1693
- <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; assert(gepInst != <span class="keyword">nullptr</span>);</div>
1694
- <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = gepInst-&gt;getPointerOperand();</div>
1695
- <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">return</span> vtbl;</div>
1696
- <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160;}</div>
1792
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01043">1043</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1793
+ <div class="fragment"><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;{</div>
1794
+ <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* loadInst =</div>
1795
+ <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
1796
+ <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; assert(loadInst != <span class="keyword">nullptr</span>);</div>
1797
+ <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = loadInst-&gt;getPointerOperand();</div>
1798
+ <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gepInst =</div>
1799
+ <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
1800
+ <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; assert(gepInst != <span class="keyword">nullptr</span>);</div>
1801
+ <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = gepInst-&gt;getPointerOperand();</div>
1802
+ <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">return</span> vtbl;</div>
1803
+ <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;}</div>
1697
1804
  </div><!-- fragment -->
1698
1805
  </div>
1699
1806
  </div>
@@ -1713,18 +1820,18 @@ Functions</h2></td></tr>
1713
1820
  </table>
1714
1821
  </div><div class="memdoc">
1715
1822
 
1716
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00681">681</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1717
- <div class="fragment"><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;{</div>
1718
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *vtblStruct = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(vtbl-&gt;getOperand(0));</div>
1719
- <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; assert(vtblStruct &amp;&amp; <span class="stringliteral">&quot;Initializer of a vtable not a struct?&quot;</span>);</div>
1720
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; </div>
1721
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">if</span> (vtblStruct-&gt;getNumOperands() == 2 &amp;&amp;</div>
1722
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; SVFUtil::isa&lt;ConstantStruct&gt;(vtblStruct-&gt;getOperand(0)) &amp;&amp;</div>
1723
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; vtblStruct-&gt;getOperand(1)-&gt;getType()-&gt;isArrayTy())</div>
1724
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;ConstantStruct&gt;(vtblStruct-&gt;getOperand(0));</div>
1725
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; </div>
1726
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">return</span> vtblStruct;</div>
1727
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;}</div>
1823
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00802">802</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1824
+ <div class="fragment"><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;{</div>
1825
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *vtblStruct = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(vtbl-&gt;getOperand(0));</div>
1826
+ <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; assert(vtblStruct &amp;&amp; <span class="stringliteral">&quot;Initializer of a vtable not a struct?&quot;</span>);</div>
1827
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; </div>
1828
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">if</span> (vtblStruct-&gt;getNumOperands() == 2 &amp;&amp;</div>
1829
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; SVFUtil::isa&lt;ConstantStruct&gt;(vtblStruct-&gt;getOperand(0)) &amp;&amp;</div>
1830
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; vtblStruct-&gt;getOperand(1)-&gt;getType()-&gt;isArrayTy())</div>
1831
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;ConstantStruct&gt;(vtblStruct-&gt;getOperand(0));</div>
1832
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; </div>
1833
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">return</span> vtblStruct;</div>
1834
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;}</div>
1728
1835
  </div><!-- fragment -->
1729
1836
  </div>
1730
1837
  </div>
@@ -1754,11 +1861,11 @@ Functions</h2></td></tr>
1754
1861
 
1755
1862
  <p>Return true if the argument in a function does not have a caller. </p>
1756
1863
 
1757
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00202">202</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1758
- <div class="fragment"><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;{</div>
1759
- <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val)</div>
1760
- <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; &amp;&amp; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a17cce1a11e1bfc342a9e3e79fe35deef">isNoCallerFunction</a>(SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div>
1761
- <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;}</div>
1864
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00201">201</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1865
+ <div class="fragment"><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;{</div>
1866
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val)</div>
1867
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; &amp;&amp; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a17cce1a11e1bfc342a9e3e79fe35deef">isNoCallerFunction</a>(SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div>
1868
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;}</div>
1762
1869
  </div><!-- fragment -->
1763
1870
  </div>
1764
1871
  </div>
@@ -1786,16 +1893,16 @@ Functions</h2></td></tr>
1786
1893
  </table>
1787
1894
  </div><div class="memdoc">
1788
1895
 
1789
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00307">307</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1790
- <div class="fragment"><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;{</div>
1791
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
1792
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div>
1793
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> ((constExpr-&gt;getOpcode() &gt;= Instruction::BinaryOpsBegin) &amp;&amp;</div>
1794
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; (constExpr-&gt;getOpcode() &lt;= Instruction::BinaryOpsEnd))</div>
1795
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
1796
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div>
1797
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
1798
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;}</div>
1896
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00306">306</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1897
+ <div class="fragment"><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;{</div>
1898
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
1899
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div>
1900
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> ((constExpr-&gt;getOpcode() &gt;= Instruction::BinaryOpsBegin) &amp;&amp;</div>
1901
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; (constExpr-&gt;getOpcode() &lt;= Instruction::BinaryOpsEnd))</div>
1902
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
1903
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div>
1904
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
1905
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;}</div>
1799
1906
  </div><!-- fragment -->
1800
1907
  </div>
1801
1908
  </div>
@@ -1825,10 +1932,10 @@ Functions</h2></td></tr>
1825
1932
 
1826
1933
  <p>Check whether this value is a black hole. </p>
1827
1934
 
1828
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00109">109</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1829
- <div class="fragment"><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;{</div>
1830
- <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;UndefValue&gt;(val);</div>
1831
- <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;}</div>
1935
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00108">108</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1936
+ <div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div>
1937
+ <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;UndefValue&gt;(val);</div>
1938
+ <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div>
1832
1939
  </div><!-- fragment -->
1833
1940
  </div>
1834
1941
  </div>
@@ -1858,10 +1965,10 @@ Functions</h2></td></tr>
1858
1965
 
1859
1966
  <p>Whether an instruction is a call or invoke instruction. </p>
1860
1967
 
1861
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00047">47</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1862
- <div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div>
1863
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;CallBase&gt;(inst);</div>
1864
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div>
1968
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00046">46</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1969
+ <div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div>
1970
+ <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;CallBase&gt;(inst);</div>
1971
+ <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div>
1865
1972
  </div><!-- fragment -->
1866
1973
  </div>
1867
1974
  </div>
@@ -1891,10 +1998,10 @@ Functions</h2></td></tr>
1891
1998
 
1892
1999
  <p>Whether an instruction is a call or invoke instruction. </p>
1893
2000
 
1894
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00052">52</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1895
- <div class="fragment"><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;{</div>
1896
- <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;CallBase&gt;(val);</div>
1897
- <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div>
2001
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00051">51</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2002
+ <div class="fragment"><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div>
2003
+ <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;CallBase&gt;(val);</div>
2004
+ <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div>
1898
2005
  </div><!-- fragment -->
1899
2006
  </div>
1900
2007
  </div>
@@ -1922,15 +2029,15 @@ Functions</h2></td></tr>
1922
2029
  </table>
1923
2030
  </div><div class="memdoc">
1924
2031
 
1925
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00262">262</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1926
- <div class="fragment"><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;{</div>
1927
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
1928
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div>
1929
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::BitCast)</div>
1930
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
1931
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div>
1932
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
1933
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;}</div>
2032
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00261">261</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2033
+ <div class="fragment"><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;{</div>
2034
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2035
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div>
2036
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::BitCast)</div>
2037
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2038
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div>
2039
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2040
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;}</div>
1934
2041
  </div><!-- fragment -->
1935
2042
  </div>
1936
2043
  </div>
@@ -1958,16 +2065,16 @@ Functions</h2></td></tr>
1958
2065
  </table>
1959
2066
  </div><div class="memdoc">
1960
2067
 
1961
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00296">296</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1962
- <div class="fragment"><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;{</div>
1963
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
1964
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div>
1965
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::ICmp ||</div>
1966
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; constExpr-&gt;getOpcode() == Instruction::FCmp)</div>
1967
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
1968
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div>
1969
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
1970
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;}</div>
2068
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00295">295</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2069
+ <div class="fragment"><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;{</div>
2070
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2071
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div>
2072
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::ICmp ||</div>
2073
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; constExpr-&gt;getOpcode() == Instruction::FCmp)</div>
2074
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2075
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; }</div>
2076
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2077
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;}</div>
1971
2078
  </div><!-- fragment -->
1972
2079
  </div>
1973
2080
  </div>
@@ -1989,10 +2096,10 @@ Functions</h2></td></tr>
1989
2096
 
1990
2097
  <p>Check whether this value points-to a constant object. </p>
1991
2098
 
1992
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00645">645</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1993
- <div class="fragment"><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;{</div>
1994
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(val));</div>
1995
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;}</div>
2099
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00766">766</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2100
+ <div class="fragment"><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;{</div>
2101
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(val));</div>
2102
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;}</div>
1996
2103
  </div><!-- fragment -->
1997
2104
  </div>
1998
2105
  </div>
@@ -2015,33 +2122,33 @@ Functions</h2></td></tr>
2015
2122
  <p>Check whether this value points-to a constant object. </p>
2016
2123
  <p>Check whether this value points-to a constant object </p>
2017
2124
 
2018
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00653">653</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2019
- <div class="fragment"><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;{</div>
2020
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</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>
2021
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; {</div>
2022
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">LLVMUtil::isValVtbl</a>(v))</div>
2023
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2024
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v-&gt;hasInitializer())</div>
2025
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {</div>
2026
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">return</span> !v-&gt;isExternalLinkage(v-&gt;getLinkage());</div>
2027
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; }</div>
2028
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">else</span></div>
2029
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
2030
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> *stInfo = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFType(v-&gt;getInitializer()-&gt;getType())-&gt;getTypeInfo();</div>
2031
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keyword">const</span> std::vector&lt;const SVFType*&gt; &amp;fields = stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>();</div>
2032
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">for</span> (std::vector&lt;const SVFType*&gt;::const_iterator it = fields.begin(), eit = fields.end(); it != eit; ++it)</div>
2033
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; {</div>
2034
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = *it;</div>
2035
- <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; assert(!SVFUtil::isa&lt;SVFFunctionType&gt;(elemTy) &amp;&amp; <span class="stringliteral">&quot;Initializer of a global is a function?&quot;</span>);</div>
2036
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(elemTy))</div>
2037
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2038
- <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div>
2039
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; </div>
2040
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">return</span> v-&gt;isConstant();</div>
2041
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div>
2042
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; }</div>
2043
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val);</div>
2044
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;}</div>
2125
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00774">774</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2126
+ <div class="fragment"><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;{</div>
2127
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</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>
2128
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; {</div>
2129
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">LLVMUtil::isValVtbl</a>(v))</div>
2130
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2131
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v-&gt;hasInitializer())</div>
2132
+ <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; {</div>
2133
+ <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">return</span> !v-&gt;isExternalLinkage(v-&gt;getLinkage());</div>
2134
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div>
2135
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">else</span></div>
2136
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; {</div>
2137
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> *stInfo = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFType(v-&gt;getInitializer()-&gt;getType())-&gt;getTypeInfo();</div>
2138
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keyword">const</span> std::vector&lt;const SVFType*&gt; &amp;fields = stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>();</div>
2139
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">for</span> (std::vector&lt;const SVFType*&gt;::const_iterator it = fields.begin(), eit = fields.end(); it != eit; ++it)</div>
2140
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; {</div>
2141
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = *it;</div>
2142
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; assert(!SVFUtil::isa&lt;SVFFunctionType&gt;(elemTy) &amp;&amp; <span class="stringliteral">&quot;Initializer of a global is a function?&quot;</span>);</div>
2143
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(elemTy))</div>
2144
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2145
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div>
2146
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; </div>
2147
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">return</span> v-&gt;isConstant();</div>
2148
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; }</div>
2149
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; }</div>
2150
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val);</div>
2151
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;}</div>
2045
2152
  </div><!-- fragment -->
2046
2153
  </div>
2047
2154
  </div>
@@ -2071,11 +2178,11 @@ Functions</h2></td></tr>
2071
2178
 
2072
2179
  <p>Return true if the value refers to constant data, e.g., i32 0. </p>
2073
2180
 
2074
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00383">383</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2075
- <div class="fragment"><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;{</div>
2076
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVFUtil::isa</a>&lt;<a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>, <a class="code" href="namespaceSVF.html#a7cbe1c6567039e72958fd70e423d3597">ConstantAggregate</a>,</div>
2077
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="namespaceSVF.html#a773900ea3c75022657aac1abf59fa51b">MetadataAsValue</a>, <a class="code" href="namespaceSVF.html#a956458a8554bf734db1194f320fd4b4c">BlockAddress</a>&gt;(val);</div>
2078
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;}</div>
2181
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00396">396</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2182
+ <div class="fragment"><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;{</div>
2183
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVFUtil::isa</a>&lt;<a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>, <a class="code" href="namespaceSVF.html#a7cbe1c6567039e72958fd70e423d3597">ConstantAggregate</a>,</div>
2184
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="namespaceSVF.html#a773900ea3c75022657aac1abf59fa51b">MetadataAsValue</a>, <a class="code" href="namespaceSVF.html#a956458a8554bf734db1194f320fd4b4c">BlockAddress</a>&gt;(val);</div>
2185
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;}</div>
2079
2186
  </div><!-- fragment -->
2080
2187
  </div>
2081
2188
  </div>
@@ -2096,35 +2203,35 @@ Functions</h2></td></tr>
2096
2203
  </div><div class="memdoc">
2097
2204
  <p>TODO: on mac os function name is an empty string after demangling</p>
2098
2205
 
2099
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00852">852</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2100
- <div class="fragment"><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;{</div>
2101
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
2102
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2103
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str();</div>
2104
- <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
2105
- <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; {</div>
2106
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2107
- <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; }</div>
2108
- <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
2109
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
2110
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; {</div>
2111
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2112
- <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; }</div>
2113
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
2114
- <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2115
- <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">&quot;::&quot;</span>);</div>
2116
- <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
2117
- <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; {</div>
2118
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2119
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; }</div>
2120
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">else</span></div>
2121
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; {</div>
2122
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
2123
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
2124
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div>
2125
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() &gt; 0 &amp;&amp;</div>
2126
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>) == 0;</div>
2127
- <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;}</div>
2206
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00973">973</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2207
+ <div class="fragment"><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;{</div>
2208
+ <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
2209
+ <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2210
+ <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str();</div>
2211
+ <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
2212
+ <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; {</div>
2213
+ <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2214
+ <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; }</div>
2215
+ <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
2216
+ <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
2217
+ <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; {</div>
2218
+ <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2219
+ <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; }</div>
2220
+ <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
2221
+ <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2222
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">&quot;::&quot;</span>);</div>
2223
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
2224
+ <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {</div>
2225
+ <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2226
+ <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; }</div>
2227
+ <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">else</span></div>
2228
+ <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; {</div>
2229
+ <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
2230
+ <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
2231
+ <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; }</div>
2232
+ <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() &gt; 0 &amp;&amp;</div>
2233
+ <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>) == 0;</div>
2234
+ <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;}</div>
2128
2235
  </div><!-- fragment -->
2129
2236
  </div>
2130
2237
  </div>
@@ -2144,11 +2251,11 @@ Functions</h2></td></tr>
2144
2251
  </table>
2145
2252
  </div><div class="memdoc">
2146
2253
 
2147
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00765">765</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2148
- <div class="fragment"><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;{</div>
2149
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str());</div>
2150
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div>
2151
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;}</div>
2254
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00886">886</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2255
+ <div class="fragment"><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;{</div>
2256
+ <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str());</div>
2257
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div>
2258
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;}</div>
2152
2259
  </div><!-- fragment -->
2153
2260
  </div>
2154
2261
  </div>
@@ -2168,37 +2275,37 @@ Functions</h2></td></tr>
2168
2275
  </table>
2169
2276
  </div><div class="memdoc">
2170
2277
 
2171
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00883">883</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2172
- <div class="fragment"><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;{</div>
2173
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
2174
- <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2175
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str();</div>
2176
- <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
2177
- <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; {</div>
2178
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2179
- <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; }</div>
2180
- <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
2181
- <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
2182
- <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; {</div>
2183
- <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2184
- <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; }</div>
2185
- <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
2186
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2187
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">&quot;::&quot;</span>);</div>
2188
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
2189
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; {</div>
2190
- <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2191
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; }</div>
2192
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">else</span></div>
2193
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; {</div>
2194
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
2195
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
2196
- <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; }</div>
2197
- <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">return</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() &gt; 0 &amp;&amp; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &gt; 0 &amp;&amp;</div>
2198
- <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() + 1 == dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &amp;&amp;</div>
2199
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.compare(0, 1, <span class="stringliteral">&quot;~&quot;</span>) == 0 &amp;&amp;</div>
2200
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.substr(1)) == 0);</div>
2201
- <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;}</div>
2278
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01004">1004</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2279
+ <div class="fragment"><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;{</div>
2280
+ <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
2281
+ <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2282
+ <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str();</div>
2283
+ <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
2284
+ <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; {</div>
2285
+ <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2286
+ <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; }</div>
2287
+ <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
2288
+ <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
2289
+ <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; {</div>
2290
+ <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2291
+ <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; }</div>
2292
+ <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
2293
+ <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2294
+ <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">&quot;::&quot;</span>);</div>
2295
+ <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
2296
+ <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; {</div>
2297
+ <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2298
+ <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; }</div>
2299
+ <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keywordflow">else</span></div>
2300
+ <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; {</div>
2301
+ <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
2302
+ <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
2303
+ <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; }</div>
2304
+ <div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keywordflow">return</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() &gt; 0 &amp;&amp; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &gt; 0 &amp;&amp;</div>
2305
+ <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() + 1 == dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &amp;&amp;</div>
2306
+ <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.compare(0, 1, <span class="stringliteral">&quot;~&quot;</span>) == 0 &amp;&amp;</div>
2307
+ <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.substr(1)) == 0);</div>
2308
+ <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;}</div>
2202
2309
  </div><!-- fragment -->
2203
2310
  </div>
2204
2311
  </div>
@@ -2228,15 +2335,15 @@ Functions</h2></td></tr>
2228
2335
 
2229
2336
  <p>Return corresponding constant expression, otherwise return nullptr. </p>
2230
2337
 
2231
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00232">232</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2232
- <div class="fragment"><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;{</div>
2233
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2234
- <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div>
2235
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::GetElementPtr)</div>
2236
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2237
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div>
2238
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2239
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div>
2338
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00231">231</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2339
+ <div class="fragment"><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;{</div>
2340
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2341
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div>
2342
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::GetElementPtr)</div>
2343
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2344
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div>
2345
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2346
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;}</div>
2240
2347
  </div><!-- fragment -->
2241
2348
  </div>
2242
2349
  </div>
@@ -2264,15 +2371,15 @@ Functions</h2></td></tr>
2264
2371
  </table>
2265
2372
  </div><div class="memdoc">
2266
2373
 
2267
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00242">242</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2268
- <div class="fragment"><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;{</div>
2269
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2270
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; {</div>
2271
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::IntToPtr)</div>
2272
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2273
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div>
2274
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2275
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div>
2374
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00241">241</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2375
+ <div class="fragment"><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;{</div>
2376
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2377
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div>
2378
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::IntToPtr)</div>
2379
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2380
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
2381
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2382
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;}</div>
2276
2383
  </div><!-- fragment -->
2277
2384
  </div>
2278
2385
  </div>
@@ -2390,29 +2497,29 @@ Functions</h2></td></tr>
2390
2497
  </table>
2391
2498
  </div><div class="memdoc">
2392
2499
 
2393
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00703">703</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2394
- <div class="fragment"><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;{</div>
2395
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* loadSrc = loadInst-&gt;getPointerOperand();</div>
2396
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* valTy = loadSrc-&gt;getType();</div>
2397
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = valTy;</div>
2398
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; 3; ++i)</div>
2399
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; {</div>
2400
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = SVFUtil::dyn_cast&lt;PointerType&gt;(elemTy))</div>
2401
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; elemTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrTy);</div>
2402
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">else</span></div>
2403
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2404
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div>
2405
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* functy = SVFUtil::dyn_cast&lt;FunctionType&gt;(elemTy))</div>
2406
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {</div>
2407
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* paramty = functy-&gt;getParamType(0);</div>
2408
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">LLVMUtil::getClassNameFromType</a>(paramty);</div>
2409
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">if</span> (className.size() &gt; 0)</div>
2410
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; {</div>
2411
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2412
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div>
2413
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; }</div>
2414
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2415
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;}</div>
2500
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00824">824</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2501
+ <div class="fragment"><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;{</div>
2502
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* loadSrc = loadInst-&gt;getPointerOperand();</div>
2503
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* valTy = loadSrc-&gt;getType();</div>
2504
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = valTy;</div>
2505
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; 3; ++i)</div>
2506
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; {</div>
2507
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = SVFUtil::dyn_cast&lt;PointerType&gt;(elemTy))</div>
2508
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; elemTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrTy);</div>
2509
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">else</span></div>
2510
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2511
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; }</div>
2512
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* functy = SVFUtil::dyn_cast&lt;FunctionType&gt;(elemTy))</div>
2513
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; {</div>
2514
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* paramty = functy-&gt;getParamType(0);</div>
2515
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">LLVMUtil::getClassNameFromType</a>(paramty);</div>
2516
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">if</span> (className.size() &gt; 0)</div>
2517
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; {</div>
2518
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2519
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; }</div>
2520
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; }</div>
2521
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2522
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;}</div>
2416
2523
  </div><!-- fragment -->
2417
2524
  </div>
2418
2525
  </div>
@@ -2443,10 +2550,10 @@ Functions</h2></td></tr>
2443
2550
  <p>Function does not have any possible caller in the call graph. </p>
2444
2551
  <p>Return true if the function does not have a caller (either it is a main function or a dead function) </p>
2445
2552
 
2446
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00196">196</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2447
- <div class="fragment"><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;{</div>
2448
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">LLVMUtil::isProgEntryFunction</a>(fun);</div>
2449
- <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div>
2553
+ <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>
2554
+ <div class="fragment"><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;{</div>
2555
+ <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">LLVMUtil::isProgEntryFunction</a>(fun);</div>
2556
+ <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;}</div>
2450
2557
  </div><!-- fragment -->
2451
2558
  </div>
2452
2559
  </div>
@@ -2476,10 +2583,10 @@ Functions</h2></td></tr>
2476
2583
 
2477
2584
  <p>Check whether this value is a black hole. </p>
2478
2585
 
2479
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00115">115</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2480
- <div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;{</div>
2481
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> SVFUtil::dyn_cast&lt;ConstantPointerNull&gt;(val);</div>
2482
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;}</div>
2586
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00114">114</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2587
+ <div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;{</div>
2588
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> SVFUtil::dyn_cast&lt;ConstantPointerNull&gt;(val);</div>
2589
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;}</div>
2483
2590
  </div><!-- fragment -->
2484
2591
  </div>
2485
2592
  </div>
@@ -2544,10 +2651,10 @@ Functions</h2></td></tr>
2544
2651
 
2545
2652
  <p>Check whether a function is an entry function (i.e., main) </p>
2546
2653
 
2547
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00103">103</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2548
- <div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;{</div>
2549
- <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> fun &amp;&amp; fun-&gt;getName() == <span class="stringliteral">&quot;main&quot;</span>;</div>
2550
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}</div>
2654
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00102">102</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2655
+ <div class="fragment"><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;{</div>
2656
+ <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> fun &amp;&amp; fun-&gt;getName() == <span class="stringliteral">&quot;main&quot;</span>;</div>
2657
+ <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;}</div>
2551
2658
  </div><!-- fragment -->
2552
2659
  </div>
2553
2660
  </div>
@@ -2575,15 +2682,15 @@ Functions</h2></td></tr>
2575
2682
  </table>
2576
2683
  </div><div class="memdoc">
2577
2684
 
2578
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00252">252</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2579
- <div class="fragment"><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;{</div>
2580
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2581
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div>
2582
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::PtrToInt)</div>
2583
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2584
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div>
2585
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2586
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;}</div>
2685
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00251">251</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2686
+ <div class="fragment"><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;{</div>
2687
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2688
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div>
2689
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::PtrToInt)</div>
2690
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2691
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div>
2692
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2693
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;}</div>
2587
2694
  </div><!-- fragment -->
2588
2695
  </div>
2589
2696
  </div>
@@ -2651,28 +2758,28 @@ Functions</h2></td></tr>
2651
2758
  <p>Given a inheritance relation B is a child of A We assume B::B(thisPtr1){ A::A(thisPtr2) } such that thisPtr1 == thisPtr2 In the following code thisPtr1 is "%class.B1* %this" and thisPtr2 is "%class.A* %0".</p>
2652
2759
  <p>define linkonce_odr dso_local void @B1::B1()(class.B1* this) unnamed_addr #6 comdat this.addr = alloca class.B1*, align 8 store class.B1* this, class.B1** this.addr, align 8 this1 = load class.B1*, class.B1** this.addr, align 8 %0 = bitcast class.B1* this1 to class.A* call void @A::A()(class.A* %0) </p>
2653
2760
 
2654
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00819">819</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2655
- <div class="fragment"><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;{</div>
2656
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">if</span> (thisPtr1 == thisPtr2)</div>
2657
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2658
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisU : thisPtr1-&gt;users())</div>
2659
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; {</div>
2660
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast&lt;StoreInst&gt;(thisU))</div>
2661
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; {</div>
2662
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* storeU : store-&gt;getPointerOperand()-&gt;users())</div>
2663
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; {</div>
2664
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast&lt;LoadInst&gt;(storeU))</div>
2665
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; {</div>
2666
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">if</span> (load-&gt;getNextNode() &amp;&amp;</div>
2667
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; SVFUtil::isa&lt;CastInst&gt;(load-&gt;getNextNode()))</div>
2668
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CastInst&gt;(load-&gt;getNextNode()) ==</div>
2669
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; (thisPtr2-&gt;stripPointerCasts());</div>
2670
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; }</div>
2671
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; }</div>
2672
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; }</div>
2673
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; }</div>
2674
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2675
- <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;}</div>
2761
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00940">940</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2762
+ <div class="fragment"><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160;{</div>
2763
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">if</span> (thisPtr1 == thisPtr2)</div>
2764
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2765
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisU : thisPtr1-&gt;users())</div>
2766
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; {</div>
2767
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast&lt;StoreInst&gt;(thisU))</div>
2768
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; {</div>
2769
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* storeU : store-&gt;getPointerOperand()-&gt;users())</div>
2770
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; {</div>
2771
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast&lt;LoadInst&gt;(storeU))</div>
2772
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; {</div>
2773
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">if</span> (load-&gt;getNextNode() &amp;&amp;</div>
2774
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; SVFUtil::isa&lt;CastInst&gt;(load-&gt;getNextNode()))</div>
2775
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CastInst&gt;(load-&gt;getNextNode()) ==</div>
2776
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; (thisPtr2-&gt;stripPointerCasts());</div>
2777
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; }</div>
2778
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; }</div>
2779
+ <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; }</div>
2780
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div>
2781
+ <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2782
+ <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;}</div>
2676
2783
  </div><!-- fragment -->
2677
2784
  </div>
2678
2785
  </div>
@@ -2700,15 +2807,15 @@ Functions</h2></td></tr>
2700
2807
  </table>
2701
2808
  </div><div class="memdoc">
2702
2809
 
2703
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00272">272</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2704
- <div class="fragment"><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;{</div>
2705
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2706
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div>
2707
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::Select)</div>
2708
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2709
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div>
2710
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2711
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;}</div>
2810
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00271">271</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2811
+ <div class="fragment"><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;{</div>
2812
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2813
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div>
2814
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::Select)</div>
2815
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2816
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div>
2817
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2818
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;}</div>
2712
2819
  </div><!-- fragment -->
2713
2820
  </div>
2714
2821
  </div>
@@ -2736,19 +2843,19 @@ Functions</h2></td></tr>
2736
2843
  </table>
2737
2844
  </div><div class="memdoc">
2738
2845
 
2739
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00282">282</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2740
- <div class="fragment"><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;{</div>
2741
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2742
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; {</div>
2743
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::Trunc ||</div>
2744
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; constExpr-&gt;getOpcode() == Instruction::FPTrunc ||</div>
2745
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; constExpr-&gt;getOpcode() == Instruction::ZExt ||</div>
2746
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; constExpr-&gt;getOpcode() == Instruction::SExt ||</div>
2747
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; constExpr-&gt;getOpcode() == Instruction::FPExt)</div>
2748
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2749
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div>
2750
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2751
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;}</div>
2846
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00281">281</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2847
+ <div class="fragment"><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;{</div>
2848
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2849
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div>
2850
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::Trunc ||</div>
2851
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; constExpr-&gt;getOpcode() == Instruction::FPTrunc ||</div>
2852
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; constExpr-&gt;getOpcode() == Instruction::ZExt ||</div>
2853
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; constExpr-&gt;getOpcode() == Instruction::SExt ||</div>
2854
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; constExpr-&gt;getOpcode() == Instruction::FPExt)</div>
2855
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2856
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div>
2857
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2858
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;}</div>
2752
2859
  </div><!-- fragment -->
2753
2860
  </div>
2754
2861
  </div>
@@ -2776,16 +2883,16 @@ Functions</h2></td></tr>
2776
2883
  </table>
2777
2884
  </div><div class="memdoc">
2778
2885
 
2779
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00318">318</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2780
- <div class="fragment"><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;{</div>
2781
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2782
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div>
2783
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">if</span> ((constExpr-&gt;getOpcode() &gt;= Instruction::UnaryOpsBegin) &amp;&amp;</div>
2784
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; (constExpr-&gt;getOpcode() &lt;= Instruction::UnaryOpsEnd))</div>
2785
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2786
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }</div>
2787
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2788
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;}</div>
2886
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00317">317</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2887
+ <div class="fragment"><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;{</div>
2888
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2889
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div>
2890
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span> ((constExpr-&gt;getOpcode() &gt;= Instruction::UnaryOpsBegin) &amp;&amp;</div>
2891
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; (constExpr-&gt;getOpcode() &lt;= Instruction::UnaryOpsEnd))</div>
2892
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2893
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; }</div>
2894
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2895
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;}</div>
2789
2896
  </div><!-- fragment -->
2790
2897
  </div>
2791
2898
  </div>
@@ -2857,14 +2964,14 @@ Functions</h2></td></tr>
2857
2964
  </table>
2858
2965
  </div><div class="memdoc">
2859
2966
 
2860
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00694">694</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2861
- <div class="fragment"><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;{</div>
2862
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;GlobalVariable&gt;(val))</div>
2863
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2864
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> valName = val-&gt;getName().str();</div>
2865
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">return</span> valName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>.size(),</div>
2866
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>) == 0;</div>
2867
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;}</div>
2967
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00815">815</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2968
+ <div class="fragment"><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;{</div>
2969
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;GlobalVariable&gt;(val))</div>
2970
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2971
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> valName = val-&gt;getName().str();</div>
2972
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">return</span> valName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>.size(),</div>
2973
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>) == 0;</div>
2974
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;}</div>
2868
2975
  </div><!-- fragment -->
2869
2976
  </div>
2870
2977
  </div>
@@ -2884,36 +2991,36 @@ Functions</h2></td></tr>
2884
2991
  </table>
2885
2992
  </div><div class="memdoc">
2886
2993
 
2887
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00734">734</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2888
- <div class="fragment"><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;{</div>
2889
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="comment">// the callsite must be an indirect one with at least one argument (this</span></div>
2890
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="comment">// ptr)</span></div>
2891
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">if</span> (cs-&gt;getCalledFunction() != <span class="keyword">nullptr</span> || cs-&gt;arg_empty())</div>
2892
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2893
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; </div>
2894
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="comment">// the first argument (this pointer) must be a pointer type and must be a</span></div>
2895
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="comment">// class name</span></div>
2896
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (cs-&gt;getArgOperand(0)-&gt;getType()-&gt;isPointerTy() == <span class="keyword">false</span>)</div>
2897
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2898
- <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; </div>
2899
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfunc = cs-&gt;getCalledOperand();</div>
2900
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst = SVFUtil::dyn_cast&lt;LoadInst&gt;(vfunc))</div>
2901
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; {</div>
2902
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
2903
- <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
2904
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr))</div>
2905
- <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; {</div>
2906
- <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">if</span> (vfuncptrgepinst-&gt;getNumIndices() != 1)</div>
2907
- <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2908
- <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = vfuncptrgepinst-&gt;getPointerOperand();</div>
2909
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(vtbl))</div>
2910
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; {</div>
2911
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2912
- <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div>
2913
- <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div>
2914
- <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; }</div>
2915
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2916
- <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;}</div>
2994
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00855">855</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2995
+ <div class="fragment"><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;{</div>
2996
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="comment">// the callsite must be an indirect one with at least one argument (this</span></div>
2997
+ <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="comment">// ptr)</span></div>
2998
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">if</span> (cs-&gt;getCalledFunction() != <span class="keyword">nullptr</span> || cs-&gt;arg_empty())</div>
2999
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3000
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; </div>
3001
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="comment">// the first argument (this pointer) must be a pointer type and must be a</span></div>
3002
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="comment">// class name</span></div>
3003
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">if</span> (cs-&gt;getArgOperand(0)-&gt;getType()-&gt;isPointerTy() == <span class="keyword">false</span>)</div>
3004
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3005
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; </div>
3006
+ <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfunc = cs-&gt;getCalledOperand();</div>
3007
+ <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst = SVFUtil::dyn_cast&lt;LoadInst&gt;(vfunc))</div>
3008
+ <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; {</div>
3009
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
3010
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
3011
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr))</div>
3012
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; {</div>
3013
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">if</span> (vfuncptrgepinst-&gt;getNumIndices() != 1)</div>
3014
+ <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3015
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = vfuncptrgepinst-&gt;getPointerOperand();</div>
3016
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(vtbl))</div>
3017
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; {</div>
3018
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3019
+ <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; }</div>
3020
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; }</div>
3021
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div>
3022
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3023
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;}</div>
2917
3024
  </div><!-- fragment -->
2918
3025
  </div>
2919
3026
  </div>
@@ -2935,12 +3042,12 @@ template&lt;typename T &gt; </div>
2935
3042
  </table>
2936
3043
  </div><div class="memdoc">
2937
3044
 
2938
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00486">486</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2939
- <div class="fragment"><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;{</div>
2940
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
2941
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; llvm::raw_string_ostream(str) &lt;&lt; val;</div>
2942
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">return</span> str;</div>
2943
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;}</div>
3045
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00499">499</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3046
+ <div class="fragment"><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;{</div>
3047
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
3048
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; llvm::raw_string_ostream(str) &lt;&lt; val;</div>
3049
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">return</span> str;</div>
3050
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;}</div>
2944
3051
  </div><!-- fragment -->
2945
3052
  </div>
2946
3053
  </div>
@@ -3019,6 +3126,120 @@ template&lt;typename T &gt; </div>
3019
3126
  </div><!-- fragment -->
3020
3127
  </div>
3021
3128
  </div>
3129
+ <a id="a523a8c3f9bfaea178733822ac598d552"></a>
3130
+ <h2 class="memtitle"><span class="permalink"><a href="#a523a8c3f9bfaea178733822ac598d552">&#9670;&nbsp;</a></span>removeFunAnnotations()</h2>
3131
+
3132
+ <div class="memitem">
3133
+ <div class="memproto">
3134
+ <table class="memname">
3135
+ <tr>
3136
+ <td class="memname">void SVF::LLVMUtil::removeFunAnnotations </td>
3137
+ <td>(</td>
3138
+ <td class="paramtype">std::vector&lt; <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * &gt; &amp;&#160;</td>
3139
+ <td class="paramname"><em>removedFuncList</em></td><td>)</td>
3140
+ <td></td>
3141
+ </tr>
3142
+ </table>
3143
+ </div><div class="memdoc">
3144
+
3145
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00487">487</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3146
+ <div class="fragment"><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;{</div>
3147
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
3148
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No functions to remove annotations in extapi.bc module</span></div>
3149
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; </div>
3150
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module = removedFuncList[0]-&gt;getParent();</div>
3151
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* glob = module-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
3152
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
3153
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span>;</div>
3154
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; </div>
3155
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>* ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
3156
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
3157
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">return</span>;</div>
3158
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; </div>
3159
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; std::vector&lt;Constant*&gt; newAnnotations;</div>
3160
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
3161
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div>
3162
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>* structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
3163
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
3164
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">continue</span>;</div>
3165
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; </div>
3166
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0));</div>
3167
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span> (expr == <span class="keyword">nullptr</span> || expr-&gt;getOpcode() != Instruction::BitCast)</div>
3168
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div>
3169
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="comment">// Keep the annotation if it&#39;s not created using BitCast</span></div>
3170
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; newAnnotations.push_back(structAn);</div>
3171
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">continue</span>;</div>
3172
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div>
3173
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; </div>
3174
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(expr-&gt;getOperand(0));</div>
3175
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">if</span> (annotatedFunc == <span class="keyword">nullptr</span> || std::find(removedFuncList.begin(), removedFuncList.end(), annotatedFunc) != removedFuncList.end())</div>
3176
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">continue</span>;</div>
3177
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; </div>
3178
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="comment">// Keep the annotation for all other functions</span></div>
3179
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; newAnnotations.push_back(structAn);</div>
3180
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div>
3181
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; </div>
3182
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">if</span> (newAnnotations.size() == ca-&gt;getNumOperands())</div>
3183
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No annotations to remove</span></div>
3184
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; </div>
3185
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* annotationsType = ArrayType::get(ca-&gt;getType()-&gt;getElementType(), newAnnotations.size());</div>
3186
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* newCA = ConstantArray::get(annotationsType, newAnnotations);</div>
3187
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; </div>
3188
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="comment">// Check if a global variable with the name llvm.global.annotations already exists</span></div>
3189
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* existingGlobal = module-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
3190
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (existingGlobal)</div>
3191
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="comment">// Rename the existing llvm.global.annotations to llvm.global.annotations_old</span></div>
3192
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; existingGlobal-&gt;setName(<span class="stringliteral">&quot;llvm.global.annotations_old&quot;</span>);</div>
3193
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; </div>
3194
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// Create a new global variable with the updated annotations</span></div>
3195
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* newGlobal = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>(*module, newCA-&gt;getType(), glob-&gt;isConstant(),</div>
3196
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; glob-&gt;getLinkage(), newCA, <span class="stringliteral">&quot;llvm.global.annotations&quot;</span>, glob, glob-&gt;getThreadLocalMode());</div>
3197
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; </div>
3198
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="comment">// Copy other properties from the old global variable to the new one</span></div>
3199
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; newGlobal-&gt;setSection(glob-&gt;getSection());</div>
3200
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; newGlobal-&gt;setAlignment(llvm::MaybeAlign(glob-&gt;getAlignment()));</div>
3201
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; </div>
3202
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="comment">// Remove the old global variable</span></div>
3203
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; glob-&gt;eraseFromParent();</div>
3204
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;}</div>
3205
+ </div><!-- fragment -->
3206
+ </div>
3207
+ </div>
3208
+ <a id="a74ed17168bf5946cfb3f17495ec6db99"></a>
3209
+ <h2 class="memtitle"><span class="permalink"><a href="#a74ed17168bf5946cfb3f17495ec6db99">&#9670;&nbsp;</a></span>removeUnusedFuncsAndAnnotations()</h2>
3210
+
3211
+ <div class="memitem">
3212
+ <div class="memproto">
3213
+ <table class="mlabels">
3214
+ <tr>
3215
+ <td class="mlabels-left">
3216
+ <table class="memname">
3217
+ <tr>
3218
+ <td class="memname">void SVF::LLVMUtil::removeUnusedFuncsAndAnnotations </td>
3219
+ <td>(</td>
3220
+ <td class="paramtype">std::vector&lt; <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * &gt;&#160;</td>
3221
+ <td class="paramname"><em>removedFuncList</em></td><td>)</td>
3222
+ <td></td>
3223
+ </tr>
3224
+ </table>
3225
+ </td>
3226
+ <td class="mlabels-right">
3227
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
3228
+ </tr>
3229
+ </table>
3230
+ </div><div class="memdoc">
3231
+ <p>Remove unused function annotations in extapi.bc</p>
3232
+ <p>Remove unused function in extapi.bc</p>
3233
+
3234
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00380">380</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3235
+ <div class="fragment"><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;{</div>
3236
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
3237
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
3238
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; func-&gt;eraseFromParent();</div>
3239
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;}</div>
3240
+ </div><!-- fragment -->
3241
+ </div>
3242
+ </div>
3022
3243
  <a id="a38ce45ae5f017c90115ce444b44d478c"></a>
3023
3244
  <h2 class="memtitle"><span class="permalink"><a href="#a38ce45ae5f017c90115ce444b44d478c">&#9670;&nbsp;</a></span>stripAllCasts()</h2>
3024
3245
 
@@ -3112,18 +3333,18 @@ template&lt;typename T &gt; </div>
3112
3333
  </table>
3113
3334
  </div><div class="memdoc">
3114
3335
 
3115
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00938">938</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3116
- <div class="fragment"><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;{</div>
3117
- <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> classNameOfThisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(cs);</div>
3118
- <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = cs-&gt;getCaller();</div>
3119
- <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(func) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(func))</div>
3120
- <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; {</div>
3121
- <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(func-&gt;getName().str());</div>
3122
- <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">if</span> (classNameOfThisPtr.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>) == 0)</div>
3123
- <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3124
- <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; }</div>
3125
- <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3126
- <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;}</div>
3336
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01059">1059</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3337
+ <div class="fragment"><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;{</div>
3338
+ <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> classNameOfThisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(cs);</div>
3339
+ <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = cs-&gt;getCaller();</div>
3340
+ <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(func) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(func))</div>
3341
+ <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; {</div>
3342
+ <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(func-&gt;getName().str());</div>
3343
+ <div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="keywordflow">if</span> (classNameOfThisPtr.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>) == 0)</div>
3344
+ <div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3345
+ <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; }</div>
3346
+ <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3347
+ <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;}</div>
3127
3348
  </div><!-- fragment -->
3128
3349
  </div>
3129
3350
  </div>
@@ -3181,15 +3402,15 @@ template&lt;typename T &gt; </div>
3181
3402
  </div>
3182
3403
  </div><!-- contents -->
3183
3404
  <div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
3184
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00471">LLVMUtil.cpp:471</a></div></div>
3405
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00592">LLVMUtil.cpp:592</a></div></div>
3185
3406
  <div class="ttc" id="anamespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdoc">LLVM Dominators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
3186
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aeaa116fd9718c8b31f30d3fe62bb6403"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aeaa116fd9718c8b31f30d3fe62bb6403">SVF::LLVMUtil::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="LLVMUtil_8h_source.html#l00052">LLVMUtil.h:52</a></div></div>
3407
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aeaa116fd9718c8b31f30d3fe62bb6403"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aeaa116fd9718c8b31f30d3fe62bb6403">SVF::LLVMUtil::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="LLVMUtil_8h_source.html#l00051">LLVMUtil.h:51</a></div></div>
3187
3408
  <div class="ttc" id="anamespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00146">BasicTypes.h:146</a></div></div>
3188
3409
  <div class="ttc" id="anamespaceSVF_html_a773900ea3c75022657aac1abf59fa51b"><div class="ttname"><a href="namespaceSVF.html#a773900ea3c75022657aac1abf59fa51b">SVF::MetadataAsValue</a></div><div class="ttdeci">llvm::MetadataAsValue MetadataAsValue</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
3189
3410
  <div class="ttc" id="anamespaceSVF_html_a6ec0236303089a01fd9da36a8bb84e0a"><div class="ttname"><a href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">SVF::FunctionType</a></div><div class="ttdeci">llvm::FunctionType FunctionType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
3190
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a16d14e6712866d1d710c386c72d67181"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a16d14e6712866d1d710c386c72d67181">SVF::LLVMModuleSet::FunctionSetType</a></div><div class="ttdeci">std::vector&lt; const Function * &gt; FunctionSetType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00049">LLVMModule.h:49</a></div></div>
3411
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a16d14e6712866d1d710c386c72d67181"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a16d14e6712866d1d710c386c72d67181">SVF::LLVMModuleSet::FunctionSetType</a></div><div class="ttdeci">std::vector&lt; const Function * &gt; FunctionSetType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00050">LLVMModule.h:50</a></div></div>
3191
3412
  <div class="ttc" id="aLLVMUtil_8cpp_html_a5f8da60b0fcc28445f508f4e42513a82"><div class="ttname"><a href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a></div><div class="ttdeci">const std::string clsName</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00043">LLVMUtil.cpp:43</a></div></div>
3192
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a08fbef6fe3e2af96a49f79ce23accb01"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">SVF::LLVMUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00694">LLVMUtil.cpp:694</a></div></div>
3413
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a08fbef6fe3e2af96a49f79ce23accb01"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">SVF::LLVMUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00815">LLVMUtil.cpp:815</a></div></div>
3193
3414
  <div class="ttc" id="anamespaceSVF_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="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
3194
3415
  <div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00084">BasicTypes.h:84</a></div></div>
3195
3416
  <div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
@@ -3199,84 +3420,90 @@ template&lt;typename T &gt; </div>
3199
3420
  <div class="ttc" id="anamespaceSVF_html_a03db82b8a7914367024723dba4d6ca3c"><div class="ttname"><a href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">SVF::DataLayout</a></div><div class="ttdeci">llvm::DataLayout DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00106">BasicTypes.h:106</a></div></div>
3200
3421
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::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#l00222">LLVMUtil.cpp:222</a></div></div>
3201
3422
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(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#l00144">LLVMUtil.cpp:144</a></div></div>
3202
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00645">LLVMUtil.cpp:645</a></div></div>
3423
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00766">LLVMUtil.cpp:766</a></div></div>
3203
3424
  <div class="ttc" id="anamespaceSVF_html_a52c8654c221bb53a59f70ea3cb1e5c45"><div class="ttname"><a href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">SVF::StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
3204
3425
  <div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
3205
- <div class="ttc" id="anamespaceSVF_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#l00454">SVFUtil.h:454</a></div></div>
3426
+ <div class="ttc" id="anamespaceSVF_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#l00450">SVFUtil.h:450</a></div></div>
3206
3427
  <div class="ttc" id="anamespaceSVF_html_a7cbe1c6567039e72958fd70e423d3597"><div class="ttname"><a href="namespaceSVF.html#a7cbe1c6567039e72958fd70e423d3597">SVF::ConstantAggregate</a></div><div class="ttdeci">llvm::ConstantAggregate ConstantAggregate</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00115">BasicTypes.h:115</a></div></div>
3207
3428
  <div class="ttc" id="acJSON_8h_html_a25d22ecc7e656d2c59332072684e8766"><div class="ttname"><a href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a></div><div class="ttdeci">const char *const name</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00264">cJSON.h:264</a></div></div>
3429
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47d2af43ff12d9e1014fa19256619466"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">SVF::LLVMUtil::getCalledFunctions</a></div><div class="ttdeci">std::vector&lt; const Function * &gt; getCalledFunctions(const Function *F)</div><div class="ttdoc">Get all called funcions in a parent function.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00549">LLVMUtil.cpp:549</a></div></div>
3208
3430
  <div class="ttc" id="anamespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00247">BasicTypes.h:247</a></div></div>
3209
3431
  <div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
3210
3432
  <div class="ttc" id="anamespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
3433
+ <div class="ttc" id="anamespaceSVF_html_a5ae718cba37d8e34d2946530dc098c8e"><div class="ttname"><a href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">SVF::ConstantArray</a></div><div class="ttdeci">llvm::ConstantArray ConstantArray</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00121">BasicTypes.h:121</a></div></div>
3211
3434
  <div class="ttc" id="anamespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00081">BasicTypes.h:81</a></div></div>
3212
3435
  <div class="ttc" id="anamespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00147">BasicTypes.h:147</a></div></div>
3213
3436
  <div class="ttc" id="anamespaceSVF_html_a956458a8554bf734db1194f320fd4b4c"><div class="ttname"><a href="namespaceSVF.html#a956458a8554bf734db1194f320fd4b4c">SVF::BlockAddress</a></div><div class="ttdeci">llvm::BlockAddress BlockAddress</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
3214
3437
  <div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
3215
- <div class="ttc" id="anamespaceSVF_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#l00512">SVFUtil.h:512</a></div></div>
3438
+ <div class="ttc" id="anamespaceSVF_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#l00497">SVFUtil.h:497</a></div></div>
3216
3439
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a837d19c740902c419206287bdb21273b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">SVF::LLVMUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00339">LLVMUtil.cpp:339</a></div></div>
3217
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a68e7bad8eb537039559d8ddc851032e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">SVF::LLVMUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00793">LLVMUtil.cpp:793</a></div></div>
3218
- <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00484">SVFValue.h:484</a></div></div>
3440
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a68e7bad8eb537039559d8ddc851032e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">SVF::LLVMUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00914">LLVMUtil.cpp:914</a></div></div>
3441
+ <div class="ttc" id="anamespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
3442
+ <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00490">SVFValue.h:490</a></div></div>
3219
3443
  <div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
3220
3444
  <div class="ttc" id="anamespaceSVF_html_a334998718813a19a7697daf4ba282faf"><div class="ttname"><a href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">SVF::Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
3221
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ac9d6aff1a5e778e45c51b4f3b6d787e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">SVF::LLVMUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const Function *fun)</div><div class="ttdoc">Check whether a function is an entry function (i.e., main)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00103">LLVMUtil.h:103</a></div></div>
3445
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ac9d6aff1a5e778e45c51b4f3b6d787e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">SVF::LLVMUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const Function *fun)</div><div class="ttdoc">Check whether a function is an entry function (i.e., main)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00102">LLVMUtil.h:102</a></div></div>
3222
3446
  <div class="ttc" id="acJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
3223
3447
  <div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00242">SVFType.h:242</a></div></div>
3224
3448
  <div class="ttc" id="aclassSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00132">SVFType.h:132</a></div></div>
3225
- <div class="ttc" id="anamespaceSVF_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#l00443">SVFUtil.h:443</a></div></div>
3449
+ <div class="ttc" id="anamespaceSVF_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#l00439">SVFUtil.h:439</a></div></div>
3226
3450
  <div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
3227
3451
  <div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a745a2addadc136075d45c7fb8437af3e"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">SVF::cppUtil::demangle</a></div><div class="ttdeci">struct DemangledName demangle(const std::string &amp;name)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00153">CppUtil.cpp:153</a></div></div>
3228
3452
  <div class="ttc" id="acJSON_8cpp_html_a930920b2bc42824a5c03be681830f4b2"><div class="ttname"><a href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a></div><div class="ttdeci">return true</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02295">cJSON.cpp:2295</a></div></div>
3229
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(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="LLVMUtil_8h_source.html#l00383">LLVMUtil.h:383</a></div></div>
3453
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(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="LLVMUtil_8h_source.html#l00396">LLVMUtil.h:396</a></div></div>
3230
3454
  <div class="ttc" id="anamespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00092">BasicTypes.h:92</a></div></div>
3231
3455
  <div class="ttc" id="anamespaceSVF_html_a2b28f48dde0a9a91d251e654ce1f9477"><div class="ttname"><a href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">SVF::ConstantStruct</a></div><div class="ttdeci">llvm::ConstantStruct ConstantStruct</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00104">BasicTypes.h:104</a></div></div>
3232
3456
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00270">SVFValue.h:270</a></div></div>
3233
3457
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::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#l00402">LLVMUtil.cpp:402</a></div></div>
3234
3458
  <div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a1cf2e4671b16b477cc779c72f2419234"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">SVF::cppUtil::getBeforeBrackets</a></div><div class="ttdeci">std::string getBeforeBrackets(const std::string &amp;name)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00085">CppUtil.cpp:85</a></div></div>
3235
3459
  <div class="ttc" id="aLLVMUtil_8cpp_html_a211c0223a37893d84fb5e2fd2f9fc76b"><div class="ttname"><a href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a></div><div class="ttdeci">const std::string vtblLabelBeforeDemangle</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00038">LLVMUtil.cpp:38</a></div></div>
3460
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a523a8c3f9bfaea178733822ac598d552"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(std::vector&lt; Function * &gt; &amp;removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00487">LLVMUtil.cpp:487</a></div></div>
3236
3461
  <div class="ttc" id="anamespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
3237
- <div class="ttc" id="aclassSVF_1_1SVFFunction_html_af264312f0020bde9151697bccfde3263"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#af264312f0020bde9151697bccfde3263">SVF::SVFFunction::getReturnType</a></div><div class="ttdeci">const SVFType * getReturnType() const</div><div class="ttdoc">Returns the FunctionType.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00360">SVFValue.h:360</a></div></div>
3238
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a206973624fcc58e6044c884dba23a754"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">SVF::LLVMUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00883">LLVMUtil.cpp:883</a></div></div>
3239
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00330">LLVMUtil.h:330</a></div></div>
3240
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::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#l00242">LLVMUtil.h:242</a></div></div>
3462
+ <div class="ttc" id="aclassSVF_1_1SVFFunction_html_af264312f0020bde9151697bccfde3263"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#af264312f0020bde9151697bccfde3263">SVF::SVFFunction::getReturnType</a></div><div class="ttdeci">const SVFType * getReturnType() const</div><div class="ttdoc">Returns the FunctionType.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00361">SVFValue.h:361</a></div></div>
3463
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a206973624fcc58e6044c884dba23a754"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">SVF::LLVMUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01004">LLVMUtil.cpp:1004</a></div></div>
3464
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00329">LLVMUtil.h:329</a></div></div>
3465
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::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#l00241">LLVMUtil.h:241</a></div></div>
3241
3466
  <div class="ttc" id="aLLVMUtil_8cpp_html_a61c158146c07e77234eb4a2f9b940821"><div class="ttname"><a href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a></div><div class="ttdeci">const std::string structName</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00044">LLVMUtil.cpp:44</a></div></div>
3242
3467
  <div class="ttc" id="anamespaceSVF_html_a962e9a9044a46fc4bd2367384f6e0827"><div class="ttname"><a href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">SVF::CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00156">BasicTypes.h:156</a></div></div>
3243
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a0095d23a9c9d5d62ec4a23c56824b5f0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">SVF::LLVMUtil::getLLVMCallSite</a></div><div class="ttdeci">const CallBase * getLLVMCallSite(const Value *value)</div><div class="ttdoc">Return LLVM callsite given a value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00069">LLVMUtil.h:69</a></div></div>
3468
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a0095d23a9c9d5d62ec4a23c56824b5f0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">SVF::LLVMUtil::getLLVMCallSite</a></div><div class="ttdeci">const CallBase * getLLVMCallSite(const Value *value)</div><div class="ttdoc">Return LLVM callsite given a value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00068">LLVMUtil.h:68</a></div></div>
3244
3469
  <div class="ttc" id="anamespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
3245
3470
  <div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00052">SVFType.h:52</a></div></div>
3246
3471
  <div class="ttc" id="anamespaceSVF_html_a89c7208bfc0b57873dfa574f52050295"><div class="ttname"><a href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">SVF::DISubprogram</a></div><div class="ttdeci">llvm::DISubprogram DISubprogram</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00111">BasicTypes.h:111</a></div></div>
3247
3472
  <div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_af6117df8aec7f4c077058fa8f00b0243"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">SVF::cppUtil::DemangledName::isThunkFunc</a></div><div class="ttdeci">bool isThunkFunc</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00050">CppUtil.h:50</a></div></div>
3248
3473
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00309">SVFUtil.h:309</a></div></div>
3249
- <div class="ttc" id="anamespaceSVF_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#l00336">SVFUtil.h:336</a></div></div>
3474
+ <div class="ttc" id="anamespaceSVF_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#l00340">SVFUtil.h:340</a></div></div>
3250
3475
  <div class="ttc" id="anamespaceSVF_html_ac4e93e1fec646ff222940a663843921b"><div class="ttname"><a href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">SVF::GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00160">BasicTypes.h:160</a></div></div>
3476
+ <div class="ttc" id="anamespaceSVF_html_a8ad3aa124fabddc2fdd07c50403d70a9"><div class="ttname"><a href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">SVF::ConstantDataSequential</a></div><div class="ttdeci">llvm::ConstantDataSequential ConstantDataSequential</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00117">BasicTypes.h:117</a></div></div>
3251
3477
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a5c8cbc986cccb9d84f87aae162df3737"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVF::SVFUtil::isa</a></div><div class="ttdeci">LLVM_NODISCARD bool isa(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00241">Casting.h:241</a></div></div>
3252
3478
  <div class="ttc" id="aLLVMUtil_8cpp_html_aff4f7c7a9aacf05a3a3c42ae24ea7d96"><div class="ttname"><a href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a></div><div class="ttdeci">const std::string vfunPreLabel</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00041">LLVMUtil.cpp:41</a></div></div>
3479
+ <div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
3253
3480
  <div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
3254
3481
  <div class="ttc" id="aclassSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00192">SVFType.h:192</a></div></div>
3255
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa841a295ec803b6a1f2bd248f63f863f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">SVF::LLVMUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00975">LLVMUtil.cpp:975</a></div></div>
3256
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa81614cdb6a2a912638d5dc980480af7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa81614cdb6a2a912638d5dc980480af7">SVF::LLVMUtil::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#l00156">LLVMUtil.h:156</a></div></div>
3482
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa841a295ec803b6a1f2bd248f63f863f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">SVF::LLVMUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01096">LLVMUtil.cpp:1096</a></div></div>
3483
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa81614cdb6a2a912638d5dc980480af7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa81614cdb6a2a912638d5dc980480af7">SVF::LLVMUtil::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#l00155">LLVMUtil.h:155</a></div></div>
3257
3484
  <div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_a5cd207bce618521166e6fa235014b297"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">SVF::cppUtil::DemangledName::className</a></div><div class="ttdeci">std::string className</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00048">CppUtil.h:48</a></div></div>
3258
3485
  <div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00269">BasicTypes.h:269</a></div></div>
3259
3486
  <div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_a1dd17b240663bc9412adefde82385e02"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">SVF::cppUtil::DemangledName::funcName</a></div><div class="ttdeci">std::string funcName</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00049">CppUtil.h:49</a></div></div>
3260
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3d34fcdfc98add848a34fd5259c11eb2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">SVF::LLVMUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const Function * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00058">LLVMUtil.h:58</a></div></div>
3261
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00575">LLVMUtil.cpp:575</a></div></div>
3487
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3d34fcdfc98add848a34fd5259c11eb2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">SVF::LLVMUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const Function * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00057">LLVMUtil.h:57</a></div></div>
3488
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00696">LLVMUtil.cpp:696</a></div></div>
3262
3489
  <div class="ttc" id="anamespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00118">BasicTypes.h:118</a></div></div>
3263
3490
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &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#l00306">LLVMUtil.cpp:306</a></div></div>
3264
3491
  <div class="ttc" id="aSVFFileSystem_8cpp_html_ab25baccb41e3b67ef0bfdaa1336c9649"><div class="ttname"><a href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a></div><div class="ttdeci">#define F(f)</div></div>
3265
3492
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00192">LLVMUtil.cpp:192</a></div></div>
3266
3493
  <div class="ttc" id="anamespaceSVF_html_a3011dbac9102f044ad5f36a4ad3d4a71"><div class="ttname"><a href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">SVF::NamedMDNode</a></div><div class="ttdeci">llvm::NamedMDNode NamedMDNode</div><div class="ttdoc">LLVM metadata and debug information.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
3267
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a5a7dc8680a9714e08b01dd339b85bb20"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">SVF::LLVMUtil::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="LLVMUtil_8h_source.html#l00047">LLVMUtil.h:47</a></div></div>
3494
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a5a7dc8680a9714e08b01dd339b85bb20"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">SVF::LLVMUtil::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="LLVMUtil_8h_source.html#l00046">LLVMUtil.h:46</a></div></div>
3268
3495
  <div class="ttc" id="anamespaceSVF_html_a28eec26ec8edaa5e96aecfeb01f6c0d4"><div class="ttname"><a href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">SVF::MDString</a></div><div class="ttdeci">llvm::MDString MDString</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00099">BasicTypes.h:99</a></div></div>
3269
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a17cce1a11e1bfc342a9e3e79fe35deef"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a17cce1a11e1bfc342a9e3e79fe35deef">SVF::LLVMUtil::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#l00196">LLVMUtil.h:196</a></div></div>
3496
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a17cce1a11e1bfc342a9e3e79fe35deef"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a17cce1a11e1bfc342a9e3e79fe35deef">SVF::LLVMUtil::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#l00195">LLVMUtil.h:195</a></div></div>
3270
3497
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afbd60d5443c7fa1448813d00bb5d0fa7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &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#l00277">LLVMUtil.cpp:277</a></div></div>
3271
- <div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00587">SVFValue.h:587</a></div></div>
3498
+ <div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00593">SVFValue.h:593</a></div></div>
3272
3499
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::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="LLVMUtil_8cpp_source.html#l00206">LLVMUtil.cpp:206</a></div></div>
3273
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::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#l00120">LLVMUtil.h:120</a></div></div>
3500
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::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#l00119">LLVMUtil.h:119</a></div></div>
3274
3501
  <div class="ttc" id="anamespaceSVF_html_a7332f8059ea95472dcc231de884a5768"><div class="ttname"><a href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">SVF::ConstantData</a></div><div class="ttdeci">llvm::ConstantData ConstantData</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
3275
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6dd1590b82d2bd86766886bd21bc2b72"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">SVF::LLVMUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00852">LLVMUtil.cpp:852</a></div></div>
3502
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6dd1590b82d2bd86766886bd21bc2b72"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">SVF::LLVMUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00973">LLVMUtil.cpp:973</a></div></div>
3276
3503
  <div class="ttc" id="anamespaceSVF_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="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
3277
3504
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream &amp; errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
3278
3505
  <div class="ttc" id="anamespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00143">BasicTypes.h:143</a></div></div>
3279
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a416bcb6da0650f546cb7d83e6be850b6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00951">LLVMUtil.cpp:951</a></div></div>
3506
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a416bcb6da0650f546cb7d83e6be850b6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01072">LLVMUtil.cpp:1072</a></div></div>
3280
3507
  <!-- start footer part -->
3281
3508
  <hr class="footer"/><address class="footer"><small>
3282
3509
  Generated by &#160;<a href="http://www.doxygen.org/index.html">