svf-tools 1.0.768 → 1.0.770

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 (503) hide show
  1. package/SVF-doxygen/html/html/AccessPath_8cpp_source.html +163 -130
  2. package/SVF-doxygen/html/html/AccessPath_8h_source.html +47 -45
  3. package/SVF-doxygen/html/html/AddressValue_8h_source.html +1 -1
  4. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/CFGrammar_8cpp_source.html +3 -3
  6. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +9 -9
  8. package/SVF-doxygen/html/html/CommandLine_8h_source.html +1 -1
  9. package/SVF-doxygen/html/html/ConsExeState_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/ConsExeState_8h_source.html +1 -1
  11. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +9 -9
  12. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
  15. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
  16. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/ExeState_8h_source.html +1 -1
  19. package/SVF-doxygen/html/html/ExtAPI_8cpp.html +1 -1
  20. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +60 -67
  21. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +9 -9
  22. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
  25. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
  27. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +3 -3
  28. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  29. package/SVF-doxygen/html/html/IntervalExeState_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/IntervalValue_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +19 -19
  32. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1108 -1111
  33. package/SVF-doxygen/html/html/LLVMUtil_8h.html +2 -0
  34. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +191 -172
  35. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  39. package/SVF-doxygen/html/html/NumericLiteral_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  42. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  43. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/RelExeState_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/SVFFileSystem_8cpp_source.html +13 -13
  46. package/SVF-doxygen/html/html/SVFFileSystem_8h_source.html +13 -13
  47. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
  50. package/SVF-doxygen/html/html/SVFIR2ConsExeState_8cpp_source.html +56 -56
  51. package/SVF-doxygen/html/html/SVFIR2ConsExeState_8h_source.html +6 -6
  52. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +831 -749
  53. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8h_source.html +138 -127
  54. package/SVF-doxygen/html/html/SVFIR2Relation_8cpp_source.html +33 -33
  55. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +11 -11
  56. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +11 -11
  57. package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp_source.html +11 -12
  58. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +15 -15
  59. package/SVF-doxygen/html/html/SVFIR_8h_source.html +11 -11
  60. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +20 -20
  61. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +806 -799
  62. package/SVF-doxygen/html/html/SVFType_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
  64. package/SVF-doxygen/html/html/SVFUtil_8h.html +0 -12
  65. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +300 -333
  66. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +1 -1
  67. package/SVF-doxygen/html/html/SVFValue_8h_source.html +2 -2
  68. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  69. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +8 -8
  70. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +2 -2
  71. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  73. package/SVF-doxygen/html/html/SymState_8cpp_source.html +1 -1
  74. package/SVF-doxygen/html/html/SymState_8h_source.html +1 -1
  75. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +52 -62
  76. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -3
  77. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  78. package/SVF-doxygen/html/html/VFGNode_8h_source.html +7 -7
  79. package/SVF-doxygen/html/html/VFG_8cpp_source.html +15 -15
  80. package/SVF-doxygen/html/html/VFG_8h_source.html +10 -10
  81. package/SVF-doxygen/html/html/WTO_8h_source.html +1 -1
  82. package/SVF-doxygen/html/html/cJSON_8cpp.html +3 -2
  83. package/SVF-doxygen/html/html/cJSON_8cpp_source.html +3 -2
  84. package/SVF-doxygen/html/html/classOption.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1AccessPath-members.html +27 -26
  86. package/SVF-doxygen/html/html/classSVF_1_1AccessPath.html +179 -124
  87. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  88. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1AddressValue.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +69 -69
  94. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  95. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +52 -52
  96. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  97. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTO.html +1 -1
  98. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTOCycle.html +1 -1
  99. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +9 -9
  101. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  102. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +36 -36
  103. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +98 -98
  104. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1ConsExeState.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +8 -8
  107. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
  108. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  110. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +1 -1
  111. package/SVF-doxygen/html/html/classSVF_1_1CxtDPItem.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  113. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  114. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +1 -1
  115. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
  116. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +1 -1
  118. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +51 -56
  120. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  122. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +96 -95
  126. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +55 -20
  127. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  128. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +3 -3
  129. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +3 -3
  130. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
  131. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  132. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +1 -1
  135. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +19 -19
  139. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  141. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +3 -3
  147. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +48 -48
  148. package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  150. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  151. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
  154. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +47 -47
  155. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
  156. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1RelExeState.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  160. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +36 -36
  161. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +2 -2
  163. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +1 -1
  166. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +14 -14
  167. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ConsExeState.html +49 -49
  168. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState-members.html +45 -42
  169. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +962 -780
  170. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +21 -22
  171. package/SVF-doxygen/html/html/classSVF_1_1SVFIRReader.html +2 -2
  172. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +1 -1
  173. package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +24 -24
  175. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +8 -8
  176. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +39 -39
  177. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1SymState.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +51 -61
  182. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +23 -23
  184. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +22 -22
  185. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +45 -45
  186. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +15 -15
  188. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +1 -1
  190. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +1 -1
  194. package/SVF-doxygen/html/html/extapi_8c.html +1487 -302
  195. package/SVF-doxygen/html/html/extapi_8c_source.html +1120 -1164
  196. package/SVF-doxygen/html/html/functions_a.html +14 -11
  197. package/SVF-doxygen/html/html/functions_c.html +24 -21
  198. package/SVF-doxygen/html/html/functions_f.html +3 -3
  199. package/SVF-doxygen/html/html/functions_func.html +9 -6
  200. package/SVF-doxygen/html/html/functions_func_c.html +19 -16
  201. package/SVF-doxygen/html/html/functions_func_g.html +24 -15
  202. package/SVF-doxygen/html/html/functions_func_h.html +1 -1
  203. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  204. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  205. package/SVF-doxygen/html/html/functions_g.html +24 -15
  206. package/SVF-doxygen/html/html/functions_h.html +1 -1
  207. package/SVF-doxygen/html/html/functions_i.html +3 -3
  208. package/SVF-doxygen/html/html/functions_l.html +5 -5
  209. package/SVF-doxygen/html/html/functions_o.html +7 -7
  210. package/SVF-doxygen/html/html/functions_p.html +12 -12
  211. package/SVF-doxygen/html/html/functions_r.html +4 -2
  212. package/SVF-doxygen/html/html/functions_s.html +18 -18
  213. package/SVF-doxygen/html/html/functions_v.html +6 -6
  214. package/SVF-doxygen/html/html/functions_w.html +9 -9
  215. package/SVF-doxygen/html/html/globals.html +20 -2
  216. package/SVF-doxygen/html/html/globals_a.html +3 -0
  217. package/SVF-doxygen/html/html/globals_b.html +10 -4
  218. package/SVF-doxygen/html/html/globals_c.html +8 -4
  219. package/SVF-doxygen/html/html/globals_d.html +9 -0
  220. package/SVF-doxygen/html/html/globals_defs.html +3 -0
  221. package/SVF-doxygen/html/html/globals_func.html +18 -399
  222. package/SVF-doxygen/html/html/globals_func_a.html +91 -0
  223. package/SVF-doxygen/html/html/globals_func_b.html +14 -20
  224. package/SVF-doxygen/html/html/globals_func_c.html +16 -849
  225. package/SVF-doxygen/html/html/globals_func_d.html +14 -275
  226. package/SVF-doxygen/html/html/globals_func_e.html +8 -97
  227. package/SVF-doxygen/html/html/globals_func_f.html +17 -20
  228. package/SVF-doxygen/html/html/globals_func_g.html +72 -25
  229. package/SVF-doxygen/html/html/globals_func_h.html +9 -6
  230. package/SVF-doxygen/html/html/globals_func_i.html +49 -31
  231. package/SVF-doxygen/html/html/globals_func_j.html +79 -0
  232. package/SVF-doxygen/html/html/globals_func_l.html +15 -9
  233. package/SVF-doxygen/html/html/globals_func_m.html +13 -87
  234. package/SVF-doxygen/html/html/globals_func_n.html +79 -0
  235. package/SVF-doxygen/html/html/globals_func_p.html +13 -22
  236. package/SVF-doxygen/html/html/globals_func_r.html +16 -28
  237. package/SVF-doxygen/html/html/globals_func_s.html +32 -128
  238. package/SVF-doxygen/html/html/globals_func_t.html +18 -9
  239. package/SVF-doxygen/html/html/globals_func_u.html +8 -18
  240. package/SVF-doxygen/html/html/globals_func_w.html +8 -5
  241. package/SVF-doxygen/html/html/globals_func_z.html +10 -73
  242. package/SVF-doxygen/html/html/globals_g.html +54 -0
  243. package/SVF-doxygen/html/html/globals_l.html +6 -0
  244. package/SVF-doxygen/html/html/globals_n.html +5 -2
  245. package/SVF-doxygen/html/html/globals_p.html +4 -1
  246. package/SVF-doxygen/html/html/globals_r.html +11 -8
  247. package/SVF-doxygen/html/html/globals_s.html +6 -0
  248. package/SVF-doxygen/html/html/globals_t.html +6 -0
  249. package/SVF-doxygen/html/html/globals_z.html +3 -0
  250. package/SVF-doxygen/html/html/iterator_8h_source.html +1 -1
  251. package/SVF-doxygen/html/html/iterator__range_8h_source.html +1 -1
  252. package/SVF-doxygen/html/html/menudata.js +20 -17
  253. package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
  254. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +1058 -1014
  255. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +206 -383
  256. package/SVF-doxygen/html/html/namespacemembers_func_i.html +2 -11
  257. package/SVF-doxygen/html/html/namespacemembers_func_s.html +3 -0
  258. package/SVF-doxygen/html/html/namespacemembers_i.html +5 -14
  259. package/SVF-doxygen/html/html/namespacemembers_s.html +3 -0
  260. package/SVF-doxygen/html/html/search/all_0.js +158 -152
  261. package/SVF-doxygen/html/html/search/all_1.js +478 -476
  262. package/SVF-doxygen/html/html/search/all_10.js +324 -323
  263. package/SVF-doxygen/html/html/search/all_11.js +213 -212
  264. package/SVF-doxygen/html/html/search/all_12.js +539 -536
  265. package/SVF-doxygen/html/html/search/all_13.js +190 -188
  266. package/SVF-doxygen/html/html/search/all_14.js +66 -66
  267. package/SVF-doxygen/html/html/search/all_15.js +170 -170
  268. package/SVF-doxygen/html/html/search/all_16.js +60 -60
  269. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  270. package/SVF-doxygen/html/html/search/all_18.js +1 -1
  271. package/SVF-doxygen/html/html/search/all_19.js +11 -10
  272. package/SVF-doxygen/html/html/search/all_1a.js +169 -169
  273. package/SVF-doxygen/html/html/search/all_2.js +161 -159
  274. package/SVF-doxygen/html/html/search/all_3.js +628 -626
  275. package/SVF-doxygen/html/html/search/all_4.js +229 -226
  276. package/SVF-doxygen/html/html/search/all_5.js +117 -117
  277. package/SVF-doxygen/html/html/search/all_6.js +224 -224
  278. package/SVF-doxygen/html/html/search/all_7.js +1020 -999
  279. package/SVF-doxygen/html/html/search/all_8.js +191 -191
  280. package/SVF-doxygen/html/html/search/all_9.js +602 -605
  281. package/SVF-doxygen/html/html/search/all_a.js +46 -46
  282. package/SVF-doxygen/html/html/search/all_b.js +26 -26
  283. package/SVF-doxygen/html/html/search/all_c.js +116 -114
  284. package/SVF-doxygen/html/html/search/all_d.js +196 -196
  285. package/SVF-doxygen/html/html/search/all_e.js +206 -205
  286. package/SVF-doxygen/html/html/search/all_f.js +116 -116
  287. package/SVF-doxygen/html/html/search/classes_0.js +26 -26
  288. package/SVF-doxygen/html/html/search/classes_1.js +9 -9
  289. package/SVF-doxygen/html/html/search/classes_10.js +73 -73
  290. package/SVF-doxygen/html/html/search/classes_11.js +15 -15
  291. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  292. package/SVF-doxygen/html/html/search/classes_13.js +10 -10
  293. package/SVF-doxygen/html/html/search/classes_14.js +14 -14
  294. package/SVF-doxygen/html/html/search/classes_15.js +1 -1
  295. package/SVF-doxygen/html/html/search/classes_2.js +76 -76
  296. package/SVF-doxygen/html/html/search/classes_3.js +35 -35
  297. package/SVF-doxygen/html/html/search/classes_4.js +8 -8
  298. package/SVF-doxygen/html/html/search/classes_5.js +28 -28
  299. package/SVF-doxygen/html/html/search/classes_6.js +98 -98
  300. package/SVF-doxygen/html/html/search/classes_7.js +33 -33
  301. package/SVF-doxygen/html/html/search/classes_8.js +56 -56
  302. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  303. package/SVF-doxygen/html/html/search/classes_a.js +12 -12
  304. package/SVF-doxygen/html/html/search/classes_b.js +29 -29
  305. package/SVF-doxygen/html/html/search/classes_c.js +6 -6
  306. package/SVF-doxygen/html/html/search/classes_d.js +18 -18
  307. package/SVF-doxygen/html/html/search/classes_e.js +36 -36
  308. package/SVF-doxygen/html/html/search/classes_f.js +25 -25
  309. package/SVF-doxygen/html/html/search/defines_0.js +3 -3
  310. package/SVF-doxygen/html/html/search/defines_1.js +2 -2
  311. package/SVF-doxygen/html/html/search/defines_2.js +30 -30
  312. package/SVF-doxygen/html/html/search/defines_3.js +20 -20
  313. package/SVF-doxygen/html/html/search/defines_4.js +3 -3
  314. package/SVF-doxygen/html/html/search/defines_5.js +4 -4
  315. package/SVF-doxygen/html/html/search/defines_6.js +2 -2
  316. package/SVF-doxygen/html/html/search/defines_7.js +5 -5
  317. package/SVF-doxygen/html/html/search/defines_8.js +11 -11
  318. package/SVF-doxygen/html/html/search/defines_9.js +9 -9
  319. package/SVF-doxygen/html/html/search/defines_a.js +2 -2
  320. package/SVF-doxygen/html/html/search/defines_b.js +1 -1
  321. package/SVF-doxygen/html/html/search/defines_c.js +3 -3
  322. package/SVF-doxygen/html/html/search/defines_d.js +2 -2
  323. package/SVF-doxygen/html/html/search/defines_e.js +7 -6
  324. package/SVF-doxygen/html/html/search/defines_f.js +3 -3
  325. package/SVF-doxygen/html/html/search/enums_0.js +3 -3
  326. package/SVF-doxygen/html/html/search/enums_1.js +2 -2
  327. package/SVF-doxygen/html/html/search/enums_10.js +1 -1
  328. package/SVF-doxygen/html/html/search/enums_11.js +1 -1
  329. package/SVF-doxygen/html/html/search/enums_2.js +8 -8
  330. package/SVF-doxygen/html/html/search/enums_3.js +1 -1
  331. package/SVF-doxygen/html/html/search/enums_4.js +3 -3
  332. package/SVF-doxygen/html/html/search/enums_5.js +1 -1
  333. package/SVF-doxygen/html/html/search/enums_6.js +2 -2
  334. package/SVF-doxygen/html/html/search/enums_7.js +2 -2
  335. package/SVF-doxygen/html/html/search/enums_8.js +4 -4
  336. package/SVF-doxygen/html/html/search/enums_9.js +1 -1
  337. package/SVF-doxygen/html/html/search/enums_a.js +1 -1
  338. package/SVF-doxygen/html/html/search/enums_b.js +7 -7
  339. package/SVF-doxygen/html/html/search/enums_c.js +1 -1
  340. package/SVF-doxygen/html/html/search/enums_d.js +4 -4
  341. package/SVF-doxygen/html/html/search/enums_e.js +2 -2
  342. package/SVF-doxygen/html/html/search/enums_f.js +4 -4
  343. package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
  344. package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
  345. package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
  346. package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
  347. package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
  348. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  349. package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
  350. package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
  351. package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -36
  352. package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
  353. package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -2
  354. package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -47
  355. package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
  356. package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
  357. package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
  358. package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
  359. package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -15
  360. package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
  361. package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -5
  362. package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
  363. package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -9
  364. package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
  365. package/SVF-doxygen/html/html/search/files_0.js +13 -13
  366. package/SVF-doxygen/html/html/search/files_1.js +7 -7
  367. package/SVF-doxygen/html/html/search/files_10.js +8 -8
  368. package/SVF-doxygen/html/html/search/files_11.js +8 -8
  369. package/SVF-doxygen/html/html/search/files_12.js +2 -2
  370. package/SVF-doxygen/html/html/search/files_2.js +49 -49
  371. package/SVF-doxygen/html/html/search/files_3.js +14 -14
  372. package/SVF-doxygen/html/html/search/files_4.js +5 -5
  373. package/SVF-doxygen/html/html/search/files_5.js +13 -13
  374. package/SVF-doxygen/html/html/search/files_6.js +9 -9
  375. package/SVF-doxygen/html/html/search/files_7.js +14 -14
  376. package/SVF-doxygen/html/html/search/files_8.js +13 -13
  377. package/SVF-doxygen/html/html/search/files_9.js +18 -18
  378. package/SVF-doxygen/html/html/search/files_a.js +3 -3
  379. package/SVF-doxygen/html/html/search/files_b.js +2 -2
  380. package/SVF-doxygen/html/html/search/files_c.js +20 -20
  381. package/SVF-doxygen/html/html/search/files_d.js +4 -4
  382. package/SVF-doxygen/html/html/search/files_e.js +62 -62
  383. package/SVF-doxygen/html/html/search/files_f.js +8 -8
  384. package/SVF-doxygen/html/html/search/functions_0.js +12 -6
  385. package/SVF-doxygen/html/html/search/functions_1.js +350 -348
  386. package/SVF-doxygen/html/html/search/functions_10.js +140 -139
  387. package/SVF-doxygen/html/html/search/functions_11.js +127 -126
  388. package/SVF-doxygen/html/html/search/functions_12.js +275 -273
  389. package/SVF-doxygen/html/html/search/functions_13.js +58 -56
  390. package/SVF-doxygen/html/html/search/functions_14.js +38 -38
  391. package/SVF-doxygen/html/html/search/functions_15.js +71 -71
  392. package/SVF-doxygen/html/html/search/functions_16.js +29 -29
  393. package/SVF-doxygen/html/html/search/functions_17.js +3 -2
  394. package/SVF-doxygen/html/html/search/functions_18.js +169 -169
  395. package/SVF-doxygen/html/html/search/functions_2.js +84 -82
  396. package/SVF-doxygen/html/html/search/functions_3.js +253 -251
  397. package/SVF-doxygen/html/html/search/functions_4.js +74 -71
  398. package/SVF-doxygen/html/html/search/functions_5.js +51 -51
  399. package/SVF-doxygen/html/html/search/functions_6.js +58 -58
  400. package/SVF-doxygen/html/html/search/functions_7.js +840 -819
  401. package/SVF-doxygen/html/html/search/functions_8.js +143 -143
  402. package/SVF-doxygen/html/html/search/functions_9.js +422 -425
  403. package/SVF-doxygen/html/html/search/functions_a.js +30 -30
  404. package/SVF-doxygen/html/html/search/functions_b.js +2 -2
  405. package/SVF-doxygen/html/html/search/functions_c.js +26 -24
  406. package/SVF-doxygen/html/html/search/functions_d.js +77 -77
  407. package/SVF-doxygen/html/html/search/functions_e.js +35 -34
  408. package/SVF-doxygen/html/html/search/functions_f.js +56 -56
  409. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  410. package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
  411. package/SVF-doxygen/html/html/search/related_0.js +2 -2
  412. package/SVF-doxygen/html/html/search/related_1.js +1 -1
  413. package/SVF-doxygen/html/html/search/related_2.js +2 -2
  414. package/SVF-doxygen/html/html/search/related_3.js +2 -2
  415. package/SVF-doxygen/html/html/search/related_4.js +2 -2
  416. package/SVF-doxygen/html/html/search/related_5.js +1 -1
  417. package/SVF-doxygen/html/html/search/related_6.js +2 -2
  418. package/SVF-doxygen/html/html/search/related_7.js +4 -4
  419. package/SVF-doxygen/html/html/search/related_8.js +2 -2
  420. package/SVF-doxygen/html/html/search/related_9.js +4 -4
  421. package/SVF-doxygen/html/html/search/related_a.js +19 -19
  422. package/SVF-doxygen/html/html/search/related_b.js +4 -4
  423. package/SVF-doxygen/html/html/search/related_c.js +1 -1
  424. package/SVF-doxygen/html/html/search/related_d.js +11 -11
  425. package/SVF-doxygen/html/html/search/related_e.js +2 -2
  426. package/SVF-doxygen/html/html/search/related_f.js +2 -2
  427. package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
  428. package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
  429. package/SVF-doxygen/html/html/search/typedefs_10.js +60 -60
  430. package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
  431. package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
  432. package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
  433. package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
  434. package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
  435. package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
  436. package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
  437. package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
  438. package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
  439. package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
  440. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  441. package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
  442. package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
  443. package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
  444. package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
  445. package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
  446. package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
  447. package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
  448. package/SVF-doxygen/html/html/search/variables_0.js +147 -147
  449. package/SVF-doxygen/html/html/search/variables_1.js +75 -75
  450. package/SVF-doxygen/html/html/search/variables_10.js +97 -97
  451. package/SVF-doxygen/html/html/search/variables_11.js +46 -46
  452. package/SVF-doxygen/html/html/search/variables_12.js +92 -92
  453. package/SVF-doxygen/html/html/search/variables_13.js +75 -75
  454. package/SVF-doxygen/html/html/search/variables_14.js +14 -14
  455. package/SVF-doxygen/html/html/search/variables_15.js +48 -48
  456. package/SVF-doxygen/html/html/search/variables_16.js +9 -9
  457. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  458. package/SVF-doxygen/html/html/search/variables_18.js +2 -2
  459. package/SVF-doxygen/html/html/search/variables_2.js +34 -34
  460. package/SVF-doxygen/html/html/search/variables_3.js +141 -141
  461. package/SVF-doxygen/html/html/search/variables_4.js +55 -55
  462. package/SVF-doxygen/html/html/search/variables_5.js +38 -38
  463. package/SVF-doxygen/html/html/search/variables_6.js +66 -66
  464. package/SVF-doxygen/html/html/search/variables_7.js +33 -33
  465. package/SVF-doxygen/html/html/search/variables_8.js +7 -7
  466. package/SVF-doxygen/html/html/search/variables_9.js +77 -77
  467. package/SVF-doxygen/html/html/search/variables_a.js +4 -4
  468. package/SVF-doxygen/html/html/search/variables_b.js +10 -10
  469. package/SVF-doxygen/html/html/search/variables_c.js +45 -45
  470. package/SVF-doxygen/html/html/search/variables_d.js +56 -56
  471. package/SVF-doxygen/html/html/search/variables_e.js +123 -123
  472. package/SVF-doxygen/html/html/search/variables_f.js +30 -30
  473. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  474. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  475. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__iterable.html +1 -1
  476. 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
  477. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map.html +1 -1
  478. 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
  479. 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
  480. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container.html +1 -1
  481. 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
  482. 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
  483. 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
  484. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set.html +1 -1
  485. 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
  486. 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
  487. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1make__void.html +2 -2
  488. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +8 -8
  489. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  490. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  491. package/package.json +1 -1
  492. package/svf/include/AbstractExecution/SVFIR2ItvExeState.h +14 -0
  493. package/svf/include/MemoryModel/AccessPath.h +6 -0
  494. package/svf/include/SVFIR/SVFStatements.h +10 -0
  495. package/svf/include/Util/SVFUtil.h +0 -34
  496. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +154 -75
  497. package/svf/lib/MemoryModel/AccessPath.cpp +39 -0
  498. package/svf/lib/Util/ExtAPI.cpp +0 -6
  499. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +19 -2
  500. package/svf-llvm/lib/LLVMUtil.cpp +0 -2
  501. package/svf-llvm/lib/SVFIRExtAPI.cpp +1 -1
  502. package/svf-llvm/lib/SymbolTableBuilder.cpp +0 -9
  503. package/svf-llvm/lib/extapi.c +210 -295
@@ -210,6 +210,8 @@ Functions</h2></td></tr>
210
210
  <tr class="separator:a8cd4d6410017b9e5f47f2f88450b78d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
211
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
212
  <tr class="separator:a523a8c3f9bfaea178733822ac598d552"><td class="memSeparator" colspan="2">&#160;</td></tr>
213
+ <tr class="memitem:a276a85b292038a197a525e08e9252c92"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a276a85b292038a197a525e08e9252c92">SVFType2ByteSize</a> (const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> *<a class="el" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</td></tr>
214
+ <tr class="separator:a276a85b292038a197a525e08e9252c92"><td class="memSeparator" colspan="2">&#160;</td></tr>
213
215
  <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
216
  <tr class="separator:a74ed17168bf5946cfb3f17495ec6db99"><td class="memSeparator" colspan="2">&#160;</td></tr>
215
217
  <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>
@@ -356,40 +358,40 @@ Functions</h2></td></tr>
356
358
  </div><div class="memdoc">
357
359
  <p>Return true if the function has a return instruction reachable from function entry </p>
358
360
 
359
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00106">106</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
360
- <div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;{</div>
361
- <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(fun);</div>
362
- <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun))</div>
363
- <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div>
364
- <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#af264312f0020bde9151697bccfde3263">getReturnType</a>()-&gt;isVoidTy();</div>
365
- <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div>
366
- <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; std::vector&lt;const BasicBlock*&gt; bbVec;</div>
367
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const BasicBlock*&gt;</a> visited;</div>
368
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; bbVec.push_back(&amp;fun-&gt;getEntryBlock());</div>
369
- <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">while</span>(!bbVec.empty())</div>
370
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div>
371
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div>
372
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; bbVec.pop_back();</div>
373
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb-&gt;begin(), eit = bb-&gt;end();</div>
374
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; it != eit; ++it)</div>
375
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div>
376
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ReturnInst&gt;(*it))</div>
377
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
378
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
379
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
380
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> sit = succ_begin(bb), esit = succ_end(bb);</div>
381
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; sit != esit; ++sit)</div>
382
- <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div>
383
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*sit);</div>
384
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div>
385
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; visited.insert(succbb);</div>
386
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">else</span></div>
387
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">continue</span>;</div>
388
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; bbVec.push_back(succbb);</div>
389
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div>
390
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
391
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
392
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div>
361
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00104">104</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
362
+ <div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;{</div>
363
+ <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(fun);</div>
364
+ <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun))</div>
365
+ <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div>
366
+ <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#af264312f0020bde9151697bccfde3263">getReturnType</a>()-&gt;isVoidTy();</div>
367
+ <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div>
368
+ <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; std::vector&lt;const BasicBlock*&gt; bbVec;</div>
369
+ <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const BasicBlock*&gt;</a> visited;</div>
370
+ <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; bbVec.push_back(&amp;fun-&gt;getEntryBlock());</div>
371
+ <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">while</span>(!bbVec.empty())</div>
372
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div>
373
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div>
374
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; bbVec.pop_back();</div>
375
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb-&gt;begin(), eit = bb-&gt;end();</div>
376
+ <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; it != eit; ++it)</div>
377
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div>
378
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ReturnInst&gt;(*it))</div>
379
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
380
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div>
381
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; </div>
382
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> sit = succ_begin(bb), esit = succ_end(bb);</div>
383
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; sit != esit; ++sit)</div>
384
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
385
+ <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*sit);</div>
386
+ <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div>
387
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; visited.insert(succbb);</div>
388
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span></div>
389
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">continue</span>;</div>
390
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; bbVec.push_back(succbb);</div>
391
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
392
+ <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
393
+ <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
394
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div>
393
395
  </div><!-- fragment -->
394
396
  </div>
395
397
  </div>
@@ -412,13 +414,13 @@ Functions</h2></td></tr>
412
414
  <p>Get num of BB's predecessors. </p>
413
415
  <p>Get the num of BB's predecessors </p>
414
416
 
415
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00389">389</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
416
- <div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;{</div>
417
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div>
418
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div>
419
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; num++;</div>
420
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> num;</div>
421
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;}</div>
417
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00387">387</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
418
+ <div class="fragment"><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;{</div>
419
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div>
420
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div>
421
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; num++;</div>
422
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span> num;</div>
423
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;}</div>
422
424
  </div><!-- fragment -->
423
425
  </div>
424
426
  </div>
@@ -440,24 +442,24 @@ Functions</h2></td></tr>
440
442
 
441
443
  <p>Get all called funcions in a parent function. </p>
442
444
 
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>
445
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00547">547</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
446
+ <div class="fragment"><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;{</div>
447
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; std::vector&lt;const Function *&gt; calledFunctions;</div>
448
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</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>
449
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {</div>
450
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</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>
451
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {</div>
452
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *calledFunction = callInst-&gt;getCalledFunction();</div>
453
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">if</span> (calledFunction)</div>
454
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; {</div>
455
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; calledFunctions.push_back(calledFunction);</div>
456
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; std::vector&lt;const Function *&gt; nestedCalledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a>(calledFunction);</div>
457
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
458
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div>
459
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div>
460
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div>
461
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> calledFunctions;</div>
462
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;}</div>
461
463
  </div><!-- fragment -->
462
464
  </div>
463
465
  </div>
@@ -510,29 +512,29 @@ Functions</h2></td></tr>
510
512
  </table>
511
513
  </div><div class="memdoc">
512
514
 
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>
515
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01070">1070</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
516
+ <div class="fragment"><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;{</div>
517
+ <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <span class="stringliteral">&quot;&quot;</span>;</div>
518
+ <div class="line"><a name="l01073"></a><span class="lineno"> 1073</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>
519
+ <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; {</div>
520
+ <div class="line"><a name="l01075"></a><span class="lineno"> 1075</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>
521
+ <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(elemType) &amp;&amp;</div>
522
+ <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; !((SVFUtil::cast&lt;StructType&gt;(elemType))-&gt;isLiteral()))</div>
523
+ <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; {</div>
524
+ <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> elemTypeName = elemType-&gt;getStructName().str();</div>
525
+ <div class="line"><a name="l01080"></a><span class="lineno"> 1080</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>
526
+ <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; {</div>
527
+ <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size());</div>
528
+ <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; }</div>
529
+ <div class="line"><a name="l01084"></a><span class="lineno"> 1084</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>
530
+ <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; 0)</div>
531
+ <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; {</div>
532
+ <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size());</div>
533
+ <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; }</div>
534
+ <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; }</div>
535
+ <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; }</div>
536
+ <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordflow">return</span> className;</div>
537
+ <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;}</div>
536
538
  </div><!-- fragment -->
537
539
  </div>
538
540
  </div>
@@ -552,32 +554,32 @@ Functions</h2></td></tr>
552
554
  </table>
553
555
  </div><div class="memdoc">
554
556
 
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>
557
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01094">1094</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
558
+ <div class="fragment"><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;{</div>
559
+ <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> thisPtrClassName;</div>
560
+ <div class="line"><a name="l01097"></a><span class="lineno"> 1097</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>
561
+ <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; {</div>
562
+ <div class="line"><a name="l01099"></a><span class="lineno"> 1099</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>
563
+ <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; thisPtrClassName = mdstr-&gt;getString().str();</div>
564
+ <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; }</div>
565
+ <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">if</span> (thisPtrClassName.size() == 0)</div>
566
+ <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; {</div>
567
+ <div class="line"><a name="l01104"></a><span class="lineno"> 1104</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>
568
+ <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; thisPtrClassName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">getClassNameFromType</a>(thisPtr-&gt;getType());</div>
569
+ <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; }</div>
570
+ <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; </div>
571
+ <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordtype">size_t</span> found = thisPtrClassName.find_last_not_of(<span class="stringliteral">&quot;0123456789&quot;</span>);</div>
572
+ <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="keywordflow">if</span> (found != std::string::npos)</div>
573
+ <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; {</div>
574
+ <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="keywordflow">if</span> (found != thisPtrClassName.size() - 1 &amp;&amp;</div>
575
+ <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; thisPtrClassName[found] == <span class="charliteral">&#39;.&#39;</span>)</div>
576
+ <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; {</div>
577
+ <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">return</span> thisPtrClassName.substr(0, found);</div>
578
+ <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; }</div>
579
+ <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</div>
580
+ <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; </div>
581
+ <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keywordflow">return</span> thisPtrClassName;</div>
582
+ <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;}</div>
581
583
  </div><!-- fragment -->
582
584
  </div>
583
585
  </div>
@@ -597,14 +599,14 @@ Functions</h2></td></tr>
597
599
  </table>
598
600
  </div><div class="memdoc">
599
601
 
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>
602
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00962">962</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
603
+ <div class="fragment"><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;{</div>
604
+ <div class="line"><a name="l00964"></a><span class="lineno"> 964</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>
605
+ <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="stringliteral">&quot;not a constructor?&quot;</span>);</div>
606
+ <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; assert(fun-&gt;arg_size() &gt;= 1 &amp;&amp; <span class="stringliteral">&quot;argument size &gt;= 1?&quot;</span>);</div>
607
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr = &amp;*(fun-&gt;arg_begin());</div>
608
+ <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">return</span> thisPtr;</div>
609
+ <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160;}</div>
608
610
  </div><!-- fragment -->
609
611
  </div>
610
612
  </div>
@@ -696,46 +698,46 @@ Functions</h2></td></tr>
696
698
  </table>
697
699
  </div><div class="memdoc">
698
700
 
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>
701
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00444">444</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
702
+ <div class="fragment"><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;{</div>
703
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; std::vector&lt;std::string&gt; annotations;</div>
704
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="comment">// Get annotation variable</span></div>
705
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</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>
706
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
707
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">return</span> annotations;</div>
708
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; </div>
709
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
710
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
711
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> annotations;</div>
712
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; </div>
713
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
714
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; {</div>
715
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
716
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
717
+ <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">continue</span>;</div>
718
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; </div>
719
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0));</div>
720
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">if</span> (expr == <span class="keyword">nullptr</span> || expr-&gt;getOpcode() != Instruction::BitCast || expr-&gt;getOperand(0) != fun)</div>
721
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">continue</span>;</div>
722
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; </div>
723
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *note = SVFUtil::cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(1));</div>
724
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">if</span> (note-&gt;getOpcode() != Instruction::GetElementPtr)</div>
725
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">continue</span>;</div>
726
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; </div>
727
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *annotateStr = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(note-&gt;getOperand(0));</div>
728
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> (annotateStr == <span class="keyword">nullptr</span> || !annotateStr-&gt;hasInitializer())</div>
729
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">continue</span>;</div>
730
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; </div>
731
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a> *data = SVFUtil::dyn_cast&lt;ConstantDataSequential&gt;(annotateStr-&gt;getInitializer());</div>
732
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span> (data-&gt;isString())</div>
733
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; {</div>
734
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> annotation = data-&gt;getAsString().str();</div>
735
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">if</span> (!annotation.empty())</div>
736
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; annotations.push_back(annotation);</div>
737
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; }</div>
738
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div>
739
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">return</span> annotations;</div>
740
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;}</div>
739
741
  </div><!-- fragment -->
740
742
  </div>
741
743
  </div>
@@ -765,10 +767,10 @@ Functions</h2></td></tr>
765
767
 
766
768
  <p>Get the corresponding Function based on its name. </p>
767
769
 
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>
770
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00407">407</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
771
+ <div class="fragment"><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;{</div>
772
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
773
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;}</div>
772
774
  </div><!-- fragment -->
773
775
  </div>
774
776
  </div>
@@ -788,16 +790,16 @@ Functions</h2></td></tr>
788
790
  </table>
789
791
  </div><div class="memdoc">
790
792
 
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>
793
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01121">1121</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
794
+ <div class="fragment"><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;{</div>
795
+ <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName;</div>
796
+ <div class="line"><a name="l01124"></a><span class="lineno"> 1124</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>
797
+ <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; {</div>
798
+ <div class="line"><a name="l01126"></a><span class="lineno"> 1126</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>
799
+ <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; funName = mdstr-&gt;getString().str();</div>
800
+ <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; }</div>
801
+ <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keywordflow">return</span> funName;</div>
802
+ <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;}</div>
801
803
  </div><!-- fragment -->
802
804
  </div>
803
805
  </div>
@@ -830,37 +832,37 @@ Functions</h2></td></tr>
830
832
  <p>Get reachable basic block from function entry. </p>
831
833
  <p>Return reachable bbs from function entry </p>
832
834
 
833
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00071">71</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
834
- <div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;{</div>
835
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; assert(!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(fun)) &amp;&amp; <span class="stringliteral">&quot;The calling function cannot be an external function.&quot;</span>);</div>
836
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">//initial DominatorTree</span></div>
837
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
838
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; dt.recalculate(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp;<span class="keyword">&gt;</span>(*fun));</div>
839
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
840
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const BasicBlock*&gt;</a> visited;</div>
841
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; std::vector&lt;const BasicBlock*&gt; bbVec;</div>
842
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; bbVec.push_back(&amp;fun-&gt;getEntryBlock());</div>
843
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">while</span>(!bbVec.empty())</div>
844
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div>
845
- <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div>
846
- <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; bbVec.pop_back();</div>
847
- <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfbb = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFBasicBlock(bb);</div>
848
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; reachableBBs.push_back(svfbb);</div>
849
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> *dtNode = dt.getNode(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>*<span class="keyword">&gt;</span>(bb)))</div>
850
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div>
851
- <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span> (DomTreeNode::iterator DI = dtNode-&gt;begin(), DE = dtNode-&gt;end();</div>
852
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; DI != DE; ++DI)</div>
853
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div>
854
- <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*DI)-&gt;getBlock();</div>
855
- <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div>
856
- <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; visited.insert(succbb);</div>
857
- <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">else</span></div>
858
- <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">continue</span>;</div>
859
- <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; bbVec.push_back(succbb);</div>
860
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div>
861
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div>
862
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div>
863
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div>
835
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00069">69</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
836
+ <div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div>
837
+ <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; assert(!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(fun)) &amp;&amp; <span class="stringliteral">&quot;The calling function cannot be an external function.&quot;</span>);</div>
838
+ <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">//initial DominatorTree</span></div>
839
+ <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
840
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; dt.recalculate(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp;<span class="keyword">&gt;</span>(*fun));</div>
841
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
842
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const BasicBlock*&gt;</a> visited;</div>
843
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; std::vector&lt;const BasicBlock*&gt; bbVec;</div>
844
+ <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; bbVec.push_back(&amp;fun-&gt;getEntryBlock());</div>
845
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">while</span>(!bbVec.empty())</div>
846
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div>
847
+ <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div>
848
+ <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; bbVec.pop_back();</div>
849
+ <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfbb = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFBasicBlock(bb);</div>
850
+ <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; reachableBBs.push_back(svfbb);</div>
851
+ <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> *dtNode = dt.getNode(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>*<span class="keyword">&gt;</span>(bb)))</div>
852
+ <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div>
853
+ <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">for</span> (DomTreeNode::iterator DI = dtNode-&gt;begin(), DE = dtNode-&gt;end();</div>
854
+ <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; DI != DE; ++DI)</div>
855
+ <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div>
856
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*DI)-&gt;getBlock();</div>
857
+ <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div>
858
+ <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; visited.insert(succbb);</div>
859
+ <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">else</span></div>
860
+ <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">continue</span>;</div>
861
+ <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; bbVec.push_back(succbb);</div>
862
+ <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
863
+ <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div>
864
+ <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div>
865
+ <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;}</div>
864
866
  </div><!-- fragment -->
865
867
  </div>
866
868
  </div>
@@ -890,15 +892,15 @@ Functions</h2></td></tr>
890
892
 
891
893
  <p>find the unique defined global across multiple modules </p>
892
894
 
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>
895
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00420">420</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
896
+ <div class="fragment"><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;{</div>
897
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</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>
898
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div>
899
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()-&gt;hasGlobalRep(gvar))</div>
900
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; val = LLVMModuleSet::getLLVMModuleSet()-&gt;getGlobalRep(gvar);</div>
901
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
902
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> val;</div>
903
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;}</div>
902
904
  </div><!-- fragment -->
903
905
  </div>
904
906
  </div>
@@ -997,30 +999,30 @@ Functions</h2></td></tr>
997
999
 
998
1000
  <p>Get the next instructions following control flow. </p>
999
1001
 
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>
1002
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00711">711</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1003
+ <div class="fragment"><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;{</div>
1004
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
1005
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; {</div>
1006
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
1007
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1008
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1009
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">else</span></div>
1010
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; instList.push_back(nextInst);</div>
1011
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div>
1012
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">else</span></div>
1013
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; {</div>
1014
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
1015
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1016
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</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>
1017
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; {</div>
1018
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
1019
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1020
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1021
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">else</span></div>
1022
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; instList.push_back(nextInst);</div>
1023
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; }</div>
1024
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; }</div>
1025
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;}</div>
1024
1026
  </div><!-- fragment -->
1025
1027
  </div>
1026
1028
  </div>
@@ -1052,32 +1054,32 @@ Functions</h2></td></tr>
1052
1054
 
1053
1055
  <p>Get the next instructions following control flow. </p>
1054
1056
 
1055
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00277">277</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1056
- <div class="fragment"><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div>
1057
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
1058
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div>
1059
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
1060
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(nextInst);</div>
1061
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1062
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1063
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">else</span></div>
1064
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; instList.push_back(svfNextInst);</div>
1065
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div>
1066
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">else</span></div>
1067
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; {</div>
1068
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst-&gt;getParent();</div>
1069
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1070
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</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>
1071
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div>
1072
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
1073
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(nextInst);</div>
1074
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1075
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1076
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">else</span></div>
1077
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; instList.push_back(svfNextInst);</div>
1078
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div>
1079
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div>
1080
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;}</div>
1057
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00275">275</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1058
+ <div class="fragment"><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;{</div>
1059
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
1060
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div>
1061
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
1062
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(nextInst);</div>
1063
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1064
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1065
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">else</span></div>
1066
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; instList.push_back(svfNextInst);</div>
1067
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div>
1068
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">else</span></div>
1069
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; {</div>
1070
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst-&gt;getParent();</div>
1071
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1072
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</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>
1073
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div>
1074
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
1075
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(nextInst);</div>
1076
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1077
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1078
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">else</span></div>
1079
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; instList.push_back(svfNextInst);</div>
1080
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div>
1081
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div>
1082
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;}</div>
1081
1083
  </div><!-- fragment -->
1082
1084
  </div>
1083
1085
  </div>
@@ -1109,30 +1111,30 @@ Functions</h2></td></tr>
1109
1111
 
1110
1112
  <p>Get the previous instructions following control flow. </p>
1111
1113
 
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>
1114
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00738">738</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1115
+ <div class="fragment"><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;{</div>
1116
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
1117
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div>
1118
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
1119
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1120
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1121
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">else</span></div>
1122
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; instList.push_back(prevInst);</div>
1123
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div>
1124
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">else</span></div>
1125
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div>
1126
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
1127
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1128
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</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>
1129
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; {</div>
1130
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
1131
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1132
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1133
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">else</span></div>
1134
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; instList.push_back(prevInst);</div>
1135
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div>
1136
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div>
1137
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;}</div>
1136
1138
  </div><!-- fragment -->
1137
1139
  </div>
1138
1140
  </div>
@@ -1164,33 +1166,33 @@ Functions</h2></td></tr>
1164
1166
 
1165
1167
  <p>Get the previous instructions following control flow. </p>
1166
1168
 
1167
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00306">306</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1168
- <div class="fragment"><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;{</div>
1169
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
1170
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
1171
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div>
1172
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
1173
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(prevInst);</div>
1174
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1175
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1176
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">else</span></div>
1177
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; instList.push_back(svfPrevInst);</div>
1178
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div>
1179
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">else</span></div>
1180
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div>
1181
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst-&gt;getParent();</div>
1182
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1183
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</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>
1184
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div>
1185
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
1186
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(prevInst);</div>
1187
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1188
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1189
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">else</span></div>
1190
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; instList.push_back(svfPrevInst);</div>
1191
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div>
1192
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div>
1193
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;}</div>
1169
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00304">304</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1170
+ <div class="fragment"><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;{</div>
1171
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; </div>
1172
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
1173
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div>
1174
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
1175
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(prevInst);</div>
1176
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1177
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1178
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">else</span></div>
1179
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; instList.push_back(svfPrevInst);</div>
1180
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div>
1181
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">else</span></div>
1182
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div>
1183
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst-&gt;getParent();</div>
1184
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1185
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</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>
1186
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div>
1187
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
1188
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(prevInst);</div>
1189
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1190
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1191
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">else</span></div>
1192
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; instList.push_back(svfPrevInst);</div>
1193
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div>
1194
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div>
1195
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;}</div>
1194
1196
  </div><!-- fragment -->
1195
1197
  </div>
1196
1198
  </div>
@@ -1310,10 +1312,10 @@ Functions</h2></td></tr>
1310
1312
  <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
1313
  <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
1314
  <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>
1315
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">// Case 2: heap object held by return value.</span></div>
1314
1316
  <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">else</span></div>
1315
1317
  <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>
1318
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfcs)</div>
1317
1319
  <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
1320
  <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
1321
  <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
@@ -1372,105 +1374,105 @@ Functions</h2></td></tr>
1372
1374
  </div><div class="memdoc">
1373
1375
  <p>Get the meta data (line number and file name) info of a LLVM value </p>
1374
1376
 
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>
1377
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00590">590</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1378
+ <div class="fragment"><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;{</div>
1379
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</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>
1380
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; </div>
1381
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1382
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; std::stringstream rawstr(str);</div>
1383
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
1384
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; </div>
1385
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</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>
1386
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; {</div>
1387
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div>
1388
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; {</div>
1389
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</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>
1390
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {</div>
1391
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</div>
1392
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div>
1393
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div>
1394
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</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>
1395
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">break</span>;</div>
1396
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div>
1397
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; }</div>
1398
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div>
1399
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</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>
1400
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; {</div>
1401
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
1402
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
1403
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
1404
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div>
1405
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
1406
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
1407
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; {</div>
1408
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
1409
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
1410
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; {</div>
1411
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; Line = inlineLoc-&gt;getLine();</div>
1412
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
1413
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
1414
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div>
1415
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div>
1416
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</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>
1417
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; }</div>
1418
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; }</div>
1419
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</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>
1420
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; {</div>
1421
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
1422
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div>
1423
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div>
1424
+ <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;nd&quot;</span>;</div>
1425
+ <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 == 3)</div>
1426
+ <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;rd&quot;</span>;</div>
1427
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">else</span></div>
1428
+ <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;th&quot;</span>;</div>
1429
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</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>
1430
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument-&gt;getParent());</div>
1431
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; }</div>
1432
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</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>
1433
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; {</div>
1434
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
1435
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</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>
1436
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
1437
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; {</div>
1438
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div>
1439
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div>
1440
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div>
1441
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</div>
1442
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; {</div>
1443
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
1444
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; </div>
1445
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div>
1446
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; {</div>
1447
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</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>
1448
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; }</div>
1449
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; </div>
1450
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div>
1451
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div>
1452
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div>
1453
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div>
1454
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</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>
1455
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; {</div>
1456
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
1457
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div>
1458
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</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>
1459
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; {</div>
1460
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</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>
1461
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; }</div>
1462
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</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>
1463
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; {</div>
1464
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div>
1465
+ <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; }</div>
1466
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">else</span></div>
1467
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div>
1468
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;N/A&quot;</span>;</div>
1469
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; }</div>
1470
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
1471
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; </div>
1472
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div>
1473
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
1474
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1475
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;}</div>
1474
1476
  </div><!-- fragment -->
1475
1477
  </div>
1476
1478
  </div>
@@ -1491,21 +1493,21 @@ Functions</h2></td></tr>
1491
1493
  </div><div class="memdoc">
1492
1494
  <p>Get source code line number of a function according to debug info </p>
1493
1495
 
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>
1496
+ <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>
1497
+ <div class="fragment"><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;{</div>
1498
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1499
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; std::stringstream rawstr(str);</div>
1500
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="comment">/*</span></div>
1501
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
1502
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;<span class="comment"> * looks like the relevant</span></div>
1503
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="comment"> */</span></div>
1504
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</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>
1505
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; {</div>
1506
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
1507
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</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>
1508
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; }</div>
1509
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1510
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;}</div>
1509
1511
  </div><!-- fragment -->
1510
1512
  </div>
1511
1513
  </div>
@@ -1525,27 +1527,27 @@ Functions</h2></td></tr>
1525
1527
  </table>
1526
1528
  </div><div class="memdoc">
1527
1529
 
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>
1530
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00890">890</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1531
+ <div class="fragment"><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;{</div>
1532
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* ret = <span class="keyword">nullptr</span>;</div>
1533
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; </div>
1534
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</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>
1535
+ <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; {</div>
1536
+ <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; inst : bb)</div>
1537
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; {</div>
1538
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</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>
1539
+ <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; {</div>
1540
+ <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="comment">// assert(cs.getCalledFunction() &amp;&amp;</span></div>
1541
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="comment">// &quot;Indirect call detected in thunk func&quot;);</span></div>
1542
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="comment">// assert(ret == nullptr &amp;&amp; &quot;multiple callsites in thunk func&quot;);</span></div>
1543
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; </div>
1544
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; ret = callbase-&gt;getCalledFunction();</div>
1545
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; }</div>
1546
+ <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; }</div>
1547
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; }</div>
1548
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; </div>
1549
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">return</span> ret;</div>
1550
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;}</div>
1549
1551
  </div><!-- fragment -->
1550
1552
  </div>
1551
1553
  </div>
@@ -1568,33 +1570,33 @@ Functions</h2></td></tr>
1568
1570
  <p>Get the type of the heap allocation. </p>
1569
1571
  <p>Return the type of the object from a heap allocation </p>
1570
1572
 
1571
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00358">358</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1572
- <div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;{</div>
1573
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast&lt;PointerType&gt;(inst-&gt;getType());</div>
1574
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(inst);</div>
1575
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfinst))</div>
1576
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; {</div>
1577
- <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* v = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">getUniqueUseViaCastInst</a>(inst))</div>
1578
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; {</div>
1579
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* newTy = SVFUtil::dyn_cast&lt;PointerType&gt;(v-&gt;getType()))</div>
1580
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = newTy;</div>
1581
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div>
1582
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div>
1583
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVFUtil::isHeapAllocExtCallViaArg</a>(svfinst))</div>
1584
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div>
1585
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</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">LLVMUtil::getLLVMCallSite</a>(inst);</div>
1586
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordtype">int</span> arg_pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVFUtil::getHeapAllocHoldingArgPosition</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(svfinst));</div>
1587
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* arg = cs-&gt;getArgOperand(arg_pos);</div>
1588
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast&lt;PointerType&gt;(arg-&gt;getType());</div>
1589
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
1590
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">else</span></div>
1591
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; {</div>
1592
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; assert( <span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not a heap allocation instruction?&quot;</span>);</div>
1593
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div>
1594
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; </div>
1595
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &amp;&amp; <span class="stringliteral">&quot;not a pointer type?&quot;</span>);</div>
1596
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>);</div>
1597
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;}</div>
1573
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00356">356</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1574
+ <div class="fragment"><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;{</div>
1575
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast&lt;PointerType&gt;(inst-&gt;getType());</div>
1576
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(inst);</div>
1577
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfinst))</div>
1578
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div>
1579
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* v = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">getUniqueUseViaCastInst</a>(inst))</div>
1580
+ <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; {</div>
1581
+ <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* newTy = SVFUtil::dyn_cast&lt;PointerType&gt;(v-&gt;getType()))</div>
1582
+ <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = newTy;</div>
1583
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div>
1584
+ <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div>
1585
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVFUtil::isHeapAllocExtCallViaArg</a>(svfinst))</div>
1586
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div>
1587
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</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">LLVMUtil::getLLVMCallSite</a>(inst);</div>
1588
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordtype">int</span> arg_pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVFUtil::getHeapAllocHoldingArgPosition</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(svfinst));</div>
1589
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* arg = cs-&gt;getArgOperand(arg_pos);</div>
1590
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast&lt;PointerType&gt;(arg-&gt;getType());</div>
1591
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div>
1592
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">else</span></div>
1593
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div>
1594
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; assert( <span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not a heap allocation instruction?&quot;</span>);</div>
1595
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div>
1596
+ <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; </div>
1597
+ <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &amp;&amp; <span class="stringliteral">&quot;not a pointer type?&quot;</span>);</div>
1598
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>);</div>
1599
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;}</div>
1598
1600
  </div><!-- fragment -->
1599
1601
  </div>
1600
1602
  </div>
@@ -1625,15 +1627,15 @@ Functions</h2></td></tr>
1625
1627
  </div><div class="memdoc">
1626
1628
  <p>if this struct type does not have any element, i.e., opaque</p>
1627
1629
 
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>
1630
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00576">576</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1631
+ <div class="fragment"><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;{</div>
1632
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; </div>
1633
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</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>
1634
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
1635
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">return</span> 0;</div>
1636
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">else</span></div>
1637
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
1638
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;}</div>
1637
1639
  </div><!-- fragment -->
1638
1640
  </div>
1639
1641
  </div>
@@ -1655,15 +1657,15 @@ Functions</h2></td></tr>
1655
1657
 
1656
1658
  <p>Helper method to get the size of the type from target data layout. </p>
1657
1659
 
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>
1660
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00566">566</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1661
+ <div class="fragment"><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;{</div>
1662
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; </div>
1663
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
1664
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;isSized())</div>
1665
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</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>
1666
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">else</span></div>
1667
+ <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> 0;</div>
1668
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;}</div>
1667
1669
  </div><!-- fragment -->
1668
1670
  </div>
1669
1671
  </div>
@@ -1685,20 +1687,20 @@ Functions</h2></td></tr>
1685
1687
  <p>Return the bitcast instruction which is val's only use site, otherwise return nullptr </p>
1686
1688
  <p>If type is void* (i8*) and val is only used at a bitcast instruction</p>
1687
1689
 
1688
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00339">339</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1689
- <div class="fragment"><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;{</div>
1690
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast&lt;PointerType&gt;(val-&gt;getType());</div>
1691
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div>
1692
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a> *IT = SVFUtil::dyn_cast&lt;IntegerType&gt;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)))</div>
1693
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; {</div>
1694
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span> (IT-&gt;getBitWidth() == 8 &amp;&amp; val-&gt;getNumUses()==1)</div>
1695
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div>
1696
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">Use</a> *u = &amp;*val-&gt;use_begin();</div>
1697
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">return</span> SVFUtil::dyn_cast&lt;BitCastInst&gt;(u-&gt;getUser());</div>
1698
- <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div>
1699
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
1700
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
1701
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;}</div>
1690
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00337">337</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1691
+ <div class="fragment"><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;{</div>
1692
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast&lt;PointerType&gt;(val-&gt;getType());</div>
1693
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div>
1694
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a> *IT = SVFUtil::dyn_cast&lt;IntegerType&gt;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)))</div>
1695
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div>
1696
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (IT-&gt;getBitWidth() == 8 &amp;&amp; val-&gt;getNumUses()==1)</div>
1697
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; {</div>
1698
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">Use</a> *u = &amp;*val-&gt;use_begin();</div>
1699
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> SVFUtil::dyn_cast&lt;BitCastInst&gt;(u-&gt;getUser());</div>
1700
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
1701
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div>
1702
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
1703
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;}</div>
1702
1704
  </div><!-- fragment -->
1703
1705
  </div>
1704
1706
  </div>
@@ -1718,28 +1720,28 @@ Functions</h2></td></tr>
1718
1720
  </table>
1719
1721
  </div><div class="memdoc">
1720
1722
 
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>
1723
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01132">1132</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1724
+ <div class="fragment"><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;{</div>
1725
+ <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst =</div>
1726
+ <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
1727
+ <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; assert(vfuncloadinst != <span class="keyword">nullptr</span>);</div>
1728
+ <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
1729
+ <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
1730
+ <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
1731
+ <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; User::const_op_iterator oi = vfuncptrgepinst-&gt;idx_begin();</div>
1732
+ <div class="line"><a name="l01141"></a><span class="lineno"> 1141</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>
1733
+ <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx_value;</div>
1734
+ <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keywordflow">if</span> (idx == <span class="keyword">nullptr</span>)</div>
1735
+ <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; {</div>
1736
+ <div class="line"><a name="l01145"></a><span class="lineno"> 1145</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>
1737
+ <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; idx_value = 0;</div>
1738
+ <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; }</div>
1739
+ <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">else</span></div>
1740
+ <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; {</div>
1741
+ <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; idx_value = (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)idx-&gt;getSExtValue();</div>
1742
+ <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; }</div>
1743
+ <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keywordflow">return</span> idx_value;</div>
1744
+ <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;}</div>
1743
1745
  </div><!-- fragment -->
1744
1746
  </div>
1745
1747
  </div>
@@ -1759,17 +1761,17 @@ Functions</h2></td></tr>
1759
1761
  </table>
1760
1762
  </div><div class="memdoc">
1761
1763
 
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>
1764
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00912">912</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1765
+ <div class="fragment"><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;{</div>
1766
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">if</span> (cs-&gt;paramHasAttr(0, llvm::Attribute::StructRet))</div>
1767
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; {</div>
1768
+ <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(1);</div>
1769
+ <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; }</div>
1770
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">else</span></div>
1771
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; {</div>
1772
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(0);</div>
1773
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; }</div>
1774
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;}</div>
1773
1775
  </div><!-- fragment -->
1774
1776
  </div>
1775
1777
  </div>
@@ -1789,18 +1791,18 @@ Functions</h2></td></tr>
1789
1791
  </table>
1790
1792
  </div><div class="memdoc">
1791
1793
 
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>
1794
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01041">1041</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1795
+ <div class="fragment"><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;{</div>
1796
+ <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* loadInst =</div>
1797
+ <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
1798
+ <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; assert(loadInst != <span class="keyword">nullptr</span>);</div>
1799
+ <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = loadInst-&gt;getPointerOperand();</div>
1800
+ <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gepInst =</div>
1801
+ <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
1802
+ <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; assert(gepInst != <span class="keyword">nullptr</span>);</div>
1803
+ <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = gepInst-&gt;getPointerOperand();</div>
1804
+ <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="keywordflow">return</span> vtbl;</div>
1805
+ <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;}</div>
1804
1806
  </div><!-- fragment -->
1805
1807
  </div>
1806
1808
  </div>
@@ -1820,18 +1822,18 @@ Functions</h2></td></tr>
1820
1822
  </table>
1821
1823
  </div><div class="memdoc">
1822
1824
 
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>
1825
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00800">800</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1826
+ <div class="fragment"><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;{</div>
1827
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</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>
1828
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; assert(vtblStruct &amp;&amp; <span class="stringliteral">&quot;Initializer of a vtable not a struct?&quot;</span>);</div>
1829
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; </div>
1830
+ <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">if</span> (vtblStruct-&gt;getNumOperands() == 2 &amp;&amp;</div>
1831
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; SVFUtil::isa&lt;ConstantStruct&gt;(vtblStruct-&gt;getOperand(0)) &amp;&amp;</div>
1832
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; vtblStruct-&gt;getOperand(1)-&gt;getType()-&gt;isArrayTy())</div>
1833
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;ConstantStruct&gt;(vtblStruct-&gt;getOperand(0));</div>
1834
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; </div>
1835
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">return</span> vtblStruct;</div>
1836
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;}</div>
1835
1837
  </div><!-- fragment -->
1836
1838
  </div>
1837
1839
  </div>
@@ -2096,10 +2098,10 @@ Functions</h2></td></tr>
2096
2098
 
2097
2099
  <p>Check whether this value points-to a constant object. </p>
2098
2100
 
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>
2101
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00764">764</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2102
+ <div class="fragment"><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;{</div>
2103
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(val));</div>
2104
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;}</div>
2103
2105
  </div><!-- fragment -->
2104
2106
  </div>
2105
2107
  </div>
@@ -2122,33 +2124,33 @@ Functions</h2></td></tr>
2122
2124
  <p>Check whether this value points-to a constant object. </p>
2123
2125
  <p>Check whether this value points-to a constant object </p>
2124
2126
 
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>
2127
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00772">772</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2128
+ <div class="fragment"><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;{</div>
2129
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</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>
2130
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div>
2131
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">LLVMUtil::isValVtbl</a>(v))</div>
2132
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2133
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v-&gt;hasInitializer())</div>
2134
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; {</div>
2135
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">return</span> !v-&gt;isExternalLinkage(v-&gt;getLinkage());</div>
2136
+ <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; }</div>
2137
+ <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">else</span></div>
2138
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; {</div>
2139
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</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>
2140
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</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>
2141
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</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>
2142
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; {</div>
2143
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = *it;</div>
2144
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</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>
2145
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(elemTy))</div>
2146
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2147
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; }</div>
2148
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; </div>
2149
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span> v-&gt;isConstant();</div>
2150
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div>
2151
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; }</div>
2152
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val);</div>
2153
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;}</div>
2152
2154
  </div><!-- fragment -->
2153
2155
  </div>
2154
2156
  </div>
@@ -2178,11 +2180,11 @@ Functions</h2></td></tr>
2178
2180
 
2179
2181
  <p>Return true if the value refers to constant data, e.g., i32 0. </p>
2180
2182
 
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>
2183
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00413">413</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2184
+ <div class="fragment"><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;{</div>
2185
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</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>
2186
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="namespaceSVF.html#a773900ea3c75022657aac1abf59fa51b">MetadataAsValue</a>, <a class="code" href="namespaceSVF.html#a956458a8554bf734db1194f320fd4b4c">BlockAddress</a>&gt;(val);</div>
2187
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;}</div>
2186
2188
  </div><!-- fragment -->
2187
2189
  </div>
2188
2190
  </div>
@@ -2203,35 +2205,35 @@ Functions</h2></td></tr>
2203
2205
  </div><div class="memdoc">
2204
2206
  <p>TODO: on mac os function name is an empty string after demangling</p>
2205
2207
 
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>
2208
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00971">971</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2209
+ <div class="fragment"><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;{</div>
2210
+ <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
2211
+ <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2212
+ <div class="line"><a name="l00975"></a><span class="lineno"> 975</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>
2213
+ <div class="line"><a name="l00976"></a><span class="lineno"> 976</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>
2214
+ <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; {</div>
2215
+ <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2216
+ <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; }</div>
2217
+ <div class="line"><a name="l00980"></a><span class="lineno"> 980</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>
2218
+ <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
2219
+ <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; {</div>
2220
+ <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2221
+ <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; }</div>
2222
+ <div class="line"><a name="l00985"></a><span class="lineno"> 985</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>
2223
+ <div class="line"><a name="l00986"></a><span class="lineno"> 986</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>
2224
+ <div class="line"><a name="l00987"></a><span class="lineno"> 987</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>
2225
+ <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
2226
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; {</div>
2227
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</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>
2228
+ <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; }</div>
2229
+ <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">else</span></div>
2230
+ <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; {</div>
2231
+ <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
2232
+ <div class="line"><a name="l00995"></a><span class="lineno"> 995</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>
2233
+ <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; }</div>
2234
+ <div class="line"><a name="l00998"></a><span class="lineno"> 998</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>
2235
+ <div class="line"><a name="l00999"></a><span class="lineno"> 999</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>
2236
+ <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;}</div>
2235
2237
  </div><!-- fragment -->
2236
2238
  </div>
2237
2239
  </div>
@@ -2251,11 +2253,11 @@ Functions</h2></td></tr>
2251
2253
  </table>
2252
2254
  </div><div class="memdoc">
2253
2255
 
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>
2256
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00884">884</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2257
+ <div class="fragment"><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;{</div>
2258
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</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>
2259
+ <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div>
2260
+ <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;}</div>
2259
2261
  </div><!-- fragment -->
2260
2262
  </div>
2261
2263
  </div>
@@ -2275,37 +2277,37 @@ Functions</h2></td></tr>
2275
2277
  </table>
2276
2278
  </div><div class="memdoc">
2277
2279
 
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>
2280
+ <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>
2281
+ <div class="fragment"><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;{</div>
2282
+ <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
2283
+ <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2284
+ <div class="line"><a name="l01006"></a><span class="lineno"> 1006</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>
2285
+ <div class="line"><a name="l01007"></a><span class="lineno"> 1007</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>
2286
+ <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; {</div>
2287
+ <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2288
+ <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; }</div>
2289
+ <div class="line"><a name="l01011"></a><span class="lineno"> 1011</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>
2290
+ <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
2291
+ <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; {</div>
2292
+ <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2293
+ <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; }</div>
2294
+ <div class="line"><a name="l01016"></a><span class="lineno"> 1016</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>
2295
+ <div class="line"><a name="l01017"></a><span class="lineno"> 1017</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>
2296
+ <div class="line"><a name="l01018"></a><span class="lineno"> 1018</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>
2297
+ <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
2298
+ <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; {</div>
2299
+ <div class="line"><a name="l01021"></a><span class="lineno"> 1021</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>
2300
+ <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; }</div>
2301
+ <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="keywordflow">else</span></div>
2302
+ <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; {</div>
2303
+ <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
2304
+ <div class="line"><a name="l01026"></a><span class="lineno"> 1026</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>
2305
+ <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; }</div>
2306
+ <div class="line"><a name="l01028"></a><span class="lineno"> 1028</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>
2307
+ <div class="line"><a name="l01029"></a><span class="lineno"> 1029</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>
2308
+ <div class="line"><a name="l01030"></a><span class="lineno"> 1030</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>
2309
+ <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>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.substr(1)) == 0);</div>
2310
+ <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;}</div>
2309
2311
  </div><!-- fragment -->
2310
2312
  </div>
2311
2313
  </div>
@@ -2399,18 +2401,18 @@ Functions</h2></td></tr>
2399
2401
  </table>
2400
2402
  </div><div class="memdoc">
2401
2403
 
2402
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00192">192</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2403
- <div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div>
2404
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (func &amp;&amp; (func-&gt;getIntrinsicID() == llvm::Intrinsic::donothing ||</div>
2405
- <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_addr ||</div>
2406
- <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_declare ||</div>
2407
- <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_label ||</div>
2408
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_value))</div>
2409
- <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div>
2410
- <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2411
- <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div>
2412
- <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2413
- <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;}</div>
2404
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00190">190</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2405
+ <div class="fragment"><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div>
2406
+ <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (func &amp;&amp; (func-&gt;getIntrinsicID() == llvm::Intrinsic::donothing ||</div>
2407
+ <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_addr ||</div>
2408
+ <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_declare ||</div>
2409
+ <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_label ||</div>
2410
+ <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_value))</div>
2411
+ <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div>
2412
+ <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2413
+ <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div>
2414
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2415
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;}</div>
2414
2416
  </div><!-- fragment -->
2415
2417
  </div>
2416
2418
  </div>
@@ -2432,18 +2434,18 @@ Functions</h2></td></tr>
2432
2434
 
2433
2435
  <p>Return true if it is an intrinsic instruction. </p>
2434
2436
 
2435
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00206">206</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2436
- <div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;{</div>
2437
- <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast&lt;CallBase&gt;(inst))</div>
2438
- <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div>
2439
- <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = call-&gt;getCalledFunction();</div>
2440
- <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">isIntrinsicFun</a>(func))</div>
2441
- <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div>
2442
- <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2443
- <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div>
2444
- <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div>
2445
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2446
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;}</div>
2437
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00204">204</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2438
+ <div class="fragment"><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;{</div>
2439
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast&lt;CallBase&gt;(inst))</div>
2440
+ <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div>
2441
+ <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = call-&gt;getCalledFunction();</div>
2442
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">isIntrinsicFun</a>(func))</div>
2443
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div>
2444
+ <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2445
+ <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div>
2446
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div>
2447
+ <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2448
+ <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;}</div>
2447
2449
  </div><!-- fragment -->
2448
2450
  </div>
2449
2451
  </div>
@@ -2465,19 +2467,19 @@ Functions</h2></td></tr>
2465
2467
 
2466
2468
  <p>Check whether a file is an LLVM IR file. </p>
2467
2469
 
2468
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00402">402</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2469
- <div class="fragment"><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;{</div>
2470
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; llvm::ErrorOr&lt;std::unique_ptr&lt;llvm::MemoryBuffer&gt;&gt; FileOrErr = llvm::MemoryBuffer::getFileOrSTDIN(filename);</div>
2471
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">if</span> (FileOrErr.getError())</div>
2472
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2473
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; llvm::MemoryBufferRef Buffer = FileOrErr.get()-&gt;getMemBufferRef();</div>
2474
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferStart =</div>
2475
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferStart();</div>
2476
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferEnd =</div>
2477
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferEnd();</div>
2478
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">return</span> llvm::isBitcode(bufferStart, bufferEnd) ? <a class="code" href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a> :</div>
2479
- <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; Buffer.getBuffer().startswith(<span class="stringliteral">&quot;; ModuleID =&quot;</span>);</div>
2480
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;}</div>
2470
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00400">400</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2471
+ <div class="fragment"><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;{</div>
2472
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; llvm::ErrorOr&lt;std::unique_ptr&lt;llvm::MemoryBuffer&gt;&gt; FileOrErr = llvm::MemoryBuffer::getFileOrSTDIN(filename);</div>
2473
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">if</span> (FileOrErr.getError())</div>
2474
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2475
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; llvm::MemoryBufferRef Buffer = FileOrErr.get()-&gt;getMemBufferRef();</div>
2476
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferStart =</div>
2477
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferStart();</div>
2478
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferEnd =</div>
2479
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferEnd();</div>
2480
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> llvm::isBitcode(bufferStart, bufferEnd) ? <a class="code" href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a> :</div>
2481
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; Buffer.getBuffer().startswith(<span class="stringliteral">&quot;; ModuleID =&quot;</span>);</div>
2482
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;}</div>
2481
2483
  </div><!-- fragment -->
2482
2484
  </div>
2483
2485
  </div>
@@ -2497,29 +2499,29 @@ Functions</h2></td></tr>
2497
2499
  </table>
2498
2500
  </div><div class="memdoc">
2499
2501
 
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>
2502
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00822">822</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2503
+ <div class="fragment"><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;{</div>
2504
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* loadSrc = loadInst-&gt;getPointerOperand();</div>
2505
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* valTy = loadSrc-&gt;getType();</div>
2506
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = valTy;</div>
2507
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; 3; ++i)</div>
2508
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; {</div>
2509
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</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>
2510
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; elemTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrTy);</div>
2511
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">else</span></div>
2512
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2513
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; }</div>
2514
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</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>
2515
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; {</div>
2516
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* paramty = functy-&gt;getParamType(0);</div>
2517
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</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>
2518
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">if</span> (className.size() &gt; 0)</div>
2519
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; {</div>
2520
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2521
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; }</div>
2522
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; }</div>
2523
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2524
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;}</div>
2523
2525
  </div><!-- fragment -->
2524
2526
  </div>
2525
2527
  </div>
@@ -2611,17 +2613,15 @@ Functions</h2></td></tr>
2611
2613
 
2612
2614
  <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00054">54</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2613
2615
  <div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div>
2614
- <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(ref) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVFUtil::isStaticExtCall</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(SVFUtil::cast&lt;Instruction&gt;(ref))) )</div>
2616
+ <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(ref) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(SVFUtil::cast&lt;Instruction&gt;(ref))))</div>
2615
2617
  <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2616
- <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(ref) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(SVFUtil::cast&lt;Instruction&gt;(ref))))</div>
2618
+ <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalVariable&gt;(ref))</div>
2617
2619
  <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2618
- <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalVariable&gt;(ref))</div>
2620
+ <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function, AllocaInst&gt;(ref))</div>
2619
2621
  <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2620
- <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function, AllocaInst&gt;(ref))</div>
2621
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2622
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
2623
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2624
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div>
2622
+ <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
2623
+ <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2624
+ <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div>
2625
2625
  </div><!-- fragment -->
2626
2626
  </div>
2627
2627
  </div>
@@ -2713,20 +2713,20 @@ Functions</h2></td></tr>
2713
2713
  <p>Return true if this is value in a dead function (function without any caller) </p>
2714
2714
  <p>Return true if this is a value in a dead function (function without any caller) </p>
2715
2715
 
2716
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00177">177</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2717
- <div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;{</div>
2718
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(value))</div>
2719
- <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div>
2720
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(inst-&gt;getParent()-&gt;getParent()))</div>
2721
- <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2722
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div>
2723
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast&lt;Argument&gt;(value))</div>
2724
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div>
2725
- <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(arg-&gt;getParent()))</div>
2726
- <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2727
- <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div>
2728
- <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2729
- <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;}</div>
2716
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00175">175</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2717
+ <div class="fragment"><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;{</div>
2718
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(value))</div>
2719
+ <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div>
2720
+ <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(inst-&gt;getParent()-&gt;getParent()))</div>
2721
+ <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2722
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div>
2723
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast&lt;Argument&gt;(value))</div>
2724
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div>
2725
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(arg-&gt;getParent()))</div>
2726
+ <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2727
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div>
2728
+ <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2729
+ <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div>
2730
2730
  </div><!-- fragment -->
2731
2731
  </div>
2732
2732
  </div>
@@ -2758,28 +2758,28 @@ Functions</h2></td></tr>
2758
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>
2759
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>
2760
2760
 
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>
2761
+ <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>
2762
+ <div class="fragment"><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;{</div>
2763
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keywordflow">if</span> (thisPtr1 == thisPtr2)</div>
2764
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2765
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</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="l00944"></a><span class="lineno"> 944</span>&#160; {</div>
2767
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</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="l00946"></a><span class="lineno"> 946</span>&#160; {</div>
2769
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</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="l00948"></a><span class="lineno"> 948</span>&#160; {</div>
2771
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</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="l00950"></a><span class="lineno"> 950</span>&#160; {</div>
2773
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">if</span> (load-&gt;getNextNode() &amp;&amp;</div>
2774
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; SVFUtil::isa&lt;CastInst&gt;(load-&gt;getNextNode()))</div>
2775
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CastInst&gt;(load-&gt;getNextNode()) ==</div>
2776
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; (thisPtr2-&gt;stripPointerCasts());</div>
2777
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; }</div>
2778
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; }</div>
2779
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; }</div>
2780
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; }</div>
2781
+ <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2782
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160;}</div>
2783
2783
  </div><!-- fragment -->
2784
2784
  </div>
2785
2785
  </div>
@@ -2916,35 +2916,35 @@ Functions</h2></td></tr>
2916
2916
  <p>Method for dead function, which does not have any possible caller function address is not taken and never be used in call or invoke instruction</p>
2917
2917
  <p>Return true if this is a function without any possible caller </p>
2918
2918
 
2919
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00144">144</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2920
- <div class="fragment"><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;{</div>
2921
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">if</span>(fun-&gt;hasAddressTaken())</div>
2919
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00142">142</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2920
+ <div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div>
2921
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span>(fun-&gt;hasAddressTaken())</div>
2922
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2923
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">LLVMUtil::isProgEntryFunction</a>(fun))</div>
2922
2924
  <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2923
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">LLVMUtil::isProgEntryFunction</a>(fun))</div>
2924
- <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2925
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator i = fun-&gt;user_begin(), e = fun-&gt;user_end(); i != e; ++i)</div>
2926
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div>
2927
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">LLVMUtil::isCallSite</a>(*i))</div>
2928
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2929
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div>
2930
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()-&gt;hasDeclaration(fun))</div>
2931
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div>
2932
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a16d14e6712866d1d710c386c72d67181">LLVMModuleSet::FunctionSetType</a> &amp;decls = LLVMModuleSet::getLLVMModuleSet()-&gt;getDeclaration(fun);</div>
2933
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">for</span> (LLVMModuleSet::FunctionSetType::const_iterator it = decls.begin(),</div>
2934
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; eit = decls.end(); it != eit; ++it)</div>
2935
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div>
2936
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl = *it;</div>
2937
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span>(decl-&gt;hasAddressTaken())</div>
2938
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2939
- <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator i = decl-&gt;user_begin(), e = decl-&gt;user_end(); i != e; ++i)</div>
2940
- <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div>
2941
- <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">LLVMUtil::isCallSite</a>(*i))</div>
2942
- <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2943
- <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
2944
- <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
2945
- <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
2946
- <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2947
- <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div>
2925
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator i = fun-&gt;user_begin(), e = fun-&gt;user_end(); i != e; ++i)</div>
2926
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div>
2927
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">LLVMUtil::isCallSite</a>(*i))</div>
2928
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2929
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
2930
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()-&gt;hasDeclaration(fun))</div>
2931
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; {</div>
2932
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a16d14e6712866d1d710c386c72d67181">LLVMModuleSet::FunctionSetType</a> &amp;decls = LLVMModuleSet::getLLVMModuleSet()-&gt;getDeclaration(fun);</div>
2933
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">for</span> (LLVMModuleSet::FunctionSetType::const_iterator it = decls.begin(),</div>
2934
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; eit = decls.end(); it != eit; ++it)</div>
2935
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div>
2936
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl = *it;</div>
2937
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span>(decl-&gt;hasAddressTaken())</div>
2938
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2939
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator i = decl-&gt;user_begin(), e = decl-&gt;user_end(); i != e; ++i)</div>
2940
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div>
2941
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">LLVMUtil::isCallSite</a>(*i))</div>
2942
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2943
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div>
2944
+ <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div>
2945
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
2946
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2947
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;}</div>
2948
2948
  </div><!-- fragment -->
2949
2949
  </div>
2950
2950
  </div>
@@ -2964,14 +2964,14 @@ Functions</h2></td></tr>
2964
2964
  </table>
2965
2965
  </div><div class="memdoc">
2966
2966
 
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>
2967
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00813">813</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2968
+ <div class="fragment"><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;{</div>
2969
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;GlobalVariable&gt;(val))</div>
2970
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2971
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</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="l00818"></a><span class="lineno"> 818</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="l00819"></a><span class="lineno"> 819</span>&#160; <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>) == 0;</div>
2974
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;}</div>
2975
2975
  </div><!-- fragment -->
2976
2976
  </div>
2977
2977
  </div>
@@ -2991,36 +2991,36 @@ Functions</h2></td></tr>
2991
2991
  </table>
2992
2992
  </div><div class="memdoc">
2993
2993
 
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>
2994
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00853">853</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2995
+ <div class="fragment"><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;{</div>
2996
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</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="l00856"></a><span class="lineno"> 856</span>&#160; <span class="comment">// ptr)</span></div>
2998
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</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="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3000
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; </div>
3001
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</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="l00861"></a><span class="lineno"> 861</span>&#160; <span class="comment">// class name</span></div>
3003
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</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="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3005
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; </div>
3006
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</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="l00866"></a><span class="lineno"> 866</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="l00867"></a><span class="lineno"> 867</span>&#160; {</div>
3009
+ <div class="line"><a name="l00868"></a><span class="lineno"> 868</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="l00869"></a><span class="lineno"> 869</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="l00870"></a><span class="lineno"> 870</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr))</div>
3012
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; {</div>
3013
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (vfuncptrgepinst-&gt;getNumIndices() != 1)</div>
3014
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3015
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</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="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(vtbl))</div>
3017
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; {</div>
3018
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3019
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; }</div>
3020
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; }</div>
3021
+ <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; }</div>
3022
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3023
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;}</div>
3024
3024
  </div><!-- fragment -->
3025
3025
  </div>
3026
3026
  </div>
@@ -3042,12 +3042,12 @@ template&lt;typename T &gt; </div>
3042
3042
  </table>
3043
3043
  </div><div class="memdoc">
3044
3044
 
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>
3045
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00516">516</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3046
+ <div class="fragment"><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;{</div>
3047
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
3048
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; llvm::raw_string_ostream(str) &lt;&lt; val;</div>
3049
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">return</span> str;</div>
3050
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;}</div>
3051
3051
  </div><!-- fragment -->
3052
3052
  </div>
3053
3053
  </div>
@@ -3098,31 +3098,31 @@ template&lt;typename T &gt; </div>
3098
3098
  <p>Parse argument for multi-module analysis. </p>
3099
3099
  <p>Get the names of all modules into a vector And process arguments </p>
3100
3100
 
3101
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00419">419</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3102
- <div class="fragment"><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;{</div>
3103
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
3104
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; ++i)</div>
3105
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; {</div>
3106
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
3107
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
3108
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; {</div>
3109
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
3110
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; == moduleNameVec.end())</div>
3111
- <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; moduleNameVec.push_back(argument);</div>
3112
- <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div>
3113
- <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div>
3114
- <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; arg_value[arg_num] = argv[i];</div>
3115
- <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; arg_num++;</div>
3116
- <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; first_ir_file = <span class="keyword">false</span>;</div>
3117
- <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div>
3118
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div>
3119
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">else</span></div>
3120
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div>
3121
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; arg_value[arg_num] = argv[i];</div>
3122
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; arg_num++;</div>
3123
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div>
3124
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div>
3125
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;}</div>
3101
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00417">417</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3102
+ <div class="fragment"><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;{</div>
3103
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
3104
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; ++i)</div>
3105
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div>
3106
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
3107
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
3108
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div>
3109
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
3110
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; == moduleNameVec.end())</div>
3111
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; moduleNameVec.push_back(argument);</div>
3112
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div>
3113
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div>
3114
+ <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; arg_value[arg_num] = argv[i];</div>
3115
+ <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; arg_num++;</div>
3116
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; first_ir_file = <span class="keyword">false</span>;</div>
3117
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div>
3118
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div>
3119
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">else</span></div>
3120
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div>
3121
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; arg_value[arg_num] = argv[i];</div>
3122
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; arg_num++;</div>
3123
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div>
3124
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
3125
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;}</div>
3126
3126
  </div><!-- fragment -->
3127
3127
  </div>
3128
3128
  </div>
@@ -3142,66 +3142,66 @@ template&lt;typename T &gt; </div>
3142
3142
  </table>
3143
3143
  </div><div class="memdoc">
3144
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>
3145
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00485">485</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3146
+ <div class="fragment"><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;{</div>
3147
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
3148
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</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="l00489"></a><span class="lineno"> 489</span>&#160; </div>
3150
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module = removedFuncList[0]-&gt;getParent();</div>
3151
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</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="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
3153
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">return</span>;</div>
3154
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; </div>
3155
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</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="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
3157
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">return</span>;</div>
3158
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; </div>
3159
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; std::vector&lt;Constant*&gt; newAnnotations;</div>
3160
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</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="l00501"></a><span class="lineno"> 501</span>&#160; {</div>
3162
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</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="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
3164
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">continue</span>;</div>
3165
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; </div>
3166
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</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="l00507"></a><span class="lineno"> 507</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="l00508"></a><span class="lineno"> 508</span>&#160; {</div>
3169
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="comment">// Keep the annotation if it&#39;s not created using BitCast</span></div>
3170
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; newAnnotations.push_back(structAn);</div>
3171
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">continue</span>;</div>
3172
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div>
3173
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; </div>
3174
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</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="l00515"></a><span class="lineno"> 515</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="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">continue</span>;</div>
3177
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; </div>
3178
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="comment">// Keep the annotation for all other functions</span></div>
3179
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; newAnnotations.push_back(structAn);</div>
3180
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div>
3181
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; </div>
3182
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span> (newAnnotations.size() == ca-&gt;getNumOperands())</div>
3183
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No annotations to remove</span></div>
3184
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; </div>
3185
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</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="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* newCA = ConstantArray::get(annotationsType, newAnnotations);</div>
3187
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; </div>
3188
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</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="l00529"></a><span class="lineno"> 529</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="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span> (existingGlobal)</div>
3191
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="comment">// Rename the existing llvm.global.annotations to llvm.global.annotations_old</span></div>
3192
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; existingGlobal-&gt;setName(<span class="stringliteral">&quot;llvm.global.annotations_old&quot;</span>);</div>
3193
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; </div>
3194
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// Create a new global variable with the updated annotations</span></div>
3195
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</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="l00536"></a><span class="lineno"> 536</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="l00537"></a><span class="lineno"> 537</span>&#160; </div>
3198
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</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="l00539"></a><span class="lineno"> 539</span>&#160; newGlobal-&gt;setSection(glob-&gt;getSection());</div>
3200
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; newGlobal-&gt;setAlignment(llvm::MaybeAlign(glob-&gt;getAlignment()));</div>
3201
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; </div>
3202
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="comment">// Remove the old global variable</span></div>
3203
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; glob-&gt;eraseFromParent();</div>
3204
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;}</div>
3205
3205
  </div><!-- fragment -->
3206
3206
  </div>
3207
3207
  </div>
@@ -3231,12 +3231,12 @@ template&lt;typename T &gt; </div>
3231
3231
  <p>Remove unused function annotations in extapi.bc</p>
3232
3232
  <p>Remove unused function in extapi.bc</p>
3233
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>
3234
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00397">397</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3235
+ <div class="fragment"><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;{</div>
3236
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
3237
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</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="l00403"></a><span class="lineno"> 403</span>&#160; func-&gt;eraseFromParent();</div>
3239
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;}</div>
3240
3240
  </div><!-- fragment -->
3241
3241
  </div>
3242
3242
  </div>
@@ -3259,28 +3259,28 @@ template&lt;typename T &gt; </div>
3259
3259
  <p>Strip off the all casts. </p>
3260
3260
  <p>Strip all casts </p>
3261
3261
 
3262
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00253">253</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3263
- <div class="fragment"><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;{</div>
3264
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
3265
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; {</div>
3266
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *ci = SVFUtil::dyn_cast&lt;CastInst&gt;(val))</div>
3267
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div>
3268
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; val = ci-&gt;getOperand(0);</div>
3269
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div>
3270
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
3271
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div>
3272
- <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span>(ce-&gt;isCast())</div>
3273
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; val = ce-&gt;getOperand(0);</div>
3274
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">else</span></div>
3275
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> val;</div>
3276
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div>
3277
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">else</span></div>
3278
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div>
3279
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> val;</div>
3280
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div>
3281
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div>
3282
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
3283
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;}</div>
3262
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00251">251</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3263
+ <div class="fragment"><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;{</div>
3264
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
3265
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div>
3266
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *ci = SVFUtil::dyn_cast&lt;CastInst&gt;(val))</div>
3267
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; {</div>
3268
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; val = ci-&gt;getOperand(0);</div>
3269
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div>
3270
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
3271
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; {</div>
3272
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span>(ce-&gt;isCast())</div>
3273
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; val = ce-&gt;getOperand(0);</div>
3274
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">else</span></div>
3275
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> val;</div>
3276
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div>
3277
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">else</span></div>
3278
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div>
3279
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> val;</div>
3280
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div>
3281
+ <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div>
3282
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
3283
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;}</div>
3284
3284
  </div><!-- fragment -->
3285
3285
  </div>
3286
3286
  </div>
@@ -3303,17 +3303,60 @@ template&lt;typename T &gt; </div>
3303
3303
  <p>Strip off the constant casts. </p>
3304
3304
  <p>Strip constant casts </p>
3305
3305
 
3306
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00222">222</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3307
- <div class="fragment"><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;{</div>
3308
- <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalValue&gt;(val) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a>(val))</div>
3309
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> val;</div>
3310
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *CE = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
3311
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div>
3312
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (Instruction::isCast(CE-&gt;getOpcode()))</div>
3313
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">stripConstantCasts</a>(CE-&gt;getOperand(0));</div>
3314
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div>
3315
- <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> val;</div>
3316
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;}</div>
3306
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00220">220</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3307
+ <div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div>
3308
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalValue&gt;(val) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a>(val))</div>
3309
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> val;</div>
3310
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *CE = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
3311
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div>
3312
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (Instruction::isCast(CE-&gt;getOpcode()))</div>
3313
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">stripConstantCasts</a>(CE-&gt;getOperand(0));</div>
3314
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; }</div>
3315
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> val;</div>
3316
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;}</div>
3317
+ </div><!-- fragment -->
3318
+ </div>
3319
+ </div>
3320
+ <a id="a276a85b292038a197a525e08e9252c92"></a>
3321
+ <h2 class="memtitle"><span class="permalink"><a href="#a276a85b292038a197a525e08e9252c92">&#9670;&nbsp;</a></span>SVFType2ByteSize()</h2>
3322
+
3323
+ <div class="memitem">
3324
+ <div class="memproto">
3325
+ <table class="mlabels">
3326
+ <tr>
3327
+ <td class="mlabels-left">
3328
+ <table class="memname">
3329
+ <tr>
3330
+ <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::LLVMUtil::SVFType2ByteSize </td>
3331
+ <td>(</td>
3332
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> *&#160;</td>
3333
+ <td class="paramname"><em>type</em></td><td>)</td>
3334
+ <td></td>
3335
+ </tr>
3336
+ </table>
3337
+ </td>
3338
+ <td class="mlabels-right">
3339
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
3340
+ </tr>
3341
+ </table>
3342
+ </div><div class="memdoc">
3343
+
3344
+ <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>
3345
+ <div class="fragment"><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;{</div>
3346
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">llvm::Type</a>* llvm_rhs = LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMType(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>);</div>
3347
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> llvm_rhs_size = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6">LLVMUtil::getTypeSizeInBytes</a>(llvm_rhs-&gt;getPointerElementType());</div>
3348
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> llvm_elem_size = -1;</div>
3349
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">if</span> (llvm_rhs-&gt;getPointerElementType()-&gt;isArrayTy() &amp;&amp; llvm_rhs_size &gt; 0)</div>
3350
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div>
3351
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordtype">size_t</span> array_len = llvm_rhs-&gt;getPointerElementType()-&gt;getArrayNumElements();</div>
3352
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; llvm_elem_size = llvm_rhs_size / array_len;</div>
3353
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div>
3354
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">else</span></div>
3355
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; {</div>
3356
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; llvm_elem_size =llvm_rhs_size;</div>
3357
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div>
3358
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> llvm_elem_size;</div>
3359
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;}</div>
3317
3360
  </div><!-- fragment -->
3318
3361
  </div>
3319
3362
  </div>
@@ -3333,18 +3376,18 @@ template&lt;typename T &gt; </div>
3333
3376
  </table>
3334
3377
  </div><div class="memdoc">
3335
3378
 
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>
3379
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01057">1057</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3380
+ <div class="fragment"><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;{</div>
3381
+ <div class="line"><a name="l01059"></a><span class="lineno"> 1059</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>
3382
+ <div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = cs-&gt;getCaller();</div>
3383
+ <div class="line"><a name="l01061"></a><span class="lineno"> 1061</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>
3384
+ <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; {</div>
3385
+ <div class="line"><a name="l01063"></a><span class="lineno"> 1063</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>
3386
+ <div class="line"><a name="l01064"></a><span class="lineno"> 1064</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>
3387
+ <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3388
+ <div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; }</div>
3389
+ <div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3390
+ <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;}</div>
3348
3391
  </div><!-- fragment -->
3349
3392
  </div>
3350
3393
  </div>
@@ -3364,13 +3407,13 @@ template&lt;typename T &gt; </div>
3364
3407
  </table>
3365
3408
  </div><div class="memdoc">
3366
3409
 
3367
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00234">234</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3368
- <div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;{</div>
3369
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
3370
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div>
3371
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; fun-&gt;viewCFG();</div>
3372
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div>
3373
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div>
3410
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00232">232</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3411
+ <div class="fragment"><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;{</div>
3412
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
3413
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div>
3414
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; fun-&gt;viewCFG();</div>
3415
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div>
3416
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;}</div>
3374
3417
  </div><!-- fragment -->
3375
3418
  </div>
3376
3419
  </div>
@@ -3390,27 +3433,29 @@ template&lt;typename T &gt; </div>
3390
3433
  </table>
3391
3434
  </div><div class="memdoc">
3392
3435
 
3393
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00242">242</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3394
- <div class="fragment"><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;{</div>
3395
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
3396
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; {</div>
3397
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; fun-&gt;viewCFGOnly();</div>
3398
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
3399
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div>
3436
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00240">240</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3437
+ <div class="fragment"><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;{</div>
3438
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
3439
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div>
3440
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; fun-&gt;viewCFGOnly();</div>
3441
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
3442
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;}</div>
3400
3443
  </div><!-- fragment -->
3401
3444
  </div>
3402
3445
  </div>
3403
3446
  </div><!-- contents -->
3404
3447
  <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>
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>
3448
+ <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#l00590">LLVMUtil.cpp:590</a></div></div>
3406
3449
  <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>
3407
3450
  <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>
3451
+ <div class="ttc" id="aCommandLine_8h_html_a2429346d37bd4c40889bd7c6d319d9da"><div class="ttname"><a href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="CommandLine_8h_source.html#l00018">CommandLine.h:18</a></div></div>
3408
3452
  <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>
3453
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b5fdf455c5dd40c0baa60185e5e41c6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const StructType *sty, u32_t field_index)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00576">LLVMUtil.cpp:576</a></div></div>
3409
3454
  <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>
3410
3455
  <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>
3411
3456
  <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>
3412
3457
  <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>
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>
3458
+ <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#l00813">LLVMUtil.cpp:813</a></div></div>
3414
3459
  <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>
3415
3460
  <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>
3416
3461
  <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>
@@ -3418,15 +3463,15 @@ template&lt;typename T &gt; </div>
3418
3463
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
3419
3464
  <div class="ttc" id="anamespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
3420
3465
  <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>
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>
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>
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>
3466
+ <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#l00220">LLVMUtil.cpp:220</a></div></div>
3467
+ <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#l00142">LLVMUtil.cpp:142</a></div></div>
3468
+ <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#l00764">LLVMUtil.cpp:764</a></div></div>
3424
3469
  <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>
3425
3470
  <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>
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>
3471
+ <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#l00442">SVFUtil.h:442</a></div></div>
3427
3472
  <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>
3428
3473
  <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>
3474
+ <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#l00547">LLVMUtil.cpp:547</a></div></div>
3430
3475
  <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>
3431
3476
  <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>
3432
3477
  <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>
@@ -3435,9 +3480,8 @@ template&lt;typename T &gt; </div>
3435
3480
  <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>
3436
3481
  <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>
3437
3482
  <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>
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>
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>
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>
3483
+ <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#l00337">LLVMUtil.cpp:337</a></div></div>
3484
+ <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#l00912">LLVMUtil.cpp:912</a></div></div>
3441
3485
  <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
3486
  <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>
3443
3487
  <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>
@@ -3446,21 +3490,21 @@ template&lt;typename T &gt; </div>
3446
3490
  <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>
3447
3491
  <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>
3448
3492
  <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>
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>
3493
+ <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#l00431">SVFUtil.h:431</a></div></div>
3450
3494
  <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>
3451
3495
  <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>
3452
3496
  <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>
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>
3497
+ <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#l00413">LLVMUtil.h:413</a></div></div>
3454
3498
  <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>
3455
3499
  <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>
3456
3500
  <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>
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>
3501
+ <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#l00400">LLVMUtil.cpp:400</a></div></div>
3458
3502
  <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>
3459
3503
  <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>
3504
+ <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#l00485">LLVMUtil.cpp:485</a></div></div>
3461
3505
  <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>
3462
3506
  <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>
3507
+ <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#l01002">LLVMUtil.cpp:1002</a></div></div>
3464
3508
  <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
3509
  <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>
3466
3510
  <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>
@@ -3479,31 +3523,31 @@ template&lt;typename T &gt; </div>
3479
3523
  <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>
3480
3524
  <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>
3481
3525
  <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>
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>
3526
+ <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#l01094">LLVMUtil.cpp:1094</a></div></div>
3483
3527
  <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>
3484
3528
  <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>
3485
3529
  <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>
3486
3530
  <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>
3487
3531
  <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>
3532
+ <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#l00694">LLVMUtil.cpp:694</a></div></div>
3489
3533
  <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>
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>
3534
+ <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#l00304">LLVMUtil.cpp:304</a></div></div>
3491
3535
  <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>
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>
3536
+ <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#l00190">LLVMUtil.cpp:190</a></div></div>
3493
3537
  <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>
3494
3538
  <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>
3495
3539
  <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>
3496
3540
  <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>
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>
3541
+ <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#l00275">LLVMUtil.cpp:275</a></div></div>
3498
3542
  <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>
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>
3543
+ <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#l00204">LLVMUtil.cpp:204</a></div></div>
3500
3544
  <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>
3501
3545
  <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>
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>
3546
+ <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#l00971">LLVMUtil.cpp:971</a></div></div>
3503
3547
  <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>
3504
3548
  <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>
3505
3549
  <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>
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>
3550
+ <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#l01070">LLVMUtil.cpp:1070</a></div></div>
3507
3551
  <!-- start footer part -->
3508
3552
  <hr class="footer"/><address class="footer"><small>
3509
3553
  Generated by &#160;<a href="http://www.doxygen.org/index.html">