svf-tools 1.0.809 → 1.0.810

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 (473) hide show
  1. package/SVF-doxygen/html/AccessPath_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/AndersenSCD_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/Andersen_8cpp_source.html +4 -4
  4. package/SVF-doxygen/html/Andersen_8h_source.html +1 -1
  5. package/SVF-doxygen/html/CDGBuilder_8cpp_source.html +6 -6
  6. package/SVF-doxygen/html/CDGBuilder_8h_source.html +1 -1
  7. package/SVF-doxygen/html/CFBasicBlockGBuilder_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/CFBasicBlockGBuilder_8h_source.html +1 -1
  9. package/SVF-doxygen/html/CFLAlias_8cpp_source.html +6 -6
  10. package/SVF-doxygen/html/CFLAlias_8h_source.html +1 -1
  11. package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +13 -13
  12. package/SVF-doxygen/html/CHG_8cpp.html +4 -4
  13. package/SVF-doxygen/html/CHG_8cpp_source.html +10 -10
  14. package/SVF-doxygen/html/CHG_8h_source.html +2 -2
  15. package/SVF-doxygen/html/CallGraphBuilder_8cpp_source.html +2 -2
  16. package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/ContextDDA_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/CxtStmt_8h_source.html +2 -2
  19. package/SVF-doxygen/html/DCHG_8cpp_source.html +8 -8
  20. package/SVF-doxygen/html/DCHG_8h_source.html +2 -2
  21. package/SVF-doxygen/html/DDAClient_8cpp_source.html +3 -3
  22. package/SVF-doxygen/html/ExtAPI_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/FSMPTA_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +7 -7
  25. package/SVF-doxygen/html/ICFGBuilder_8h_source.html +4 -4
  26. package/SVF-doxygen/html/ICFGEdge_8h_source.html +5 -5
  27. package/SVF-doxygen/html/ICFGNode_8h_source.html +12 -12
  28. package/SVF-doxygen/html/ICFG_8cpp_source.html +550 -543
  29. package/SVF-doxygen/html/ICFG_8h_source.html +19 -19
  30. package/SVF-doxygen/html/IRGraph_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/LLVMLoopAnalysis_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +1160 -1147
  33. package/SVF-doxygen/html/LLVMModule_8h_source.html +29 -29
  34. package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +1160 -1150
  35. package/SVF-doxygen/html/LLVMUtil_8h.html +3 -0
  36. package/SVF-doxygen/html/LLVMUtil_8h_source.html +350 -347
  37. package/SVF-doxygen/html/LeakChecker_8cpp_source.html +3 -3
  38. package/SVF-doxygen/html/LockAnalysis_8cpp_source.html +14 -14
  39. package/SVF-doxygen/html/LockAnalysis_8h_source.html +2 -2
  40. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +4 -4
  41. package/SVF-doxygen/html/LockResultValidator_8h_source.html +1 -1
  42. package/SVF-doxygen/html/MHP_8cpp_source.html +12 -12
  43. package/SVF-doxygen/html/MHP_8h_source.html +3 -3
  44. package/SVF-doxygen/html/MSSAMuChi_8h_source.html +2 -2
  45. package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +2 -2
  46. package/SVF-doxygen/html/MTAAnnotator_8h_source.html +1 -1
  47. package/SVF-doxygen/html/MTAResultValidator_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/MTAStat_8cpp_source.html +5 -5
  49. package/SVF-doxygen/html/MTA_8cpp_source.html +2 -2
  50. package/SVF-doxygen/html/MemRegion_8cpp_source.html +10 -10
  51. package/SVF-doxygen/html/MemRegion_8h_source.html +1 -1
  52. package/SVF-doxygen/html/MemSSA_8cpp_source.html +20 -20
  53. package/SVF-doxygen/html/MemSSA_8h_source.html +1 -1
  54. package/SVF-doxygen/html/PCG_8cpp_source.html +10 -10
  55. package/SVF-doxygen/html/PCG_8h_source.html +3 -3
  56. package/SVF-doxygen/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  57. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +14 -14
  58. package/SVF-doxygen/html/ProgSlice_8cpp_source.html +2 -2
  59. package/SVF-doxygen/html/ProgSlice_8h_source.html +1 -1
  60. package/SVF-doxygen/html/SVFBugReport_8h_source.html +2 -2
  61. package/SVF-doxygen/html/SVFFileSystem_8cpp_source.html +17 -17
  62. package/SVF-doxygen/html/SVFFileSystem_8h_source.html +15 -15
  63. package/SVF-doxygen/html/SVFGOPT_8h_source.html +3 -3
  64. package/SVF-doxygen/html/SVFGReadWrite_8cpp_source.html +1 -1
  65. package/SVF-doxygen/html/SVFG_8cpp_source.html +6 -6
  66. package/SVF-doxygen/html/SVFG_8h_source.html +4 -4
  67. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +4 -4
  68. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +3 -3
  69. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +23 -23
  70. package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +4 -4
  71. package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +8 -8
  72. package/SVF-doxygen/html/SVFIR_8cpp_source.html +1 -1
  73. package/SVF-doxygen/html/SVFIR_8h_source.html +2 -2
  74. package/SVF-doxygen/html/SVFModule_8cpp_source.html +1 -1
  75. package/SVF-doxygen/html/SVFModule_8h_source.html +3 -3
  76. package/SVF-doxygen/html/SVFStat_8cpp_source.html +4 -4
  77. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
  78. package/SVF-doxygen/html/SVFStatements_8h_source.html +2 -2
  79. package/SVF-doxygen/html/SVFUtil_8cpp_source.html +6 -6
  80. package/SVF-doxygen/html/SVFUtil_8h_source.html +6 -6
  81. package/SVF-doxygen/html/SVFValue_8cpp_source.html +126 -117
  82. package/SVF-doxygen/html/SVFValue_8h_source.html +1010 -1002
  83. package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
  84. package/SVF-doxygen/html/SaberCheckerAPI_8h_source.html +1 -1
  85. package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +14 -14
  86. package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +5 -5
  87. package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  88. package/SVF-doxygen/html/Steensgaard_8cpp_source.html +4 -4
  89. package/SVF-doxygen/html/Steensgaard_8h_source.html +1 -1
  90. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +17 -17
  91. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +1 -1
  92. package/SVF-doxygen/html/SymbolTableInfo_8h_source.html +1 -1
  93. package/SVF-doxygen/html/TCT_8cpp_source.html +14 -14
  94. package/SVF-doxygen/html/TCT_8h_source.html +7 -7
  95. package/SVF-doxygen/html/ThreadAPI_8cpp_source.html +7 -7
  96. package/SVF-doxygen/html/ThreadAPI_8h_source.html +4 -4
  97. package/SVF-doxygen/html/ThreadCallGraph_8cpp_source.html +1 -1
  98. package/SVF-doxygen/html/TypeAnalysis_8cpp_source.html +4 -4
  99. package/SVF-doxygen/html/VFGNode_8h_source.html +1 -1
  100. package/SVF-doxygen/html/VFG_8cpp_source.html +3 -3
  101. package/SVF-doxygen/html/VFG_8h_source.html +4 -4
  102. package/SVF-doxygen/html/WPAPass_8cpp_source.html +3 -3
  103. package/SVF-doxygen/html/WPAPass_8h_source.html +1 -1
  104. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +2 -2
  105. package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  106. package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  107. package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
  108. package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
  109. package/SVF-doxygen/html/classSVF_1_1Andersen.html +6 -6
  110. package/SVF-doxygen/html/classSVF_1_1AndersenSCD.html +1 -1
  111. package/SVF-doxygen/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  112. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
  113. package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  114. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
  115. package/SVF-doxygen/html/classSVF_1_1CDGBuilder.html +6 -6
  116. package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +8 -8
  117. package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +13 -13
  118. package/SVF-doxygen/html/classSVF_1_1CHGraph.html +7 -7
  119. package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +9 -9
  120. package/SVF-doxygen/html/classSVF_1_1CallCHI.html +1 -1
  121. package/SVF-doxygen/html/classSVF_1_1CallGraphBuilder.html +3 -3
  122. package/SVF-doxygen/html/classSVF_1_1CallICFGNode.html +12 -12
  123. package/SVF-doxygen/html/classSVF_1_1CallMU.html +1 -1
  124. package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
  125. package/SVF-doxygen/html/classSVF_1_1CallSite.html +95 -95
  126. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
  127. package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
  128. package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +1 -1
  129. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
  130. package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
  131. package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
  132. package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
  133. package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +7 -7
  134. package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  135. package/SVF-doxygen/html/classSVF_1_1ExtAPI.html +1 -1
  136. package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
  137. package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +12 -12
  138. package/SVF-doxygen/html/classSVF_1_1FunEntryICFGNode.html +16 -16
  139. package/SVF-doxygen/html/classSVF_1_1FunExitICFGNode.html +28 -20
  140. package/SVF-doxygen/html/classSVF_1_1FunptrDDAClient.html +2 -2
  141. package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +1 -1
  142. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +1 -1
  143. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
  144. package/SVF-doxygen/html/classSVF_1_1GlobalICFGNode.html +9 -9
  145. package/SVF-doxygen/html/classSVF_1_1ICFG.html +271 -271
  146. package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +17 -17
  147. package/SVF-doxygen/html/classSVF_1_1ICFGEdge.html +7 -7
  148. package/SVF-doxygen/html/classSVF_1_1ICFGNode.html +12 -12
  149. package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  150. package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  151. package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +12 -12
  152. package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +15 -15
  153. package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  154. package/SVF-doxygen/html/classSVF_1_1LLVMLoopAnalysis.html +2 -2
  155. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +1075 -1061
  156. package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +4 -4
  157. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
  158. package/SVF-doxygen/html/classSVF_1_1LockAnalysis.html +13 -13
  159. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +4 -4
  160. package/SVF-doxygen/html/classSVF_1_1MHP.html +12 -12
  161. package/SVF-doxygen/html/classSVF_1_1MHPValidator.html +1 -1
  162. package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +10 -10
  163. package/SVF-doxygen/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  164. package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +2 -2
  165. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +2 -2
  166. package/SVF-doxygen/html/classSVF_1_1MTASVFGBuilder.html +1 -1
  167. package/SVF-doxygen/html/classSVF_1_1MTAStat.html +5 -5
  168. package/SVF-doxygen/html/classSVF_1_1MemObj.html +1 -1
  169. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +19 -19
  170. package/SVF-doxygen/html/classSVF_1_1ObjVar.html +1 -1
  171. package/SVF-doxygen/html/classSVF_1_1PCG.html +11 -11
  172. package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
  173. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
  174. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +13 -13
  175. package/SVF-doxygen/html/classSVF_1_1ProgSlice.html +2 -2
  176. package/SVF-doxygen/html/classSVF_1_1RaceResultValidator.html +1 -1
  177. package/SVF-doxygen/html/classSVF_1_1RaceValidator.html +1 -1
  178. package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +9 -9
  179. package/SVF-doxygen/html/classSVF_1_1RetICFGNode.html +12 -12
  180. package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
  181. package/SVF-doxygen/html/classSVF_1_1SVFArgument.html +30 -30
  182. package/SVF-doxygen/html/classSVF_1_1SVFBasicBlock-members.html +18 -17
  183. package/SVF-doxygen/html/classSVF_1_1SVFBasicBlock.html +162 -136
  184. package/SVF-doxygen/html/classSVF_1_1SVFBlackHoleValue.html +15 -15
  185. package/SVF-doxygen/html/classSVF_1_1SVFBugEvent.html +1 -1
  186. package/SVF-doxygen/html/classSVF_1_1SVFCallInst.html +67 -67
  187. package/SVF-doxygen/html/classSVF_1_1SVFConstant.html +17 -17
  188. package/SVF-doxygen/html/classSVF_1_1SVFConstantData.html +23 -23
  189. package/SVF-doxygen/html/classSVF_1_1SVFConstantFP.html +21 -21
  190. package/SVF-doxygen/html/classSVF_1_1SVFConstantInt.html +27 -27
  191. package/SVF-doxygen/html/classSVF_1_1SVFConstantNullPtr.html +15 -15
  192. package/SVF-doxygen/html/classSVF_1_1SVFFunction-members.html +52 -50
  193. package/SVF-doxygen/html/classSVF_1_1SVFFunction.html +236 -176
  194. package/SVF-doxygen/html/classSVF_1_1SVFG.html +7 -7
  195. package/SVF-doxygen/html/classSVF_1_1SVFGOPT.html +2 -2
  196. package/SVF-doxygen/html/classSVF_1_1SVFGlobalValue.html +33 -33
  197. package/SVF-doxygen/html/classSVF_1_1SVFIR.html +3 -3
  198. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +3 -3
  199. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +3 -3
  200. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +39 -39
  201. package/SVF-doxygen/html/classSVF_1_1SVFInstruction.html +57 -57
  202. package/SVF-doxygen/html/classSVF_1_1SVFLoopAndDomInfo.html +3 -3
  203. package/SVF-doxygen/html/classSVF_1_1SVFMetadataAsValue.html +15 -15
  204. package/SVF-doxygen/html/classSVF_1_1SVFModule.html +1 -1
  205. package/SVF-doxygen/html/classSVF_1_1SVFOtherValue.html +11 -11
  206. package/SVF-doxygen/html/classSVF_1_1SVFStat.html +4 -4
  207. package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
  208. package/SVF-doxygen/html/classSVF_1_1SVFVirtualCallInst.html +53 -53
  209. package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +14 -14
  210. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  211. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
  212. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +6 -6
  213. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
  214. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +17 -17
  215. package/SVF-doxygen/html/classSVF_1_1TCT.html +15 -15
  216. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
  217. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
  218. package/SVF-doxygen/html/classSVF_1_1ThreadAPI.html +7 -7
  219. package/SVF-doxygen/html/classSVF_1_1ThreadCallGraph.html +1 -1
  220. package/SVF-doxygen/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  221. package/SVF-doxygen/html/classSVF_1_1TypeAnalysis.html +4 -4
  222. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
  223. package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  224. package/SVF-doxygen/html/classSVF_1_1VFG.html +5 -5
  225. package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
  226. package/SVF-doxygen/html/classSVF_1_1WPAPass.html +2 -2
  227. package/SVF-doxygen/html/functions_b.html +3 -3
  228. package/SVF-doxygen/html/functions_e.html +3 -0
  229. package/SVF-doxygen/html/functions_func_i.html +3 -3
  230. package/SVF-doxygen/html/functions_func_p.html +1 -1
  231. package/SVF-doxygen/html/functions_func_s.html +22 -19
  232. package/SVF-doxygen/html/functions_i.html +1 -1
  233. package/SVF-doxygen/html/functions_l.html +3 -3
  234. package/SVF-doxygen/html/functions_o.html +15 -15
  235. package/SVF-doxygen/html/functions_p.html +9 -9
  236. package/SVF-doxygen/html/functions_r.html +4 -6
  237. package/SVF-doxygen/html/functions_rela_s.html +3 -0
  238. package/SVF-doxygen/html/functions_s.html +26 -20
  239. package/SVF-doxygen/html/functions_t.html +4 -4
  240. package/SVF-doxygen/html/functions_v.html +3 -3
  241. package/SVF-doxygen/html/functions_vars_e.html +3 -0
  242. package/SVF-doxygen/html/namespaceSVF.html +5 -5
  243. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +1199 -1165
  244. package/SVF-doxygen/html/namespaceSVF_1_1SVFUtil.html +5 -5
  245. package/SVF-doxygen/html/namespacemembers_b.html +4 -1
  246. package/SVF-doxygen/html/namespacemembers_func_b.html +4 -1
  247. package/SVF-doxygen/html/search/all_10.js +324 -324
  248. package/SVF-doxygen/html/search/all_11.js +222 -222
  249. package/SVF-doxygen/html/search/all_12.js +544 -543
  250. package/SVF-doxygen/html/search/all_13.js +191 -191
  251. package/SVF-doxygen/html/search/all_14.js +67 -67
  252. package/SVF-doxygen/html/search/all_15.js +169 -169
  253. package/SVF-doxygen/html/search/all_16.js +63 -63
  254. package/SVF-doxygen/html/search/all_17.js +1 -1
  255. package/SVF-doxygen/html/search/all_18.js +1 -1
  256. package/SVF-doxygen/html/search/all_19.js +11 -11
  257. package/SVF-doxygen/html/search/all_1a.js +172 -172
  258. package/SVF-doxygen/html/search/all_2.js +139 -138
  259. package/SVF-doxygen/html/search/all_3.js +642 -642
  260. package/SVF-doxygen/html/search/all_4.js +233 -233
  261. package/SVF-doxygen/html/search/all_5.js +119 -118
  262. package/SVF-doxygen/html/search/all_6.js +225 -225
  263. package/SVF-doxygen/html/search/all_7.js +1041 -1041
  264. package/SVF-doxygen/html/search/all_8.js +196 -196
  265. package/SVF-doxygen/html/search/all_9.js +613 -613
  266. package/SVF-doxygen/html/search/all_a.js +46 -46
  267. package/SVF-doxygen/html/search/all_b.js +26 -26
  268. package/SVF-doxygen/html/search/all_c.js +116 -116
  269. package/SVF-doxygen/html/search/all_d.js +196 -196
  270. package/SVF-doxygen/html/search/all_e.js +207 -207
  271. package/SVF-doxygen/html/search/all_f.js +116 -116
  272. package/SVF-doxygen/html/search/classes_0.js +26 -26
  273. package/SVF-doxygen/html/search/classes_1.js +9 -9
  274. package/SVF-doxygen/html/search/classes_10.js +73 -73
  275. package/SVF-doxygen/html/search/classes_11.js +15 -15
  276. package/SVF-doxygen/html/search/classes_12.js +2 -2
  277. package/SVF-doxygen/html/search/classes_13.js +10 -10
  278. package/SVF-doxygen/html/search/classes_14.js +14 -14
  279. package/SVF-doxygen/html/search/classes_15.js +1 -1
  280. package/SVF-doxygen/html/search/classes_2.js +80 -80
  281. package/SVF-doxygen/html/search/classes_3.js +37 -37
  282. package/SVF-doxygen/html/search/classes_4.js +9 -9
  283. package/SVF-doxygen/html/search/classes_5.js +28 -28
  284. package/SVF-doxygen/html/search/classes_6.js +104 -104
  285. package/SVF-doxygen/html/search/classes_7.js +33 -33
  286. package/SVF-doxygen/html/search/classes_8.js +56 -56
  287. package/SVF-doxygen/html/search/classes_9.js +1 -1
  288. package/SVF-doxygen/html/search/classes_a.js +12 -12
  289. package/SVF-doxygen/html/search/classes_b.js +29 -29
  290. package/SVF-doxygen/html/search/classes_c.js +6 -6
  291. package/SVF-doxygen/html/search/classes_d.js +18 -18
  292. package/SVF-doxygen/html/search/classes_e.js +36 -36
  293. package/SVF-doxygen/html/search/classes_f.js +25 -25
  294. package/SVF-doxygen/html/search/defines_0.js +3 -3
  295. package/SVF-doxygen/html/search/defines_1.js +2 -2
  296. package/SVF-doxygen/html/search/defines_2.js +30 -30
  297. package/SVF-doxygen/html/search/defines_3.js +21 -21
  298. package/SVF-doxygen/html/search/defines_4.js +2 -2
  299. package/SVF-doxygen/html/search/defines_5.js +4 -4
  300. package/SVF-doxygen/html/search/defines_6.js +2 -2
  301. package/SVF-doxygen/html/search/defines_7.js +5 -5
  302. package/SVF-doxygen/html/search/defines_8.js +11 -11
  303. package/SVF-doxygen/html/search/defines_9.js +9 -9
  304. package/SVF-doxygen/html/search/defines_a.js +2 -2
  305. package/SVF-doxygen/html/search/defines_b.js +1 -1
  306. package/SVF-doxygen/html/search/defines_c.js +3 -3
  307. package/SVF-doxygen/html/search/defines_d.js +2 -2
  308. package/SVF-doxygen/html/search/defines_e.js +7 -7
  309. package/SVF-doxygen/html/search/defines_f.js +3 -3
  310. package/SVF-doxygen/html/search/enums_0.js +3 -3
  311. package/SVF-doxygen/html/search/enums_1.js +2 -2
  312. package/SVF-doxygen/html/search/enums_10.js +1 -1
  313. package/SVF-doxygen/html/search/enums_11.js +1 -1
  314. package/SVF-doxygen/html/search/enums_2.js +8 -8
  315. package/SVF-doxygen/html/search/enums_3.js +1 -1
  316. package/SVF-doxygen/html/search/enums_4.js +3 -3
  317. package/SVF-doxygen/html/search/enums_5.js +1 -1
  318. package/SVF-doxygen/html/search/enums_6.js +2 -2
  319. package/SVF-doxygen/html/search/enums_7.js +2 -2
  320. package/SVF-doxygen/html/search/enums_8.js +4 -4
  321. package/SVF-doxygen/html/search/enums_9.js +1 -1
  322. package/SVF-doxygen/html/search/enums_a.js +1 -1
  323. package/SVF-doxygen/html/search/enums_b.js +7 -7
  324. package/SVF-doxygen/html/search/enums_c.js +1 -1
  325. package/SVF-doxygen/html/search/enums_d.js +4 -4
  326. package/SVF-doxygen/html/search/enums_e.js +2 -2
  327. package/SVF-doxygen/html/search/enums_f.js +4 -4
  328. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  329. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  330. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  331. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  332. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  333. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  334. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  335. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  336. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  337. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  338. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  339. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  340. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  341. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  342. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  343. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  344. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  345. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  346. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  347. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  348. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  349. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  350. package/SVF-doxygen/html/search/files_0.js +13 -13
  351. package/SVF-doxygen/html/search/files_1.js +7 -7
  352. package/SVF-doxygen/html/search/files_10.js +8 -8
  353. package/SVF-doxygen/html/search/files_11.js +8 -8
  354. package/SVF-doxygen/html/search/files_12.js +2 -2
  355. package/SVF-doxygen/html/search/files_2.js +55 -55
  356. package/SVF-doxygen/html/search/files_3.js +14 -14
  357. package/SVF-doxygen/html/search/files_4.js +5 -5
  358. package/SVF-doxygen/html/search/files_5.js +13 -13
  359. package/SVF-doxygen/html/search/files_6.js +9 -9
  360. package/SVF-doxygen/html/search/files_7.js +14 -14
  361. package/SVF-doxygen/html/search/files_8.js +13 -13
  362. package/SVF-doxygen/html/search/files_9.js +18 -18
  363. package/SVF-doxygen/html/search/files_a.js +3 -3
  364. package/SVF-doxygen/html/search/files_b.js +2 -2
  365. package/SVF-doxygen/html/search/files_c.js +20 -20
  366. package/SVF-doxygen/html/search/files_d.js +4 -4
  367. package/SVF-doxygen/html/search/files_e.js +62 -62
  368. package/SVF-doxygen/html/search/files_f.js +8 -8
  369. package/SVF-doxygen/html/search/functions_0.js +12 -12
  370. package/SVF-doxygen/html/search/functions_1.js +360 -360
  371. package/SVF-doxygen/html/search/functions_10.js +140 -140
  372. package/SVF-doxygen/html/search/functions_11.js +138 -138
  373. package/SVF-doxygen/html/search/functions_12.js +279 -278
  374. package/SVF-doxygen/html/search/functions_13.js +59 -59
  375. package/SVF-doxygen/html/search/functions_14.js +39 -39
  376. package/SVF-doxygen/html/search/functions_15.js +71 -71
  377. package/SVF-doxygen/html/search/functions_16.js +32 -32
  378. package/SVF-doxygen/html/search/functions_17.js +3 -3
  379. package/SVF-doxygen/html/search/functions_18.js +172 -172
  380. package/SVF-doxygen/html/search/functions_2.js +87 -86
  381. package/SVF-doxygen/html/search/functions_3.js +257 -257
  382. package/SVF-doxygen/html/search/functions_4.js +75 -75
  383. package/SVF-doxygen/html/search/functions_5.js +53 -53
  384. package/SVF-doxygen/html/search/functions_6.js +59 -59
  385. package/SVF-doxygen/html/search/functions_7.js +852 -852
  386. package/SVF-doxygen/html/search/functions_8.js +148 -148
  387. package/SVF-doxygen/html/search/functions_9.js +429 -429
  388. package/SVF-doxygen/html/search/functions_a.js +30 -30
  389. package/SVF-doxygen/html/search/functions_b.js +2 -2
  390. package/SVF-doxygen/html/search/functions_c.js +26 -26
  391. package/SVF-doxygen/html/search/functions_d.js +77 -77
  392. package/SVF-doxygen/html/search/functions_e.js +35 -35
  393. package/SVF-doxygen/html/search/functions_f.js +56 -56
  394. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  395. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  396. package/SVF-doxygen/html/search/related_0.js +2 -2
  397. package/SVF-doxygen/html/search/related_1.js +2 -2
  398. package/SVF-doxygen/html/search/related_2.js +2 -2
  399. package/SVF-doxygen/html/search/related_3.js +2 -2
  400. package/SVF-doxygen/html/search/related_4.js +2 -2
  401. package/SVF-doxygen/html/search/related_5.js +1 -1
  402. package/SVF-doxygen/html/search/related_6.js +2 -2
  403. package/SVF-doxygen/html/search/related_7.js +4 -4
  404. package/SVF-doxygen/html/search/related_8.js +2 -2
  405. package/SVF-doxygen/html/search/related_9.js +4 -4
  406. package/SVF-doxygen/html/search/related_a.js +19 -19
  407. package/SVF-doxygen/html/search/related_b.js +4 -4
  408. package/SVF-doxygen/html/search/related_c.js +1 -1
  409. package/SVF-doxygen/html/search/related_d.js +12 -11
  410. package/SVF-doxygen/html/search/related_e.js +2 -2
  411. package/SVF-doxygen/html/search/related_f.js +2 -2
  412. package/SVF-doxygen/html/search/typedefs_0.js +18 -18
  413. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  414. package/SVF-doxygen/html/search/typedefs_10.js +61 -61
  415. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  416. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  417. package/SVF-doxygen/html/search/typedefs_13.js +34 -34
  418. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  419. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  420. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  421. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  422. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  423. package/SVF-doxygen/html/search/typedefs_6.js +55 -55
  424. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  425. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  426. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  427. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  428. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  429. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  430. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  431. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  432. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  433. package/SVF-doxygen/html/search/variables_0.js +151 -151
  434. package/SVF-doxygen/html/search/variables_1.js +75 -75
  435. package/SVF-doxygen/html/search/variables_10.js +97 -97
  436. package/SVF-doxygen/html/search/variables_11.js +44 -44
  437. package/SVF-doxygen/html/search/variables_12.js +92 -92
  438. package/SVF-doxygen/html/search/variables_13.js +75 -75
  439. package/SVF-doxygen/html/search/variables_14.js +14 -14
  440. package/SVF-doxygen/html/search/variables_15.js +48 -48
  441. package/SVF-doxygen/html/search/variables_16.js +9 -9
  442. package/SVF-doxygen/html/search/variables_17.js +1 -1
  443. package/SVF-doxygen/html/search/variables_18.js +2 -2
  444. package/SVF-doxygen/html/search/variables_2.js +38 -38
  445. package/SVF-doxygen/html/search/variables_3.js +142 -142
  446. package/SVF-doxygen/html/search/variables_4.js +55 -55
  447. package/SVF-doxygen/html/search/variables_5.js +37 -36
  448. package/SVF-doxygen/html/search/variables_6.js +66 -66
  449. package/SVF-doxygen/html/search/variables_7.js +33 -33
  450. package/SVF-doxygen/html/search/variables_8.js +7 -7
  451. package/SVF-doxygen/html/search/variables_9.js +77 -77
  452. package/SVF-doxygen/html/search/variables_a.js +4 -4
  453. package/SVF-doxygen/html/search/variables_b.js +10 -10
  454. package/SVF-doxygen/html/search/variables_c.js +45 -45
  455. package/SVF-doxygen/html/search/variables_d.js +56 -56
  456. package/SVF-doxygen/html/search/variables_e.js +123 -123
  457. package/SVF-doxygen/html/search/variables_f.js +30 -30
  458. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  459. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +82 -82
  460. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  461. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +7 -7
  462. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  463. package/SVF-doxygen/html/svf-ex_8cpp.html +2 -2
  464. package/SVF-doxygen/html/svf-ex_8cpp_source.html +2 -2
  465. package/SVF-doxygen/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +2 -2
  466. package/SVF-doxygen/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +2 -2
  467. package/package.json +1 -1
  468. package/svf/include/SVFIR/SVFValue.h +13 -2
  469. package/svf/lib/Graphs/ICFG.cpp +10 -4
  470. package/svf/lib/SVFIR/SVFValue.cpp +8 -1
  471. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +3 -0
  472. package/svf-llvm/lib/LLVMModule.cpp +11 -0
  473. package/svf-llvm/lib/LLVMUtil.cpp +17 -5
@@ -947,99 +947,99 @@ Friends</h2></td></tr>
947
947
  </table>
948
948
  </div><div class="memdoc">
949
949
 
950
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00650">650</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
951
- <div class="fragment"><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;{</div>
952
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; std::vector&lt;const Function*&gt; ctor_funcs;</div>
953
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; std::vector&lt;const Function*&gt; dtor_funcs;</div>
954
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* orgMain = 0;</div>
955
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div>
956
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; </div>
957
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
958
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; {</div>
959
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
960
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : mod.globals())</div>
961
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div>
962
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">if</span> (global.getName().equals(<a class="code" href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a>) &amp;&amp; global.hasInitializer())</div>
963
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; {</div>
964
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
965
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div>
966
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (global.getName().equals(<a class="code" href="LLVMModule_8cpp.html#a9fd6e28e6ed93f65a20a348ab0646320">SVF_GLOBAL_DTORS</a>) &amp;&amp; global.hasInitializer())</div>
967
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; {</div>
968
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
969
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; }</div>
970
- <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div>
971
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; </div>
972
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="comment">// Find main function</span></div>
973
- <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;func : mod)</div>
974
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; {</div>
975
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keyword">auto</span> funName = func.getName();</div>
976
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; </div>
977
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; assert(!funName.equals(<a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>) &amp;&amp; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a> <span class="stringliteral">&quot; already defined&quot;</span>);</div>
978
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; </div>
979
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">if</span> (funName.equals(<span class="stringliteral">&quot;main&quot;</span>))</div>
980
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div>
981
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; orgMain = &amp;func;</div>
982
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; mainMod = &amp;mod;</div>
983
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div>
984
- <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div>
985
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div>
986
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; </div>
987
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="comment">// Only create svf.main when the original main function is found, and also</span></div>
988
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="comment">// there are global constructor or destructor functions.</span></div>
989
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">if</span> (orgMain &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() &gt; 0 &amp;&amp;</div>
990
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; (ctor_funcs.size() &gt; 0 || dtor_funcs.size() &gt; 0))</div>
991
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div>
992
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; assert(mainMod &amp;&amp; <span class="stringliteral">&quot;Module with main function not found.&quot;</span>);</div>
993
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; M = *mainMod;</div>
994
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="comment">// char **</span></div>
995
- <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i8ptr2 = PointerType::getInt8PtrTy(M.getContext())-&gt;getPointerTo();</div>
996
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i32 = IntegerType::getInt32Ty(M.getContext());</div>
997
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div>
998
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 9)</span></div>
999
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; FunctionCallee svfmainFn = M.getOrInsertFunction(</div>
1000
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
1001
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; Type::getVoidTy(M.getContext()),</div>
1002
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; i32,i8ptr2,i8ptr2</div>
1003
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; );</div>
1004
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast&lt;Function&gt;(svfmainFn.getCallee());</div>
1005
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;<span class="preprocessor">#else</span></div>
1006
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast&lt;Function&gt;(M.getOrInsertFunction(</div>
1007
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
1008
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; Type::getVoidTy(M.getContext()),</div>
1009
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; i32,i8ptr2,i8ptr2</div>
1010
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; ));</div>
1011
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="preprocessor">#endif</span></div>
1012
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; svfmain-&gt;setCallingConv(llvm::CallingConv::C);</div>
1013
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* block = BasicBlock::Create(M.getContext(), <span class="stringliteral">&quot;entry&quot;</span>, svfmain);</div>
1014
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div>
1015
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="comment">// emit &quot;call void @ctor()&quot;. ctor_funcs is sorted so the functions are</span></div>
1016
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1017
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; ctor : ctor_funcs)</div>
1018
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; {</div>
1019
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(</div>
1020
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; ctor-&gt;getName(),</div>
1021
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; Type::getVoidTy(M.getContext())</div>
1022
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; );</div>
1023
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; Builder.CreateCall(target);</div>
1024
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div>
1025
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="comment">// main() should be called after all ctor functions and before dtor</span></div>
1026
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="comment">// functions.</span></div>
1027
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; Function::arg_iterator arg_it = svfmain-&gt;arg_begin();</div>
1028
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* args[] = {arg_it, arg_it + 1, arg_it + 2};</div>
1029
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordtype">size_t</span> cnt = orgMain-&gt;arg_size();</div>
1030
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; assert(cnt &lt;= 3 &amp;&amp; <span class="stringliteral">&quot;Too many arguments for main()&quot;</span>);</div>
1031
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; Builder.CreateCall(orgMain, llvm::ArrayRef&lt;Value*&gt;(args, args + cnt));</div>
1032
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="comment">// emit &quot;call void @dtor()&quot;. dtor_funcs is sorted so the functions are</span></div>
1033
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1034
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; dtor : dtor_funcs)</div>
1035
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; {</div>
1036
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(dtor-&gt;getName(), Type::getVoidTy(M.getContext()));</div>
1037
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; Builder.CreateCall(target);</div>
1038
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; }</div>
1039
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="comment">// return;</span></div>
1040
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; Builder.CreateRetVoid();</div>
1041
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; }</div>
1042
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;}</div>
950
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00661">661</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
951
+ <div class="fragment"><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;{</div>
952
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; std::vector&lt;const Function*&gt; ctor_funcs;</div>
953
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; std::vector&lt;const Function*&gt; dtor_funcs;</div>
954
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* orgMain = 0;</div>
955
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div>
956
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; </div>
957
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
958
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; {</div>
959
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
960
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : mod.globals())</div>
961
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; {</div>
962
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">if</span> (global.getName().equals(<a class="code" href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a>) &amp;&amp; global.hasInitializer())</div>
963
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; {</div>
964
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
965
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div>
966
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (global.getName().equals(<a class="code" href="LLVMModule_8cpp.html#a9fd6e28e6ed93f65a20a348ab0646320">SVF_GLOBAL_DTORS</a>) &amp;&amp; global.hasInitializer())</div>
967
+ <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; {</div>
968
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
969
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div>
970
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; }</div>
971
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; </div>
972
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="comment">// Find main function</span></div>
973
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;func : mod)</div>
974
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; {</div>
975
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keyword">auto</span> funName = func.getName();</div>
976
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; </div>
977
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; assert(!funName.equals(<a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>) &amp;&amp; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a> <span class="stringliteral">&quot; already defined&quot;</span>);</div>
978
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; </div>
979
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">if</span> (funName.equals(<span class="stringliteral">&quot;main&quot;</span>))</div>
980
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div>
981
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; orgMain = &amp;func;</div>
982
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; mainMod = &amp;mod;</div>
983
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div>
984
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; }</div>
985
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; }</div>
986
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; </div>
987
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="comment">// Only create svf.main when the original main function is found, and also</span></div>
988
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="comment">// there are global constructor or destructor functions.</span></div>
989
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span> (orgMain &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() &gt; 0 &amp;&amp;</div>
990
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; (ctor_funcs.size() &gt; 0 || dtor_funcs.size() &gt; 0))</div>
991
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; {</div>
992
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; assert(mainMod &amp;&amp; <span class="stringliteral">&quot;Module with main function not found.&quot;</span>);</div>
993
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; M = *mainMod;</div>
994
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="comment">// char **</span></div>
995
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i8ptr2 = PointerType::getInt8PtrTy(M.getContext())-&gt;getPointerTo();</div>
996
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i32 = IntegerType::getInt32Ty(M.getContext());</div>
997
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div>
998
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 9)</span></div>
999
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; FunctionCallee svfmainFn = M.getOrInsertFunction(</div>
1000
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
1001
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; Type::getVoidTy(M.getContext()),</div>
1002
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; i32,i8ptr2,i8ptr2</div>
1003
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; );</div>
1004
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast&lt;Function&gt;(svfmainFn.getCallee());</div>
1005
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;<span class="preprocessor">#else</span></div>
1006
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast&lt;Function&gt;(M.getOrInsertFunction(</div>
1007
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
1008
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; Type::getVoidTy(M.getContext()),</div>
1009
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; i32,i8ptr2,i8ptr2</div>
1010
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; ));</div>
1011
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;<span class="preprocessor">#endif</span></div>
1012
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; svfmain-&gt;setCallingConv(llvm::CallingConv::C);</div>
1013
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* block = BasicBlock::Create(M.getContext(), <span class="stringliteral">&quot;entry&quot;</span>, svfmain);</div>
1014
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div>
1015
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="comment">// emit &quot;call void @ctor()&quot;. ctor_funcs is sorted so the functions are</span></div>
1016
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1017
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; ctor : ctor_funcs)</div>
1018
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; {</div>
1019
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(</div>
1020
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; ctor-&gt;getName(),</div>
1021
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; Type::getVoidTy(M.getContext())</div>
1022
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; );</div>
1023
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; Builder.CreateCall(target);</div>
1024
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div>
1025
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="comment">// main() should be called after all ctor functions and before dtor</span></div>
1026
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="comment">// functions.</span></div>
1027
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; Function::arg_iterator arg_it = svfmain-&gt;arg_begin();</div>
1028
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* args[] = {arg_it, arg_it + 1, arg_it + 2};</div>
1029
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordtype">size_t</span> cnt = orgMain-&gt;arg_size();</div>
1030
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; assert(cnt &lt;= 3 &amp;&amp; <span class="stringliteral">&quot;Too many arguments for main()&quot;</span>);</div>
1031
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; Builder.CreateCall(orgMain, llvm::ArrayRef&lt;Value*&gt;(args, args + cnt));</div>
1032
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="comment">// emit &quot;call void @dtor()&quot;. dtor_funcs is sorted so the functions are</span></div>
1033
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1034
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; dtor : dtor_funcs)</div>
1035
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; {</div>
1036
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(dtor-&gt;getName(), Type::getVoidTy(M.getContext()));</div>
1037
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; Builder.CreateCall(target);</div>
1038
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; }</div>
1039
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="comment">// return;</span></div>
1040
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; Builder.CreateRetVoid();</div>
1041
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; }</div>
1042
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;}</div>
1043
1043
  </div><!-- fragment -->
1044
1044
  </div>
1045
1045
  </div>
@@ -1069,71 +1069,71 @@ Friends</h2></td></tr>
1069
1069
 
1070
1070
  <p>Create SVFTypes. </p>
1071
1071
 
1072
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01254">1254</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1073
- <div class="fragment"><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;{</div>
1074
- <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; assert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T) == <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end() &amp;&amp;</div>
1075
- <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="stringliteral">&quot;SVFType has been added before&quot;</span>);</div>
1076
- <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; </div>
1077
- <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <span class="comment">// add SVFType&#39;s LLVM byte size iff T isSized(), otherwise byteSize is 0(default value)</span></div>
1078
- <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> byteSize = 0;</div>
1079
- <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <span class="keywordflow">if</span> (T-&gt;isSized())</div>
1080
- <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; {</div>
1081
- <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">llvm::DataLayout</a> &amp;DL = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;</div>
1082
- <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>()-&gt;getDataLayout();</div>
1083
- <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *mut_T = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<span class="keyword">&gt;</span>(T);</div>
1084
- <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; byteSize = DL.getTypeAllocSize(mut_T);</div>
1085
- <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; }</div>
1086
- <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; </div>
1087
- <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
1088
- <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(T))</div>
1089
- <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; {</div>
1090
- <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(byteSize);</div>
1091
- <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; }</div>
1092
- <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a>* intT = SVFUtil::dyn_cast&lt;IntegerType&gt;(T))</div>
1093
- <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; {</div>
1094
- <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="keyword">auto</span> svfIntT = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>(byteSize);</div>
1095
- <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; <span class="keywordtype">unsigned</span> signWidth = intT-&gt;getBitWidth();</div>
1096
- <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; assert(signWidth &lt; INT16_MAX &amp;&amp; <span class="stringliteral">&quot;Integer width too big&quot;</span>);</div>
1097
- <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; svfIntT-&gt;setSignAndWidth(intT-&gt;getSignBit() ? -signWidth : signWidth);</div>
1098
- <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; svftype = svfIntT;</div>
1099
- <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; }</div>
1100
- <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* ft = SVFUtil::dyn_cast&lt;FunctionType&gt;(T))</div>
1101
- <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunctionType.html">SVFFunctionType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ft-&gt;getReturnType()));</div>
1102
- <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* st = SVFUtil::dyn_cast&lt;StructType&gt;(T))</div>
1103
- <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; {</div>
1104
- <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; <span class="keyword">auto</span> svfst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>(byteSize);</div>
1105
- <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <span class="keywordflow">if</span> (st-&gt;hasName())</div>
1106
- <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; svfst-&gt;setName(st-&gt;getName().str());</div>
1107
- <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; svftype = svfst;</div>
1108
- <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; }</div>
1109
- <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keyword">auto</span> at = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
1110
- <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; {</div>
1111
- <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keyword">auto</span> svfat = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>(byteSize);</div>
1112
- <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; svfat-&gt;setNumOfElement(at-&gt;getNumElements());</div>
1113
- <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; svfat-&gt;setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at-&gt;getElementType()));</div>
1114
- <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; svftype = svfat;</div>
1115
- <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; }</div>
1116
- <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; <span class="keywordflow">else</span></div>
1117
- <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; {</div>
1118
- <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>;</div>
1119
- <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keyword">auto</span> ot = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(byteSize, T-&gt;isSingleValueType());</div>
1120
- <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) &lt;&lt; *T;</div>
1121
- <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; ot-&gt;setRepr(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>));</div>
1122
- <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; svftype = ot;</div>
1123
- <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; }</div>
1124
- <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; </div>
1125
- <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">addTypeInfo</a>(svftype);</div>
1126
- <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
1127
- <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt = SVFUtil::dyn_cast&lt;PointerType&gt;(T))</div>
1072
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01265">1265</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1073
+ <div class="fragment"><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;{</div>
1074
+ <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; assert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T) == <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end() &amp;&amp;</div>
1075
+ <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <span class="stringliteral">&quot;SVFType has been added before&quot;</span>);</div>
1076
+ <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; </div>
1077
+ <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; <span class="comment">// add SVFType&#39;s LLVM byte size iff T isSized(), otherwise byteSize is 0(default value)</span></div>
1078
+ <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> byteSize = 0;</div>
1079
+ <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="keywordflow">if</span> (T-&gt;isSized())</div>
1080
+ <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; {</div>
1081
+ <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">llvm::DataLayout</a> &amp;DL = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;</div>
1082
+ <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>()-&gt;getDataLayout();</div>
1083
+ <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *mut_T = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<span class="keyword">&gt;</span>(T);</div>
1084
+ <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; byteSize = DL.getTypeAllocSize(mut_T);</div>
1085
+ <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; }</div>
1086
+ <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; </div>
1087
+ <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
1088
+ <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(T))</div>
1089
+ <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; {</div>
1090
+ <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(byteSize);</div>
1091
+ <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; }</div>
1092
+ <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a>* intT = SVFUtil::dyn_cast&lt;IntegerType&gt;(T))</div>
1093
+ <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; {</div>
1094
+ <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <span class="keyword">auto</span> svfIntT = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>(byteSize);</div>
1095
+ <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordtype">unsigned</span> signWidth = intT-&gt;getBitWidth();</div>
1096
+ <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; assert(signWidth &lt; INT16_MAX &amp;&amp; <span class="stringliteral">&quot;Integer width too big&quot;</span>);</div>
1097
+ <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; svfIntT-&gt;setSignAndWidth(intT-&gt;getSignBit() ? -signWidth : signWidth);</div>
1098
+ <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; svftype = svfIntT;</div>
1099
+ <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; }</div>
1100
+ <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* ft = SVFUtil::dyn_cast&lt;FunctionType&gt;(T))</div>
1101
+ <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunctionType.html">SVFFunctionType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ft-&gt;getReturnType()));</div>
1102
+ <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* st = SVFUtil::dyn_cast&lt;StructType&gt;(T))</div>
1103
+ <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; {</div>
1104
+ <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <span class="keyword">auto</span> svfst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>(byteSize);</div>
1105
+ <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; <span class="keywordflow">if</span> (st-&gt;hasName())</div>
1106
+ <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; svfst-&gt;setName(st-&gt;getName().str());</div>
1107
+ <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; svftype = svfst;</div>
1108
+ <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; }</div>
1109
+ <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keyword">auto</span> at = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
1110
+ <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; {</div>
1111
+ <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="keyword">auto</span> svfat = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>(byteSize);</div>
1112
+ <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; svfat-&gt;setNumOfElement(at-&gt;getNumElements());</div>
1113
+ <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; svfat-&gt;setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at-&gt;getElementType()));</div>
1114
+ <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; svftype = svfat;</div>
1115
+ <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; }</div>
1116
+ <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="keywordflow">else</span></div>
1128
1117
  <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; {</div>
1129
- <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <span class="comment">//cast svftype to SVFPointerType</span></div>
1130
- <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* svfPtrType = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(svftype);</div>
1131
- <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; assert(svfPtrType &amp;&amp; <span class="stringliteral">&quot;this is not SVFPointerType&quot;</span>);</div>
1132
- <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; svfPtrType-&gt;<a class="code" href="classSVF_1_1SVFPointerType.html#aaaa79de3df0f6764bfd3d2e487ea7a09">setPtrElementType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(pt)));</div>
1133
- <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; }</div>
1134
- <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; </div>
1135
- <div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <span class="keywordflow">return</span> svftype;</div>
1136
- <div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;}</div>
1118
+ <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>;</div>
1119
+ <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="keyword">auto</span> ot = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(byteSize, T-&gt;isSingleValueType());</div>
1120
+ <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) &lt;&lt; *T;</div>
1121
+ <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; ot-&gt;setRepr(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>));</div>
1122
+ <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; svftype = ot;</div>
1123
+ <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; }</div>
1124
+ <div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; </div>
1125
+ <div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">addTypeInfo</a>(svftype);</div>
1126
+ <div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
1127
+ <div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt = SVFUtil::dyn_cast&lt;PointerType&gt;(T))</div>
1128
+ <div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; {</div>
1129
+ <div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="comment">//cast svftype to SVFPointerType</span></div>
1130
+ <div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* svfPtrType = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(svftype);</div>
1131
+ <div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; assert(svfPtrType &amp;&amp; <span class="stringliteral">&quot;this is not SVFPointerType&quot;</span>);</div>
1132
+ <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; svfPtrType-&gt;<a class="code" href="classSVF_1_1SVFPointerType.html#aaaa79de3df0f6764bfd3d2e487ea7a09">setPtrElementType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(pt)));</div>
1133
+ <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; }</div>
1134
+ <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; </div>
1135
+ <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <span class="keywordflow">return</span> svftype;</div>
1136
+ <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;}</div>
1137
1137
  </div><!-- fragment -->
1138
1138
  </div>
1139
1139
  </div>
@@ -1206,178 +1206,178 @@ Friends</h2></td></tr>
1206
1206
  <p>App Func decl -&gt; <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> extern Func def</p>
1207
1207
  <p>Overwrite App Func def -&gt; <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> extern Func def</p>
1208
1208
 
1209
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00807">807</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1210
- <div class="fragment"><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;{</div>
1211
- <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> funDecls, funDefs, extFuncs, overwriteExtFuncs;</div>
1212
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;string&gt;</a> declNames, defNames, intersectNames;</div>
1213
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, const Function*&gt;</a> NameToFunDefMapTy;</div>
1214
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, Set&lt;const Function*&gt;</a>&gt; NameToFunDeclsMapTy;</div>
1215
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
1216
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div>
1217
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="comment">// extapi.bc functions</span></div>
1218
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">if</span> (mod.getName().str() == <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
1219
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; {</div>
1220
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; fun : mod.functions())</div>
1221
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; {</div>
1222
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="comment">// there is main declaration in ext bc, it should be mapped to</span></div>
1223
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="comment">// main definition in app bc.</span></div>
1224
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">&quot;main&quot;</span>)</div>
1225
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; {</div>
1226
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; funDecls.insert(&amp;fun);</div>
1227
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; declNames.insert(fun.getName().str());</div>
1228
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div>
1229
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">&quot;svf__main&quot;</span>)</div>
1230
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; {</div>
1231
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.push_back(&amp;fun);</div>
1232
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="comment">// Get all called functions in svf_main()</span></div>
1233
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; std::vector&lt;const Function*&gt; calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(&amp;fun);</div>
1234
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), calledFunctions.begin(), calledFunctions.end());</div>
1235
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; }</div>
1236
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">else</span></div>
1237
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; {</div>
1238
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; extFuncs.insert(&amp;fun);</div>
1239
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="comment">// Find overwrite functions in extapi.bc</span></div>
1240
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; std::vector&lt;std::string&gt; annotations =</div>
1241
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">LLVMUtil::getFunAnnotations</a>(&amp;fun);</div>
1242
- <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keyword">auto</span> it =</div>
1243
- <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; std::find_if(annotations.begin(), annotations.end(),</div>
1244
- <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; [&amp;](<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; annotation)</div>
1245
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; {</div>
1246
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; return annotation.find(<span class="stringliteral">&quot;OVERWRITE&quot;</span>) !=</div>
1247
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; std::string::npos;</div>
1248
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; });</div>
1249
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">if</span> (it != annotations.end())</div>
1250
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; {</div>
1251
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; overwriteExtFuncs.insert(&amp;fun);</div>
1252
- <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; }</div>
1253
- <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div>
1254
- <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div>
1255
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; }</div>
1256
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">else</span></div>
1257
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; {</div>
1258
- <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; fun : mod.functions())</div>
1259
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; {</div>
1260
- <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
1261
- <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; {</div>
1262
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; funDecls.insert(&amp;fun);</div>
1263
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; declNames.insert(fun.getName().str());</div>
1264
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; }</div>
1265
- <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">else</span></div>
1266
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; {</div>
1267
- <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; funDefs.insert(&amp;fun);</div>
1268
- <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; defNames.insert(fun.getName().str());</div>
1269
- <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; }</div>
1270
- <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; }</div>
1271
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; }</div>
1272
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; }</div>
1273
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="comment">// Find the intersectNames</span></div>
1274
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; std::set_intersection(</div>
1275
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; declNames.begin(), declNames.end(), defNames.begin(), defNames.end(),</div>
1276
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; std::inserter(intersectNames, intersectNames.end()));</div>
1277
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; </div>
1278
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; NameToFunDefMapTy nameToFunDefMap;</div>
1279
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
1280
- <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; {</div>
1281
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1282
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1283
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; {</div>
1284
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; nameToFunDefMap.emplace(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName), fdef);</div>
1285
- <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; }</div>
1286
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; }</div>
1209
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00818">818</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1210
+ <div class="fragment"><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;{</div>
1211
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> funDecls, funDefs, extFuncs, overwriteExtFuncs;</div>
1212
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;string&gt;</a> declNames, defNames, intersectNames;</div>
1213
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, const Function*&gt;</a> NameToFunDefMapTy;</div>
1214
+ <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, Set&lt;const Function*&gt;</a>&gt; NameToFunDeclsMapTy;</div>
1215
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
1216
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; {</div>
1217
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="comment">// extapi.bc functions</span></div>
1218
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">if</span> (mod.getName().str() == <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
1219
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; {</div>
1220
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; fun : mod.functions())</div>
1221
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; {</div>
1222
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="comment">// there is main declaration in ext bc, it should be mapped to</span></div>
1223
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="comment">// main definition in app bc.</span></div>
1224
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">&quot;main&quot;</span>)</div>
1225
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; {</div>
1226
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; funDecls.insert(&amp;fun);</div>
1227
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; declNames.insert(fun.getName().str());</div>
1228
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; }</div>
1229
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">&quot;svf__main&quot;</span>)</div>
1230
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; {</div>
1231
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.push_back(&amp;fun);</div>
1232
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="comment">// Get all called functions in svf_main()</span></div>
1233
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; std::vector&lt;const Function*&gt; calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(&amp;fun);</div>
1234
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), calledFunctions.begin(), calledFunctions.end());</div>
1235
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; }</div>
1236
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">else</span></div>
1237
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {</div>
1238
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; extFuncs.insert(&amp;fun);</div>
1239
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="comment">// Find overwrite functions in extapi.bc</span></div>
1240
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; std::vector&lt;std::string&gt; annotations =</div>
1241
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">LLVMUtil::getFunAnnotations</a>(&amp;fun);</div>
1242
+ <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keyword">auto</span> it =</div>
1243
+ <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; std::find_if(annotations.begin(), annotations.end(),</div>
1244
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; [&amp;](<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; annotation)</div>
1245
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; {</div>
1246
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; return annotation.find(<span class="stringliteral">&quot;OVERWRITE&quot;</span>) !=</div>
1247
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; std::string::npos;</div>
1248
+ <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; });</div>
1249
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">if</span> (it != annotations.end())</div>
1250
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; {</div>
1251
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; overwriteExtFuncs.insert(&amp;fun);</div>
1252
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div>
1253
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; }</div>
1254
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; }</div>
1255
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; }</div>
1256
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="keywordflow">else</span></div>
1257
+ <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; {</div>
1258
+ <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; fun : mod.functions())</div>
1259
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; {</div>
1260
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
1261
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; {</div>
1262
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; funDecls.insert(&amp;fun);</div>
1263
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; declNames.insert(fun.getName().str());</div>
1264
+ <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; }</div>
1265
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">else</span></div>
1266
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; {</div>
1267
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; funDefs.insert(&amp;fun);</div>
1268
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; defNames.insert(fun.getName().str());</div>
1269
+ <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; }</div>
1270
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; }</div>
1271
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div>
1272
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; }</div>
1273
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="comment">// Find the intersectNames</span></div>
1274
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; std::set_intersection(</div>
1275
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; declNames.begin(), declNames.end(), defNames.begin(), defNames.end(),</div>
1276
+ <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; std::inserter(intersectNames, intersectNames.end()));</div>
1287
1277
  <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; </div>
1288
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; NameToFunDeclsMapTy nameToFunDeclsMap;</div>
1289
- <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1278
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; NameToFunDefMapTy nameToFunDefMap;</div>
1279
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
1290
1280
  <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; {</div>
1291
- <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1281
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1292
1282
  <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1293
1283
  <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; {</div>
1294
- <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="comment">// pair with key funName will be created automatically if it does</span></div>
1295
- <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="comment">// not exist</span></div>
1296
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; nameToFunDeclsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName)].insert(fdecl);</div>
1297
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; }</div>
1298
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; }</div>
1299
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; </div>
1300
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1301
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; {</div>
1302
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1303
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; NameToFunDefMapTy::iterator mit;</div>
1304
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end() &amp;&amp;</div>
1305
- <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; (mit = nameToFunDefMap.find(funName)) != nameToFunDefMap.end())</div>
1306
- <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; {</div>
1307
- <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit-&gt;second;</div>
1308
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; }</div>
1309
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; }</div>
1310
- <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; </div>
1311
- <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
1312
- <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; {</div>
1313
- <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1314
- <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div>
1315
- <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordflow">continue</span>;</div>
1316
- <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div>
1317
- <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div>
1318
- <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">continue</span>;</div>
1319
- <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; </div>
1320
- <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[fdef];</div>
1321
- <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; declsSet = mit-&gt;second;</div>
1322
- <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="comment">// Reserve space for decls to avoid more than 1 reallocation</span></div>
1323
- <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; decls.reserve(decls.size() + declsSet.size());</div>
1324
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; </div>
1325
- <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl : declsSet)</div>
1326
- <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; {</div>
1327
- <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; decls.push_back(decl);</div>
1328
- <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; }</div>
1329
- <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; }</div>
1284
+ <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; nameToFunDefMap.emplace(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName), fdef);</div>
1285
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</div>
1286
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; }</div>
1287
+ <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; </div>
1288
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; NameToFunDeclsMapTy nameToFunDeclsMap;</div>
1289
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1290
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; {</div>
1291
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1292
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1293
+ <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; {</div>
1294
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="comment">// pair with key funName will be created automatically if it does</span></div>
1295
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="comment">// not exist</span></div>
1296
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; nameToFunDeclsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName)].insert(fdecl);</div>
1297
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; }</div>
1298
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; }</div>
1299
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; </div>
1300
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1301
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; {</div>
1302
+ <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1303
+ <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; NameToFunDefMapTy::iterator mit;</div>
1304
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end() &amp;&amp;</div>
1305
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; (mit = nameToFunDefMap.find(funName)) != nameToFunDefMap.end())</div>
1306
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; {</div>
1307
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit-&gt;second;</div>
1308
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; }</div>
1309
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; }</div>
1310
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; </div>
1311
+ <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
1312
+ <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; {</div>
1313
+ <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1314
+ <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div>
1315
+ <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">continue</span>;</div>
1316
+ <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div>
1317
+ <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div>
1318
+ <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">continue</span>;</div>
1330
1319
  <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; </div>
1331
- <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1332
- <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; {</div>
1333
- <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* extfun : extFuncs)</div>
1334
- <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; {</div>
1335
- <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> declName = fdecl-&gt;getName().str();</div>
1336
- <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="comment">// Since C function names cannot include &#39;.&#39;, change the function name from llvm.memcpy.p0i8.p0i8.i64 to llvm_memcpy_p0i8_p0i8_i64.&quot;</span></div>
1337
- <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; std::replace(declName.begin(), declName.end(), <span class="charliteral">&#39;.&#39;</span>, <span class="charliteral">&#39;_&#39;</span>);</div>
1338
- <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">if</span> (extfun-&gt;getName().str().compare(declName) == 0)</div>
1339
- <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; {</div>
1340
- <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="comment">// AppDecl -&gt; ExtDef in Table 1</span></div>
1341
- <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = extfun;</div>
1342
- <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="comment">// ExtDef -&gt; AppDecl in Table 1</span></div>
1343
- <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[extfun];</div>
1344
- <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; decls.push_back(fdecl);</div>
1345
- <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="comment">// Keep all called functions in extfun</span></div>
1346
- <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="comment">// ExtDecl -&gt; ExtDecl in Table 1</span></div>
1347
- <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; std::vector&lt;const Function*&gt; calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(extfun);</div>
1348
- <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), calledFunctions.begin(), calledFunctions.end());</div>
1349
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; }</div>
1350
- <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; }</div>
1351
- <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; }</div>
1352
- <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; </div>
1353
- <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* appfunc : funDefs)</div>
1354
- <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; {</div>
1355
- <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* owfunc : overwriteExtFuncs)</div>
1356
- <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; {</div>
1357
- <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">if</span> (appfunc-&gt;getName().str().compare(owfunc-&gt;getName().str()) == 0)</div>
1358
- <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; {</div>
1359
- <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>*<span class="keyword">&gt;</span>(appfunc);</div>
1360
- <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = fun-&gt;getParent();</div>
1361
- <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* funType = fun-&gt;getFunctionType();</div>
1362
- <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName = fun-&gt;getName().str();</div>
1363
- <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="comment">// Replace app function definition with declaration</span></div>
1364
- <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* declaration = Function::Create(funType, GlobalValue::ExternalLinkage, funName, mod);</div>
1365
- <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; fun-&gt;replaceAllUsesWith(declaration);</div>
1366
- <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; fun-&gt;eraseFromParent();</div>
1367
- <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; declaration-&gt;setName(funName);</div>
1368
- <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="comment">// AppDef -&gt; ExtDef in Table 1, AppDef has been changed to AppDecl</span></div>
1369
- <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[declaration] = owfunc;</div>
1370
- <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <span class="comment">// ExtDef -&gt; AppDef in Table 1</span></div>
1371
- <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[owfunc];</div>
1372
- <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; decls.push_back(declaration);</div>
1373
- <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="comment">// Keep all called functions in owfunc</span></div>
1374
- <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="comment">// ExtDecl -&gt; ExtDecl in Table 1</span></div>
1375
- <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; std::vector&lt;const Function*&gt; calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(owfunc);</div>
1376
- <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), calledFunctions.begin(), calledFunctions.end());</div>
1377
- <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; }</div>
1378
- <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; }</div>
1379
- <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; }</div>
1380
- <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;}</div>
1320
+ <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[fdef];</div>
1321
+ <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; declsSet = mit-&gt;second;</div>
1322
+ <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="comment">// Reserve space for decls to avoid more than 1 reallocation</span></div>
1323
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; decls.reserve(decls.size() + declsSet.size());</div>
1324
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; </div>
1325
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl : declsSet)</div>
1326
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; {</div>
1327
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; decls.push_back(decl);</div>
1328
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; }</div>
1329
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; }</div>
1330
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; </div>
1331
+ <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#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1332
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; {</div>
1333
+ <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#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* extfun : extFuncs)</div>
1334
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; {</div>
1335
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> declName = fdecl-&gt;getName().str();</div>
1336
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="comment">// Since C function names cannot include &#39;.&#39;, change the function name from llvm.memcpy.p0i8.p0i8.i64 to llvm_memcpy_p0i8_p0i8_i64.&quot;</span></div>
1337
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; std::replace(declName.begin(), declName.end(), <span class="charliteral">&#39;.&#39;</span>, <span class="charliteral">&#39;_&#39;</span>);</div>
1338
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">if</span> (extfun-&gt;getName().str().compare(declName) == 0)</div>
1339
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; {</div>
1340
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="comment">// AppDecl -&gt; ExtDef in Table 1</span></div>
1341
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = extfun;</div>
1342
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="comment">// ExtDef -&gt; AppDecl in Table 1</span></div>
1343
+ <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[extfun];</div>
1344
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; decls.push_back(fdecl);</div>
1345
+ <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="comment">// Keep all called functions in extfun</span></div>
1346
+ <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="comment">// ExtDecl -&gt; ExtDecl in Table 1</span></div>
1347
+ <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; std::vector&lt;const Function*&gt; calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(extfun);</div>
1348
+ <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), calledFunctions.begin(), calledFunctions.end());</div>
1349
+ <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; }</div>
1350
+ <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; }</div>
1351
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; }</div>
1352
+ <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; </div>
1353
+ <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* appfunc : funDefs)</div>
1354
+ <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; {</div>
1355
+ <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* owfunc : overwriteExtFuncs)</div>
1356
+ <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; {</div>
1357
+ <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">if</span> (appfunc-&gt;getName().str().compare(owfunc-&gt;getName().str()) == 0)</div>
1358
+ <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; {</div>
1359
+ <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>*<span class="keyword">&gt;</span>(appfunc);</div>
1360
+ <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = fun-&gt;getParent();</div>
1361
+ <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* funType = fun-&gt;getFunctionType();</div>
1362
+ <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName = fun-&gt;getName().str();</div>
1363
+ <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="comment">// Replace app function definition with declaration</span></div>
1364
+ <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* declaration = Function::Create(funType, GlobalValue::ExternalLinkage, funName, mod);</div>
1365
+ <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; fun-&gt;replaceAllUsesWith(declaration);</div>
1366
+ <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; fun-&gt;eraseFromParent();</div>
1367
+ <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; declaration-&gt;setName(funName);</div>
1368
+ <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="comment">// AppDef -&gt; ExtDef in Table 1, AppDef has been changed to AppDecl</span></div>
1369
+ <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[declaration] = owfunc;</div>
1370
+ <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="comment">// ExtDef -&gt; AppDef in Table 1</span></div>
1371
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[owfunc];</div>
1372
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; decls.push_back(declaration);</div>
1373
+ <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="comment">// Keep all called functions in owfunc</span></div>
1374
+ <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="comment">// ExtDecl -&gt; ExtDecl in Table 1</span></div>
1375
+ <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; std::vector&lt;const Function*&gt; calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(owfunc);</div>
1376
+ <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), calledFunctions.begin(), calledFunctions.end());</div>
1377
+ <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; }</div>
1378
+ <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; }</div>
1379
+ <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; }</div>
1380
+ <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;}</div>
1381
1381
  </div><!-- fragment -->
1382
1382
  </div>
1383
1383
  </div>
@@ -1404,47 +1404,47 @@ Friends</h2></td></tr>
1404
1404
  </table>
1405
1405
  </div><div class="memdoc">
1406
1406
 
1407
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00989">989</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1408
- <div class="fragment"><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;{</div>
1409
- <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, Set&lt;GlobalVariable*&gt;</a>&gt; NameToGlobalsMapTy;</div>
1410
- <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; NameToGlobalsMapTy nameToGlobalsMap;</div>
1411
- <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
1412
- <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; {</div>
1413
- <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
1414
- <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : mod.globals())</div>
1415
- <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; {</div>
1416
- <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">if</span> (global.hasPrivateLinkage())</div>
1417
- <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">continue</span>;</div>
1418
- <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="keywordtype">string</span> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = global.getName().str();</div>
1419
- <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>.empty())</div>
1420
- <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordflow">continue</span>;</div>
1421
- <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; nameToGlobalsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)].insert(&amp;global);</div>
1422
- <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; }</div>
1423
- <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; }</div>
1424
- <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; </div>
1425
- <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pair : nameToGlobalsMap)</div>
1426
- <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; {</div>
1427
- <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;GlobalVariable*&gt;</a> &amp;globals = pair.second;</div>
1428
- <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; </div>
1429
- <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> repIt =</div>
1430
- <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; std::find_if(globals.begin(), globals.end(),</div>
1431
- <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; [](<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* g)</div>
1432
- <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; {</div>
1433
- <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; return g-&gt;hasInitializer();</div>
1434
- <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; });</div>
1435
- <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* rep =</div>
1436
- <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; repIt != globals.end()</div>
1437
- <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; ? *repIt</div>
1438
- <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="comment">// When there is no initializer, just pick the first one.</span></div>
1439
- <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; : (assert(!globals.empty() &amp;&amp; <span class="stringliteral">&quot;Empty global set&quot;</span>),</div>
1440
- <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; *globals.begin());</div>
1441
- <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; </div>
1442
- <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* cur : globals)</div>
1407
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01000">1000</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1408
+ <div class="fragment"><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;{</div>
1409
+ <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, Set&lt;GlobalVariable*&gt;</a>&gt; NameToGlobalsMapTy;</div>
1410
+ <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; NameToGlobalsMapTy nameToGlobalsMap;</div>
1411
+ <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
1412
+ <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; {</div>
1413
+ <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
1414
+ <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : mod.globals())</div>
1415
+ <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; {</div>
1416
+ <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">if</span> (global.hasPrivateLinkage())</div>
1417
+ <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">continue</span>;</div>
1418
+ <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <span class="keywordtype">string</span> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = global.getName().str();</div>
1419
+ <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>.empty())</div>
1420
+ <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keywordflow">continue</span>;</div>
1421
+ <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; nameToGlobalsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)].insert(&amp;global);</div>
1422
+ <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; }</div>
1423
+ <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; }</div>
1424
+ <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; </div>
1425
+ <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pair : nameToGlobalsMap)</div>
1426
+ <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; {</div>
1427
+ <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;GlobalVariable*&gt;</a> &amp;globals = pair.second;</div>
1428
+ <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; </div>
1429
+ <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> repIt =</div>
1430
+ <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; std::find_if(globals.begin(), globals.end(),</div>
1431
+ <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; [](<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* g)</div>
1443
1432
  <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; {</div>
1444
- <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>[cur] = rep;</div>
1445
- <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; }</div>
1446
- <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; }</div>
1447
- <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;}</div>
1433
+ <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; return g-&gt;hasInitializer();</div>
1434
+ <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; });</div>
1435
+ <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* rep =</div>
1436
+ <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; repIt != globals.end()</div>
1437
+ <div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; ? *repIt</div>
1438
+ <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <span class="comment">// When there is no initializer, just pick the first one.</span></div>
1439
+ <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; : (assert(!globals.empty() &amp;&amp; <span class="stringliteral">&quot;Empty global set&quot;</span>),</div>
1440
+ <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; *globals.begin());</div>
1441
+ <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; </div>
1442
+ <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* cur : globals)</div>
1443
+ <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; {</div>
1444
+ <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>[cur] = rep;</div>
1445
+ <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; }</div>
1446
+ <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; }</div>
1447
+ <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;}</div>
1448
1448
  </div><!-- fragment -->
1449
1449
  </div>
1450
1450
  </div>
@@ -1623,59 +1623,59 @@ Friends</h2></td></tr>
1623
1623
  <p>Array's flatten field infor is the same as its element's flatten infor.</p>
1624
1624
  <p>Flatten arrays, map each array element index <code>i</code> to flattened index <code>(i * nfE * totalElemNum)/outArrayElemNum</code> nfE&gt;1 if the array element is a struct with more than one field.</p>
1625
1625
 
1626
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01323">1323</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1627
- <div class="fragment"><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;{</div>
1628
- <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty-&gt;getNumElements();</div>
1629
- <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty-&gt;getElementType();</div>
1630
- <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div>
1631
- <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; {</div>
1632
- <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; totalElemNum *= aty-&gt;getNumElements();</div>
1633
- <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; elemTy = aty-&gt;getElementType();</div>
1634
- <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; }</div>
1635
- <div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; </div>
1636
- <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(totalElemNum);</div>
1637
- <div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemSvfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy);</div>
1638
- <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; </div>
1639
- <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keywordflow">if</span> (totalElemNum == 0)</div>
1640
- <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; {</div>
1641
- <div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, 0);</div>
1642
- <div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
1643
- <div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
1644
- <div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
1645
- <div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1646
- <div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; }</div>
1647
- <div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; </div>
1648
- <div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* elemStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
1649
- <div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1650
- <div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1651
- <div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; j++)</div>
1652
- <div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; {</div>
1653
- <div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* fieldTy = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1654
- <div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
1626
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01334">1334</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1627
+ <div class="fragment"><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;{</div>
1628
+ <div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty-&gt;getNumElements();</div>
1629
+ <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty-&gt;getElementType();</div>
1630
+ <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div>
1631
+ <div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; {</div>
1632
+ <div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; totalElemNum *= aty-&gt;getNumElements();</div>
1633
+ <div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; elemTy = aty-&gt;getElementType();</div>
1634
+ <div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; }</div>
1635
+ <div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; </div>
1636
+ <div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(totalElemNum);</div>
1637
+ <div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemSvfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy);</div>
1638
+ <div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; </div>
1639
+ <div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">if</span> (totalElemNum == 0)</div>
1640
+ <div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; {</div>
1641
+ <div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, 0);</div>
1642
+ <div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
1643
+ <div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
1644
+ <div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
1645
+ <div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1655
1646
  <div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; }</div>
1656
1647
  <div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; </div>
1657
- <div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty-&gt;getNumElements();</div>
1658
- <div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; outArrayElemNum; ++i)</div>
1659
- <div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; {</div>
1660
- <div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
1661
- <div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, idx);</div>
1662
- <div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; }</div>
1663
- <div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; </div>
1664
- <div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; totalElemNum; ++i)</div>
1665
- <div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; {</div>
1666
- <div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; ++j)</div>
1667
- <div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; {</div>
1668
- <div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* et = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[j];</div>
1669
- <div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
1670
- <div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; }</div>
1671
- <div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; }</div>
1672
- <div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; </div>
1673
- <div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &amp;&amp;</div>
1674
- <div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <span class="stringliteral">&quot;typeForArray size incorrect!!!&quot;</span>);</div>
1675
- <div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
1676
- <div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; </div>
1677
- <div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1678
- <div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;}</div>
1648
+ <div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* elemStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
1649
+ <div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1650
+ <div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1651
+ <div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; j++)</div>
1652
+ <div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; {</div>
1653
+ <div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* fieldTy = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1654
+ <div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
1655
+ <div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; }</div>
1656
+ <div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; </div>
1657
+ <div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty-&gt;getNumElements();</div>
1658
+ <div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; outArrayElemNum; ++i)</div>
1659
+ <div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; {</div>
1660
+ <div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
1661
+ <div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, idx);</div>
1662
+ <div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; }</div>
1663
+ <div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; </div>
1664
+ <div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; totalElemNum; ++i)</div>
1665
+ <div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; {</div>
1666
+ <div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; ++j)</div>
1667
+ <div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; {</div>
1668
+ <div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* et = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[j];</div>
1669
+ <div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
1670
+ <div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; }</div>
1671
+ <div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; }</div>
1672
+ <div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; </div>
1673
+ <div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &amp;&amp;</div>
1674
+ <div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <span class="stringliteral">&quot;typeForArray size incorrect!!!&quot;</span>);</div>
1675
+ <div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
1676
+ <div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; </div>
1677
+ <div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1678
+ <div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;}</div>
1679
1679
  </div><!-- fragment -->
1680
1680
  </div>
1681
1681
  </div>
@@ -1707,18 +1707,18 @@ Friends</h2></td></tr>
1707
1707
  <p>Collect simple type (non-aggregate) info </p>
1708
1708
  <p>Only one field</p>
1709
1709
 
1710
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01443">1443</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1711
- <div class="fragment"><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;{</div>
1712
- <div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div>
1713
- <div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty);</div>
1714
- <div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, svfType, 0);</div>
1715
- <div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; </div>
1716
- <div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
1717
- <div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
1718
- <div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
1719
- <div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; </div>
1720
- <div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1721
- <div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;}</div>
1710
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01454">1454</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1711
+ <div class="fragment"><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;{</div>
1712
+ <div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div>
1713
+ <div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty);</div>
1714
+ <div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, svfType, 0);</div>
1715
+ <div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; </div>
1716
+ <div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
1717
+ <div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
1718
+ <div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
1719
+ <div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; </div>
1720
+ <div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1721
+ <div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;}</div>
1722
1722
  </div><!-- fragment -->
1723
1723
  </div>
1724
1724
  </div>
@@ -1760,56 +1760,56 @@ Friends</h2></td></tr>
1760
1760
  <p>Fill in struct_info for T. Given a Struct type, we recursively extend and record its fields and types. </p>
1761
1761
  <p>The struct info should not be processed before</p>
1762
1762
 
1763
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01386">1386</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1764
- <div class="fragment"><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;{</div>
1765
- <div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div>
1766
- <div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; </div>
1767
- <div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div>
1768
- <div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; numFields = 0;</div>
1769
- <div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; <span class="comment">// The offset when considering array stride info</span></div>
1770
- <div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div>
1771
- <div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy : structTy-&gt;elements())</div>
1772
- <div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; {</div>
1773
- <div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemSvfTy = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy);</div>
1774
- <div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <span class="comment">// offset with int_32 (s32_t) is large enough and won&#39;t overflow</span></div>
1775
- <div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
1776
- <div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; </div>
1777
- <div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(elemTy))</div>
1778
- <div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; {</div>
1779
- <div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* subStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
1780
- <div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1781
- <div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1782
- <div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; <span class="comment">// Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div>
1783
- <div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; ++j)</div>
1784
- <div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; {</div>
1785
- <div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1786
- <div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
1787
- <div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; }</div>
1788
- <div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; numFields += nfF;</div>
1789
- <div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; strideOffset += nfE;</div>
1790
- <div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj &lt; nfE; ++tpj)</div>
1791
- <div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; {</div>
1792
- <div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[tpj];</div>
1793
- <div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
1794
- <div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; }</div>
1795
- <div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; </div>
1796
- <div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; }</div>
1797
- <div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; <span class="keywordflow">else</span></div>
1798
- <div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; {</div>
1799
- <div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="comment">// Simple type</span></div>
1800
- <div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; numFields += 1;</div>
1801
- <div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; strideOffset += 1;</div>
1802
- <div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
1803
- <div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
1804
- <div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; }</div>
1805
- <div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; }</div>
1763
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01397">1397</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1764
+ <div class="fragment"><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;{</div>
1765
+ <div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div>
1766
+ <div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; </div>
1767
+ <div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div>
1768
+ <div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; numFields = 0;</div>
1769
+ <div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; <span class="comment">// The offset when considering array stride info</span></div>
1770
+ <div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div>
1771
+ <div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy : structTy-&gt;elements())</div>
1772
+ <div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; {</div>
1773
+ <div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemSvfTy = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy);</div>
1774
+ <div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="comment">// offset with int_32 (s32_t) is large enough and won&#39;t overflow</span></div>
1775
+ <div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
1776
+ <div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; </div>
1777
+ <div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(elemTy))</div>
1778
+ <div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; {</div>
1779
+ <div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* subStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
1780
+ <div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1781
+ <div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1782
+ <div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <span class="comment">// Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div>
1783
+ <div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; ++j)</div>
1784
+ <div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; {</div>
1785
+ <div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1786
+ <div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
1787
+ <div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; }</div>
1788
+ <div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; numFields += nfF;</div>
1789
+ <div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; strideOffset += nfE;</div>
1790
+ <div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj &lt; nfE; ++tpj)</div>
1791
+ <div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; {</div>
1792
+ <div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[tpj];</div>
1793
+ <div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
1794
+ <div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; }</div>
1806
1795
  <div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; </div>
1807
- <div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp;</div>
1808
- <div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div>
1809
- <div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
1810
- <div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; </div>
1811
- <div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1812
- <div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;}</div>
1796
+ <div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; }</div>
1797
+ <div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; <span class="keywordflow">else</span></div>
1798
+ <div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; {</div>
1799
+ <div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; <span class="comment">// Simple type</span></div>
1800
+ <div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; numFields += 1;</div>
1801
+ <div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; strideOffset += 1;</div>
1802
+ <div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
1803
+ <div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
1804
+ <div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; }</div>
1805
+ <div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; }</div>
1806
+ <div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; </div>
1807
+ <div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp;</div>
1808
+ <div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div>
1809
+ <div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
1810
+ <div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; </div>
1811
+ <div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1812
+ <div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;}</div>
1813
1813
  </div><!-- fragment -->
1814
1814
  </div>
1815
1815
  </div>
@@ -1839,37 +1839,37 @@ Friends</h2></td></tr>
1839
1839
 
1840
1840
  <p>Collect a type info. </p>
1841
1841
 
1842
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01222">1222</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1843
- <div class="fragment"><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;{</div>
1844
- <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
1845
- <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">if</span> (tit != <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div>
1846
- <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; {</div>
1847
- <div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <span class="keywordflow">return</span> tit-&gt;second;</div>
1848
- <div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; }</div>
1849
- <div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <span class="comment">// No such StInfo for T, create it now.</span></div>
1850
- <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
1851
- <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
1852
- <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; {</div>
1853
- <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
1854
- <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; }</div>
1855
- <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* sty = SVFUtil::dyn_cast&lt;StructType&gt;(T))</div>
1856
- <div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; {</div>
1857
- <div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div>
1858
- <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
1859
- <div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keywordflow">if</span> (nf &gt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div>
1860
- <div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; {</div>
1861
- <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">maxStruct</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(sty);</div>
1862
- <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div>
1863
- <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; }</div>
1864
- <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; }</div>
1865
- <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="keywordflow">else</span></div>
1866
- <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; {</div>
1867
- <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
1868
- <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; }</div>
1869
- <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
1870
- <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a72be32d606db86090067159de44e01ec">addStInfo</a>(stInfo);</div>
1871
- <div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1872
- <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;}</div>
1842
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01233">1233</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1843
+ <div class="fragment"><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;{</div>
1844
+ <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
1845
+ <div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="keywordflow">if</span> (tit != <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div>
1846
+ <div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; {</div>
1847
+ <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keywordflow">return</span> tit-&gt;second;</div>
1848
+ <div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; }</div>
1849
+ <div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <span class="comment">// No such StInfo for T, create it now.</span></div>
1850
+ <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
1851
+ <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
1852
+ <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; {</div>
1853
+ <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
1854
+ <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; }</div>
1855
+ <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* sty = SVFUtil::dyn_cast&lt;StructType&gt;(T))</div>
1856
+ <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; {</div>
1857
+ <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div>
1858
+ <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
1859
+ <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">if</span> (nf &gt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div>
1860
+ <div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; {</div>
1861
+ <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">maxStruct</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(sty);</div>
1862
+ <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div>
1863
+ <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; }</div>
1864
+ <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; }</div>
1865
+ <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="keywordflow">else</span></div>
1866
+ <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; {</div>
1867
+ <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
1868
+ <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; }</div>
1869
+ <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
1870
+ <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a72be32d606db86090067159de44e01ec">addStInfo</a>(stInfo);</div>
1871
+ <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1872
+ <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;}</div>
1873
1873
  </div><!-- fragment -->
1874
1874
  </div>
1875
1875
  </div>
@@ -2075,30 +2075,30 @@ Friends</h2></td></tr>
2075
2075
  </table>
2076
2076
  </div><div class="memdoc">
2077
2077
 
2078
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01032">1032</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2079
- <div class="fragment"><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;{</div>
2080
- <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
2081
- <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; {</div>
2082
- <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName = mod.getName().str();</div>
2083
- <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> OutputFilename;</div>
2084
- <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; std::size_t pos = moduleName.rfind(<span class="charliteral">&#39;.&#39;</span>);</div>
2085
- <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">if</span> (pos != std::string::npos)</div>
2086
- <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; OutputFilename = moduleName.substr(0, pos) + suffix;</div>
2087
- <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="keywordflow">else</span></div>
2088
- <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; OutputFilename = moduleName + suffix;</div>
2089
- <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; </div>
2090
- <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; std::error_code EC;</div>
2091
- <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> OS(OutputFilename.c_str(), EC, llvm::sys::fs::OF_None);</div>
2092
- <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; </div>
2093
- <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 7)</span></div>
2094
- <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; WriteBitcodeToFile(mod, OS);</div>
2095
- <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;<span class="preprocessor">#else</span></div>
2096
- <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; WriteBitcodeToFile(&amp;mod, OS);</div>
2097
- <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="preprocessor">#endif</span></div>
2098
- <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; </div>
2099
- <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; OS.flush();</div>
2100
- <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; }</div>
2101
- <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;}</div>
2078
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01043">1043</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2079
+ <div class="fragment"><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;{</div>
2080
+ <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
2081
+ <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; {</div>
2082
+ <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName = mod.getName().str();</div>
2083
+ <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> OutputFilename;</div>
2084
+ <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; std::size_t pos = moduleName.rfind(<span class="charliteral">&#39;.&#39;</span>);</div>
2085
+ <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keywordflow">if</span> (pos != std::string::npos)</div>
2086
+ <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; OutputFilename = moduleName.substr(0, pos) + suffix;</div>
2087
+ <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keywordflow">else</span></div>
2088
+ <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; OutputFilename = moduleName + suffix;</div>
2089
+ <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; </div>
2090
+ <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; std::error_code EC;</div>
2091
+ <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> OS(OutputFilename.c_str(), EC, llvm::sys::fs::OF_None);</div>
2092
+ <div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; </div>
2093
+ <div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 7)</span></div>
2094
+ <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; WriteBitcodeToFile(mod, OS);</div>
2095
+ <div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;<span class="preprocessor">#else</span></div>
2096
+ <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; WriteBitcodeToFile(&amp;mod, OS);</div>
2097
+ <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;<span class="preprocessor">#endif</span></div>
2098
+ <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; </div>
2099
+ <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; OS.flush();</div>
2100
+ <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; }</div>
2101
+ <div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;}</div>
2102
2102
  </div><!-- fragment -->
2103
2103
  </div>
2104
2104
  </div>
@@ -2291,94 +2291,94 @@ Friends</h2></td></tr>
2291
2291
  </table>
2292
2292
  </div><div class="memdoc">
2293
2293
 
2294
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00561">561</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2295
- <div class="fragment"><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;{</div>
2296
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="comment">// This function is used to extract constructor and destructor functions</span></div>
2297
- <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div>
2298
- <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div>
2299
- <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div>
2300
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2301
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div>
2302
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="comment">//</span></div>
2303
- <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div>
2304
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div>
2305
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div>
2306
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div>
2307
- <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2308
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div>
2309
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div>
2310
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="comment">// function will only run if the associated data from the current module is</span></div>
2311
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="comment">// not discarded. However the associated data is currently ignored.</span></div>
2312
- <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; </div>
2313
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; </div>
2314
- <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div>
2315
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">// their priority. Each object of this class stands for an item in the</span></div>
2316
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="comment">// function array.</span></div>
2317
- <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keyword">class </span>LLVMGlobalFunction</div>
2318
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {</div>
2319
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keyword">public</span>:</div>
2320
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> priority;</div>
2321
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div>
2322
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; LLVMGlobalFunction() {};</div>
2323
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; LLVMGlobalFunction(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> _priority, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* _func)</div>
2324
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; : priority(_priority), func(_func) {};</div>
2325
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">operator&gt;</a>(<span class="keyword">const</span> LLVMGlobalFunction &amp;other)<span class="keyword"> const</span></div>
2326
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="keyword"> </span>{</div>
2327
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">if</span> (priority != other.priority)</div>
2328
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div>
2329
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">return</span> priority &gt; other.priority;</div>
2330
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div>
2331
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">else</span></div>
2332
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; {</div>
2333
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">return</span> func &gt; other.func;</div>
2334
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div>
2335
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; }</div>
2336
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; };</div>
2337
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; </div>
2338
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; std::priority_queue&lt;LLVMGlobalFunction, std::vector&lt;LLVMGlobalFunction&gt;,</div>
2339
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; greater&lt;LLVMGlobalFunction&gt;&gt;</div>
2340
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; queue;</div>
2341
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; std::vector&lt;const Function* &gt; result;</div>
2342
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; </div>
2343
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div>
2344
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div>
2345
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="comment">// First get the array here.</span></div>
2346
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *globalFuncArray =</div>
2347
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; SVFUtil::dyn_cast&lt;ConstantArray&gt;(global-&gt;getInitializer()))</div>
2348
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div>
2349
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="comment">// Get each struct in the array.</span></div>
2350
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; globalFuncArray-&gt;getNumOperands(); ++i)</div>
2351
- <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; {</div>
2352
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">if</span> (</div>
2353
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div>
2354
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; SVFUtil::dyn_cast&lt;ConstantStruct&gt;(</div>
2355
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; globalFuncArray-&gt;getOperand(i)))</div>
2356
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; {</div>
2357
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; </div>
2358
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="comment">// Extract priority and function from the struct</span></div>
2359
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = SVFUtil::dyn_cast&lt;ConstantInt&gt;(</div>
2360
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; globalFuncItem-&gt;getOperand(0));</div>
2361
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(</div>
2362
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; globalFuncItem-&gt;getOperand(1));</div>
2363
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; </div>
2364
- <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">if</span> (priority &amp;&amp; func)</div>
2365
- <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; {</div>
2366
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; queue.push(LLVMGlobalFunction(priority</div>
2367
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; -&gt;getZExtValue(),</div>
2368
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; func));</div>
2369
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div>
2370
- <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div>
2371
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; }</div>
2372
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; }</div>
2373
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; </div>
2374
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div>
2375
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">while</span> (!queue.empty())</div>
2376
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; {</div>
2377
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; result.push_back(queue.top().func);</div>
2378
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; queue.pop();</div>
2379
- <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</div>
2380
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">return</span> result;</div>
2381
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;}</div>
2294
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00572">572</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2295
+ <div class="fragment"><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;{</div>
2296
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="comment">// This function is used to extract constructor and destructor functions</span></div>
2297
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div>
2298
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div>
2299
+ <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div>
2300
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2301
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div>
2302
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="comment">//</span></div>
2303
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div>
2304
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div>
2305
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div>
2306
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div>
2307
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2308
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div>
2309
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div>
2310
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="comment">// function will only run if the associated data from the current module is</span></div>
2311
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="comment">// not discarded. However the associated data is currently ignored.</span></div>
2312
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; </div>
2313
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; </div>
2314
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div>
2315
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="comment">// their priority. Each object of this class stands for an item in the</span></div>
2316
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="comment">// function array.</span></div>
2317
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keyword">class </span>LLVMGlobalFunction</div>
2318
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; {</div>
2319
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keyword">public</span>:</div>
2320
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> priority;</div>
2321
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div>
2322
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; LLVMGlobalFunction() {};</div>
2323
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; LLVMGlobalFunction(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> _priority, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* _func)</div>
2324
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; : priority(_priority), func(_func) {};</div>
2325
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">operator&gt;</a>(<span class="keyword">const</span> LLVMGlobalFunction &amp;other)<span class="keyword"> const</span></div>
2326
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="keyword"> </span>{</div>
2327
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">if</span> (priority != other.priority)</div>
2328
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div>
2329
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">return</span> priority &gt; other.priority;</div>
2330
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }</div>
2331
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">else</span></div>
2332
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; {</div>
2333
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">return</span> func &gt; other.func;</div>
2334
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; }</div>
2335
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div>
2336
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; };</div>
2337
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; </div>
2338
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; std::priority_queue&lt;LLVMGlobalFunction, std::vector&lt;LLVMGlobalFunction&gt;,</div>
2339
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; greater&lt;LLVMGlobalFunction&gt;&gt;</div>
2340
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; queue;</div>
2341
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; std::vector&lt;const Function* &gt; result;</div>
2342
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; </div>
2343
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div>
2344
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div>
2345
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="comment">// First get the array here.</span></div>
2346
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *globalFuncArray =</div>
2347
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; SVFUtil::dyn_cast&lt;ConstantArray&gt;(global-&gt;getInitializer()))</div>
2348
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; {</div>
2349
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="comment">// Get each struct in the array.</span></div>
2350
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; globalFuncArray-&gt;getNumOperands(); ++i)</div>
2351
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; {</div>
2352
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (</div>
2353
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div>
2354
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; SVFUtil::dyn_cast&lt;ConstantStruct&gt;(</div>
2355
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; globalFuncArray-&gt;getOperand(i)))</div>
2356
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; {</div>
2357
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; </div>
2358
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="comment">// Extract priority and function from the struct</span></div>
2359
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = SVFUtil::dyn_cast&lt;ConstantInt&gt;(</div>
2360
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; globalFuncItem-&gt;getOperand(0));</div>
2361
+ <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(</div>
2362
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; globalFuncItem-&gt;getOperand(1));</div>
2363
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; </div>
2364
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">if</span> (priority &amp;&amp; func)</div>
2365
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; {</div>
2366
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; queue.push(LLVMGlobalFunction(priority</div>
2367
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; -&gt;getZExtValue(),</div>
2368
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; func));</div>
2369
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; }</div>
2370
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
2371
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; }</div>
2372
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; }</div>
2373
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; </div>
2374
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div>
2375
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">while</span> (!queue.empty())</div>
2376
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div>
2377
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; result.push_back(queue.top().func);</div>
2378
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; queue.pop();</div>
2379
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div>
2380
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">return</span> result;</div>
2381
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;}</div>
2382
2382
  </div><!-- fragment -->
2383
2383
  </div>
2384
2384
  </div>
@@ -2462,16 +2462,16 @@ Friends</h2></td></tr>
2462
2462
 
2463
2463
  <p>Get LLVM Type. </p>
2464
2464
 
2465
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01188">1188</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2466
- <div class="fragment"><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;{</div>
2467
- <div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="keywordflow">for</span>(LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.begin(), eit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end(); it!=eit; ++it)</div>
2468
- <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; {</div>
2469
- <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keywordflow">if</span> (it-&gt;second == T)</div>
2470
- <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">return</span> it-&gt;first;</div>
2471
- <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; }</div>
2472
- <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;can&#39;t find the corresponding LLVM Type&quot;</span>);</div>
2473
- <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; abort();</div>
2474
- <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;}</div>
2465
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01199">1199</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2466
+ <div class="fragment"><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;{</div>
2467
+ <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">for</span>(LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.begin(), eit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end(); it!=eit; ++it)</div>
2468
+ <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; {</div>
2469
+ <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <span class="keywordflow">if</span> (it-&gt;second == T)</div>
2470
+ <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; <span class="keywordflow">return</span> it-&gt;first;</div>
2471
+ <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; }</div>
2472
+ <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;can&#39;t find the corresponding LLVM Type&quot;</span>);</div>
2473
+ <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; abort();</div>
2474
+ <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;}</div>
2475
2475
  </div><!-- fragment -->
2476
2476
  </div>
2477
2477
  </div>
@@ -2647,21 +2647,21 @@ Friends</h2></td></tr>
2647
2647
  </table>
2648
2648
  </div><div class="memdoc">
2649
2649
 
2650
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01130">1130</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2651
- <div class="fragment"><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;{</div>
2652
- <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
2653
- <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2654
- <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; {</div>
2655
- <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2656
- <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; }</div>
2657
- <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keywordflow">else</span></div>
2658
- <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; {</div>
2659
- <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>* svfoc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(oc-&gt;getType()));</div>
2660
- <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfoc);</div>
2661
- <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
2662
- <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keywordflow">return</span> svfoc;</div>
2663
- <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; }</div>
2664
- <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;}</div>
2650
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01141">1141</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2651
+ <div class="fragment"><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;{</div>
2652
+ <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
2653
+ <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2654
+ <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; {</div>
2655
+ <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2656
+ <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; }</div>
2657
+ <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">else</span></div>
2658
+ <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; {</div>
2659
+ <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>* svfoc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(oc-&gt;getType()));</div>
2660
+ <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfoc);</div>
2661
+ <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
2662
+ <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="keywordflow">return</span> svfoc;</div>
2663
+ <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; }</div>
2664
+ <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;}</div>
2665
2665
  </div><!-- fragment -->
2666
2666
  </div>
2667
2667
  </div>
@@ -2748,49 +2748,49 @@ Friends</h2></td></tr>
2748
2748
  </div><div class="memdoc">
2749
2749
  <p>bitwidth == 1 : cint has value from getZExtValue() because <code>bool true</code> will be translated to -1 using sign extension (i.e., getSExtValue). bitwidth &lt;=64 1 : cint has value from getSExtValue() bitwidth &gt;64 1 : cint has value 0 because it represents an invalid int</p>
2750
2750
 
2751
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01083">1083</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2752
- <div class="fragment"><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;{</div>
2753
- <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div>
2754
- <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2755
- <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; {</div>
2756
- <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; assert(SVFUtil::isa&lt;SVFConstantData&gt;(it-&gt;second) &amp;&amp; <span class="stringliteral">&quot;not a SVFConstantData type!&quot;</span>);</div>
2757
- <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;SVFConstantData&gt;(it-&gt;second);</div>
2758
- <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; }</div>
2759
- <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordflow">else</span></div>
2760
- <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; {</div>
2761
- <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div>
2762
- <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* cint = SVFUtil::dyn_cast&lt;ConstantInt&gt;(cd))</div>
2763
- <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; {</div>
2764
- <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordflow">if</span>(cint-&gt;getBitWidth() == 1)</div>
2765
- <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint-&gt;getType()), cint-&gt;getZExtValue(), cint-&gt;getZExtValue());</div>
2766
- <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cint-&gt;getBitWidth() &lt;= 64 &amp;&amp; cint-&gt;getBitWidth() &gt; 1)</div>
2767
- <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint-&gt;getType()), cint-&gt;getZExtValue(), cint-&gt;getSExtValue());</div>
2768
- <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keywordflow">else</span></div>
2769
- <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint-&gt;getType()), 0, 0);</div>
2770
- <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; }</div>
2771
- <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad49e4222ba46d9490b87a80df8b46800">ConstantFP</a>* cfp = SVFUtil::dyn_cast&lt;ConstantFP&gt;(cd))</div>
2772
- <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; {</div>
2773
- <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordtype">double</span> dval = 0;</div>
2774
- <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="comment">// TODO: Why only double is considered? What about float?</span></div>
2775
- <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordflow">if</span>(cfp-&gt;isNormalFP() &amp;&amp; (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEdouble()))</div>
2776
- <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; dval = cfp-&gt;getValueAPF().convertToDouble();</div>
2777
- <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantFP.html">SVFConstantFP</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()), dval);</div>
2778
- <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; }</div>
2779
- <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantPointerNull&gt;(cd))</div>
2780
- <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantNullPtr.html">SVFConstantNullPtr</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div>
2781
- <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UndefValue&gt;(cd))</div>
2782
- <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBlackHoleValue.html">SVFBlackHoleValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div>
2783
- <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keywordflow">else</span></div>
2784
- <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div>
2785
- <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; </div>
2786
- <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keywordflow">if</span> (cd-&gt;hasName())</div>
2787
- <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; svfcd-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(cd-&gt;getName().str());</div>
2788
- <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; </div>
2789
- <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfcd);</div>
2790
- <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
2791
- <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="keywordflow">return</span> svfcd;</div>
2792
- <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; }</div>
2793
- <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;}</div>
2751
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01094">1094</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2752
+ <div class="fragment"><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;{</div>
2753
+ <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div>
2754
+ <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2755
+ <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; {</div>
2756
+ <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; assert(SVFUtil::isa&lt;SVFConstantData&gt;(it-&gt;second) &amp;&amp; <span class="stringliteral">&quot;not a SVFConstantData type!&quot;</span>);</div>
2757
+ <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;SVFConstantData&gt;(it-&gt;second);</div>
2758
+ <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; }</div>
2759
+ <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">else</span></div>
2760
+ <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; {</div>
2761
+ <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div>
2762
+ <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* cint = SVFUtil::dyn_cast&lt;ConstantInt&gt;(cd))</div>
2763
+ <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; {</div>
2764
+ <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordflow">if</span>(cint-&gt;getBitWidth() == 1)</div>
2765
+ <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint-&gt;getType()), cint-&gt;getZExtValue(), cint-&gt;getZExtValue());</div>
2766
+ <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cint-&gt;getBitWidth() &lt;= 64 &amp;&amp; cint-&gt;getBitWidth() &gt; 1)</div>
2767
+ <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint-&gt;getType()), cint-&gt;getZExtValue(), cint-&gt;getSExtValue());</div>
2768
+ <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">else</span></div>
2769
+ <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint-&gt;getType()), 0, 0);</div>
2770
+ <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</div>
2771
+ <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad49e4222ba46d9490b87a80df8b46800">ConstantFP</a>* cfp = SVFUtil::dyn_cast&lt;ConstantFP&gt;(cd))</div>
2772
+ <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; {</div>
2773
+ <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordtype">double</span> dval = 0;</div>
2774
+ <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="comment">// TODO: Why only double is considered? What about float?</span></div>
2775
+ <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keywordflow">if</span>(cfp-&gt;isNormalFP() &amp;&amp; (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEdouble()))</div>
2776
+ <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; dval = cfp-&gt;getValueAPF().convertToDouble();</div>
2777
+ <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantFP.html">SVFConstantFP</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()), dval);</div>
2778
+ <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; }</div>
2779
+ <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantPointerNull&gt;(cd))</div>
2780
+ <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantNullPtr.html">SVFConstantNullPtr</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div>
2781
+ <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UndefValue&gt;(cd))</div>
2782
+ <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBlackHoleValue.html">SVFBlackHoleValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div>
2783
+ <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keywordflow">else</span></div>
2784
+ <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div>
2785
+ <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; </div>
2786
+ <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">if</span> (cd-&gt;hasName())</div>
2787
+ <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; svfcd-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(cd-&gt;getName().str());</div>
2788
+ <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; </div>
2789
+ <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfcd);</div>
2790
+ <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
2791
+ <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keywordflow">return</span> svfcd;</div>
2792
+ <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; }</div>
2793
+ <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;}</div>
2794
2794
  </div><!-- fragment -->
2795
2795
  </div>
2796
2796
  </div>
@@ -2984,24 +2984,24 @@ Friends</h2></td></tr>
2984
2984
  </table>
2985
2985
  </div><div class="memdoc">
2986
2986
 
2987
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01146">1146</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2988
- <div class="fragment"><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;{</div>
2989
- <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
2990
- <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
2991
- <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; {</div>
2992
- <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2993
- <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; }</div>
2994
- <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="keywordflow">else</span></div>
2995
- <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; {</div>
2996
- <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
2997
- <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; SVFUtil::isa&lt;MetadataAsValue&gt;(ov)</div>
2998
- <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; ? <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFMetadataAsValue.html">SVFMetadataAsValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()))</div>
2999
- <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; : new <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()));</div>
3000
- <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a48d7f0643bb228701dcabb88ef541fca">addOtherValue</a>(svfov);</div>
3001
- <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
3002
- <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">return</span> svfov;</div>
3003
- <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; }</div>
3004
- <div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;}</div>
2987
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01157">1157</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2988
+ <div class="fragment"><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;{</div>
2989
+ <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
2990
+ <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
2991
+ <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; {</div>
2992
+ <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2993
+ <div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; }</div>
2994
+ <div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; <span class="keywordflow">else</span></div>
2995
+ <div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; {</div>
2996
+ <div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
2997
+ <div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; SVFUtil::isa&lt;MetadataAsValue&gt;(ov)</div>
2998
+ <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; ? <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFMetadataAsValue.html">SVFMetadataAsValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()))</div>
2999
+ <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; : new <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()));</div>
3000
+ <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a48d7f0643bb228701dcabb88ef541fca">addOtherValue</a>(svfov);</div>
3001
+ <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
3002
+ <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">return</span> svfov;</div>
3003
+ <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; }</div>
3004
+ <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;}</div>
3005
3005
  </div><!-- fragment -->
3006
3006
  </div>
3007
3007
  </div>
@@ -3025,20 +3025,20 @@ Friends</h2></td></tr>
3025
3025
  <p>Get or create <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> and typeinfo </p>
3026
3026
  <p>TODO: set the void* to every element for now (imprecise) For example, [getPointerTo(): char -&mdash;&gt; i8*] [getPointerTo(): int -&mdash;&gt; i8*] [getPointerTo(): struct -&mdash;&gt; i8*]</p>
3027
3027
 
3028
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01202">1202</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3029
- <div class="fragment"><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;{</div>
3030
- <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; assert(T &amp;&amp; <span class="stringliteral">&quot;SVFType should not be null&quot;</span>);</div>
3031
- <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
3032
- <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
3033
- <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
3034
- <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; </div>
3035
- <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">addSVFTypeInfo</a>(T);</div>
3036
- <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(T);</div>
3037
- <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
3038
- <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = PointerType::getInt8PtrTy(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>());</div>
3039
- <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a3ddabbd763acaaca28cacbabe5bc7f3b">setPointerTo</a>(SVFUtil::cast&lt;SVFPointerType&gt;(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ptrTy)));</div>
3040
- <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">return</span> svfType;</div>
3041
- <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;}</div>
3028
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01213">1213</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3029
+ <div class="fragment"><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;{</div>
3030
+ <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; assert(T &amp;&amp; <span class="stringliteral">&quot;SVFType should not be null&quot;</span>);</div>
3031
+ <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
3032
+ <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
3033
+ <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
3034
+ <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; </div>
3035
+ <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">addSVFTypeInfo</a>(T);</div>
3036
+ <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(T);</div>
3037
+ <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
3038
+ <div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = PointerType::getInt8PtrTy(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>());</div>
3039
+ <div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a3ddabbd763acaaca28cacbabe5bc7f3b">setPointerTo</a>(SVFUtil::cast&lt;SVFPointerType&gt;(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ptrTy)));</div>
3040
+ <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="keywordflow">return</span> svfType;</div>
3041
+ <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;}</div>
3042
3042
  </div><!-- fragment -->
3043
3043
  </div>
3044
3044
  </div>
@@ -3058,28 +3058,28 @@ Friends</h2></td></tr>
3058
3058
  </table>
3059
3059
  </div><div class="memdoc">
3060
3060
 
3061
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01165">1165</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3062
- <div class="fragment"><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;{</div>
3063
- <div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast&lt;Function&gt;(value))</div>
3064
- <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
3065
- <div class="line"><a name="l01169"></a><span class="lineno"> 1169</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;(value))</div>
3066
- <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
3067
- <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">else</span> <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>
3068
- <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
3069
- <div class="line"><a name="l01173"></a><span class="lineno"> 1173</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>
3070
- <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
3071
- <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* cons = SVFUtil::dyn_cast&lt;Constant&gt;(value))</div>
3072
- <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; {</div>
3073
- <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* cd = SVFUtil::dyn_cast&lt;ConstantData&gt;(cons))</div>
3074
- <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
3075
- <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a>* glob = SVFUtil::dyn_cast&lt;GlobalValue&gt;(cons))</div>
3076
- <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
3077
- <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">else</span></div>
3078
- <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
3079
- <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; }</div>
3080
- <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="keywordflow">else</span></div>
3081
- <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
3082
- <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;}</div>
3061
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01176">1176</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3062
+ <div class="fragment"><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;{</div>
3063
+ <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast&lt;Function&gt;(value))</div>
3064
+ <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
3065
+ <div class="line"><a name="l01180"></a><span class="lineno"> 1180</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;(value))</div>
3066
+ <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
3067
+ <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">else</span> <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>
3068
+ <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
3069
+ <div class="line"><a name="l01184"></a><span class="lineno"> 1184</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>
3070
+ <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
3071
+ <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* cons = SVFUtil::dyn_cast&lt;Constant&gt;(value))</div>
3072
+ <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; {</div>
3073
+ <div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* cd = SVFUtil::dyn_cast&lt;ConstantData&gt;(cons))</div>
3074
+ <div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
3075
+ <div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a>* glob = SVFUtil::dyn_cast&lt;GlobalValue&gt;(cons))</div>
3076
+ <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
3077
+ <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keywordflow">else</span></div>
3078
+ <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
3079
+ <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; }</div>
3080
+ <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="keywordflow">else</span></div>
3081
+ <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
3082
+ <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;}</div>
3083
3083
  </div><!-- fragment -->
3084
3084
  </div>
3085
3085
  </div>
@@ -3223,74 +3223,74 @@ Friends</h2></td></tr>
3223
3223
  </table>
3224
3224
  </div><div class="memdoc">
3225
3225
 
3226
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00359">359</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3227
- <div class="fragment"><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;{</div>
3228
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div>
3229
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span>;</div>
3230
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">//process and stored dt &amp; df</span></div>
3231
- <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
3232
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div>
3233
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</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>
3234
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; df.analyze(dt);</div>
3235
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div>
3236
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a> pdt = <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp;<span class="keyword">&gt;</span>(*fun));</div>
3237
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun-&gt;getLoopAndDomInfo();</div>
3238
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; </div>
3239
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFBasicBlock*,Set&lt;const SVFBasicBlock*&gt;</a>&gt; &amp; dfBBsMap = ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae37546be7304c66b4eca2654d995eaa7">getDomFrontierMap</a>();</div>
3240
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div>
3241
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div>
3242
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter-&gt;first;</div>
3243
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">const</span> std::set&lt;BasicBlock* &gt;&amp; domSet = dfIter-&gt;second;</div>
3244
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFBasicBlock*&gt;</a>&amp; valueBasicBlocks = dfBBsMap[<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(keyBB)];</div>
3245
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div>
3246
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; {</div>
3247
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div>
3248
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div>
3249
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div>
3250
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; std::vector&lt;const SVFBasicBlock*&gt; reachableBBs;</div>
3251
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div>
3252
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div>
3253
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; </div>
3254
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = fun-&gt;begin(), beit = fun-&gt;end(); bit!=beit; ++bit)</div>
3255
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div>
3256
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &amp;bb = *bit;</div>
3257
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(&amp;bb);</div>
3258
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* dtNode = dt.getNode(&amp;bb))</div>
3259
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; {</div>
3260
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVFLoopAndDomInfo::BBSet</a>&amp; bbSet = ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">getDomTreeMap</a>()[svfBB];</div>
3261
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *dtNode)</div>
3262
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div>
3263
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>* domSVFBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(domBB-&gt;getBlock());</div>
3264
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; bbSet.insert(domSVFBB);</div>
3265
- <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div>
3266
- <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div>
3267
- <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; </div>
3268
- <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* pdtNode = pdt.getNode(&amp;bb))</div>
3269
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; {</div>
3270
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> level = pdtNode-&gt;getLevel();</div>
3271
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ac285502846c993f149b6bcc3e04f767e">getBBPDomLevel</a>()[svfBB] = level;</div>
3272
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* idomBB = pdtNode-&gt;getIDom()-&gt;getBlock();</div>
3273
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* idom = idomBB == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a> ? <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>: <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(idomBB);</div>
3274
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae8a308d5ee34c0eb4a6c1278565e5907">getBB2PIdom</a>()[svfBB] = idom;</div>
3275
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; </div>
3276
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVFLoopAndDomInfo::BBSet</a>&amp; bbSet = ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">getPostDomTreeMap</a>()[svfBB];</div>
3277
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *pdtNode)</div>
3278
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; {</div>
3279
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>* domSVFBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(domBB-&gt;getBlock());</div>
3280
- <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; bbSet.insert(domSVFBB);</div>
3281
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; }</div>
3282
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div>
3283
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; </div>
3284
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* loop = loopInfo.getLoopFor(&amp;bb))</div>
3285
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div>
3286
- <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* loopBlock : loop-&gt;getBlocks())</div>
3287
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; {</div>
3288
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* loopbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(loopBlock);</div>
3289
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svfBB, loopbb);</div>
3290
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div>
3291
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div>
3292
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div>
3293
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;}</div>
3226
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00370">370</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3227
+ <div class="fragment"><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;{</div>
3228
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div>
3229
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span>;</div>
3230
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="comment">//process and stored dt &amp; df</span></div>
3231
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
3232
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div>
3233
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</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>
3234
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; df.analyze(dt);</div>
3235
+ <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div>
3236
+ <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a> pdt = <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp;<span class="keyword">&gt;</span>(*fun));</div>
3237
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun-&gt;getLoopAndDomInfo();</div>
3238
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; </div>
3239
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFBasicBlock*,Set&lt;const SVFBasicBlock*&gt;</a>&gt; &amp; dfBBsMap = ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae37546be7304c66b4eca2654d995eaa7">getDomFrontierMap</a>();</div>
3240
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div>
3241
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div>
3242
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter-&gt;first;</div>
3243
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">const</span> std::set&lt;BasicBlock* &gt;&amp; domSet = dfIter-&gt;second;</div>
3244
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFBasicBlock*&gt;</a>&amp; valueBasicBlocks = dfBBsMap[<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(keyBB)];</div>
3245
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div>
3246
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div>
3247
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div>
3248
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
3249
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div>
3250
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; std::vector&lt;const SVFBasicBlock*&gt; reachableBBs;</div>
3251
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div>
3252
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div>
3253
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; </div>
3254
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = fun-&gt;begin(), beit = fun-&gt;end(); bit!=beit; ++bit)</div>
3255
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div>
3256
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &amp;bb = *bit;</div>
3257
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(&amp;bb);</div>
3258
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* dtNode = dt.getNode(&amp;bb))</div>
3259
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; {</div>
3260
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVFLoopAndDomInfo::BBSet</a>&amp; bbSet = ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">getDomTreeMap</a>()[svfBB];</div>
3261
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *dtNode)</div>
3262
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; {</div>
3263
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>* domSVFBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(domBB-&gt;getBlock());</div>
3264
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; bbSet.insert(domSVFBB);</div>
3265
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
3266
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div>
3267
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; </div>
3268
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* pdtNode = pdt.getNode(&amp;bb))</div>
3269
+ <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div>
3270
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> level = pdtNode-&gt;getLevel();</div>
3271
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ac285502846c993f149b6bcc3e04f767e">getBBPDomLevel</a>()[svfBB] = level;</div>
3272
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* idomBB = pdtNode-&gt;getIDom()-&gt;getBlock();</div>
3273
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* idom = idomBB == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a> ? <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>: <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(idomBB);</div>
3274
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae8a308d5ee34c0eb4a6c1278565e5907">getBB2PIdom</a>()[svfBB] = idom;</div>
3275
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; </div>
3276
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVFLoopAndDomInfo::BBSet</a>&amp; bbSet = ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">getPostDomTreeMap</a>()[svfBB];</div>
3277
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *pdtNode)</div>
3278
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div>
3279
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>* domSVFBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(domBB-&gt;getBlock());</div>
3280
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; bbSet.insert(domSVFBB);</div>
3281
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div>
3282
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
3283
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; </div>
3284
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* loop = loopInfo.getLoopFor(&amp;bb))</div>
3285
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div>
3286
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* loopBlock : loop-&gt;getBlocks())</div>
3287
+ <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; {</div>
3288
+ <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* loopbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(loopBlock);</div>
3289
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svfBB, loopbb);</div>
3290
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div>
3291
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div>
3292
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div>
3293
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;}</div>
3294
3294
  </div><!-- fragment -->
3295
3295
  </div>
3296
3296
  </div>
@@ -3317,58 +3317,69 @@ Friends</h2></td></tr>
3317
3317
  </tr>
3318
3318
  </table>
3319
3319
  </div><div class="memdoc">
3320
+ <p>set exit block: exit basic block must have no successors and have a return instruction</p>
3320
3321
 
3321
3322
  <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00306">306</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3322
3323
  <div class="fragment"><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;{</div>
3323
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = func-&gt;begin(), ebit = func-&gt;end(); bit != ebit; ++bit)</div>
3324
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div>
3325
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &amp;*bit;</div>
3326
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
3327
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(bb); succ_it != succ_end(bb); succ_it++)</div>
3328
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; {</div>
3329
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svf_scc_bb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(*succ_it);</div>
3330
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">addSuccBasicBlock</a>(svf_scc_bb);</div>
3331
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div>
3332
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> pred_it = pred_begin(bb); pred_it != pred_end(bb); pred_it++)</div>
3333
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div>
3334
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svf_pred_bb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(*pred_it);</div>
3335
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">addPredBasicBlock</a>(svf_pred_bb);</div>
3336
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div>
3337
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb-&gt;begin(), eiit = bb-&gt;end(); iit != eiit; ++iit)</div>
3338
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div>
3339
- <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>* inst = &amp;*iit;</div>
3340
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</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>
3341
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div>
3342
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(call);</div>
3343
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* svfcall = SVFUtil::cast&lt;SVFCallInst&gt;(svfinst);</div>
3344
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keyword">auto</span> called_llvmval = call-&gt;getCalledOperand()-&gt;stripPointerCasts();</div>
3345
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* called_llvmfunc = SVFUtil::dyn_cast&lt;Function&gt;(called_llvmval))</div>
3346
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div>
3347
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* llvmfunc_def = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(called_llvmfunc);</div>
3348
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(llvmfunc_def);</div>
3349
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(callee);</div>
3350
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div>
3351
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">else</span></div>
3352
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div>
3353
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(called_llvmval));</div>
3354
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div>
3355
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>* virtualCall = SVFUtil::dyn_cast&lt;SVFVirtualCallInst&gt;(svfcall))</div>
3356
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div>
3357
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; virtualCall-&gt;setVtablePtr(<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">LLVMUtil::getVCallVtblPtr</a>(call)));</div>
3358
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; virtualCall-&gt;setFunIdxInVtable(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">LLVMUtil::getVCallIdx</a>(call));</div>
3359
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; virtualCall-&gt;setFunNameOfVirtualCall(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">LLVMUtil::getFunNameOfVCallSite</a>(call));</div>
3360
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div>
3361
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; call-&gt;arg_size(); i++)</div>
3362
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div>
3363
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfval = <a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(call-&gt;getArgOperand(i));</div>
3364
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div>
3324
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(func);</div>
3325
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = func-&gt;begin(), ebit = func-&gt;end(); bit != ebit; ++bit)</div>
3326
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div>
3327
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &amp;*bit;</div>
3328
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
3329
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(bb); succ_it != succ_end(bb); succ_it++)</div>
3330
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div>
3331
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svf_scc_bb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(*succ_it);</div>
3332
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">addSuccBasicBlock</a>(svf_scc_bb);</div>
3333
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div>
3334
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> pred_it = pred_begin(bb); pred_it != pred_end(bb); pred_it++)</div>
3335
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div>
3336
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svf_pred_bb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(*pred_it);</div>
3337
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">addPredBasicBlock</a>(svf_pred_bb);</div>
3338
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div>
3339
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
3340
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">if</span> (svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a66f51cd41e93ad055c4a0c2874e73fae">getSuccessors</a>().empty())</div>
3341
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div>
3342
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">LLVMUtil::basicBlockHasRetInst</a>(bb))</div>
3343
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div>
3344
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; svfFun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#abd458bb5a035d3f7db32fac5f01b57f3">setExitBlock</a>(svfbb);</div>
3345
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div>
3346
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div>
3347
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; </div>
3348
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb-&gt;begin(), eiit = bb-&gt;end(); iit != eiit; ++iit)</div>
3349
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div>
3350
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*iit;</div>
3351
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</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>
3352
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div>
3353
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(call);</div>
3354
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* svfcall = SVFUtil::cast&lt;SVFCallInst&gt;(svfinst);</div>
3355
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keyword">auto</span> called_llvmval = call-&gt;getCalledOperand()-&gt;stripPointerCasts();</div>
3356
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* called_llvmfunc = SVFUtil::dyn_cast&lt;Function&gt;(called_llvmval))</div>
3357
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; {</div>
3358
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* llvmfunc_def = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(called_llvmfunc);</div>
3359
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(llvmfunc_def);</div>
3360
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(callee);</div>
3361
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; }</div>
3362
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">else</span></div>
3363
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div>
3364
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(called_llvmval));</div>
3365
3365
  <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div>
3366
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
3367
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(inst, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst)-&gt;getSuccInstructions());</div>
3368
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(inst, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst)-&gt;getPredInstructions());</div>
3369
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div>
3370
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div>
3371
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;}</div>
3366
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>* virtualCall = SVFUtil::dyn_cast&lt;SVFVirtualCallInst&gt;(svfcall))</div>
3367
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; {</div>
3368
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; virtualCall-&gt;setVtablePtr(<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">LLVMUtil::getVCallVtblPtr</a>(call)));</div>
3369
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; virtualCall-&gt;setFunIdxInVtable(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">LLVMUtil::getVCallIdx</a>(call));</div>
3370
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; virtualCall-&gt;setFunNameOfVirtualCall(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">LLVMUtil::getFunNameOfVCallSite</a>(call));</div>
3371
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div>
3372
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; call-&gt;arg_size(); i++)</div>
3373
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; {</div>
3374
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfval = <a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(call-&gt;getArgOperand(i));</div>
3375
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div>
3376
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div>
3377
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div>
3378
+ <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(inst, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst)-&gt;getSuccInstructions());</div>
3379
+ <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(inst, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst)-&gt;getPredInstructions());</div>
3380
+ <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div>
3381
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div>
3382
+ <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;}</div>
3372
3383
  </div><!-- fragment -->
3373
3384
  </div>
3374
3385
  </div>
@@ -3479,34 +3490,34 @@ Friends</h2></td></tr>
3479
3490
  </table>
3480
3491
  </div><div class="memdoc">
3481
3492
 
3482
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00532">532</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3483
- <div class="fragment"><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;{</div>
3484
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// Load external API module (extapi.bc)</span></div>
3485
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;getExtBcPath().<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>())</div>
3486
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div>
3487
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> extModuleName = <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>();</div>
3488
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(extModuleName))</div>
3489
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {</div>
3490
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;not an external IR file: &quot;</span> &lt;&lt; extModuleName &lt;&lt; std::endl;</div>
3491
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; abort();</div>
3492
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div>
3493
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3494
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; assert(!(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> == <span class="keyword">nullptr</span> &amp;&amp; context == <span class="keyword">nullptr</span>) &amp;&amp; <span class="stringliteral">&quot;Before loading extapi module, at least one LLVMContext should be initialized !!!&quot;</span>);</div>
3495
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span> (context != <span class="keyword">nullptr</span>)</div>
3496
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(context);</div>
3497
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(extModuleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
3498
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3499
- <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; {</div>
3500
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;load external module: &quot;</span> &lt;&lt; extModuleName &lt;&lt; <span class="stringliteral">&quot;failed!!\n\n&quot;</span>;</div>
3501
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3493
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00543">543</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3494
+ <div class="fragment"><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;{</div>
3495
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="comment">// Load external API module (extapi.bc)</span></div>
3496
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;getExtBcPath().<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>())</div>
3497
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {</div>
3498
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> extModuleName = <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>();</div>
3499
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(extModuleName))</div>
3500
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div>
3501
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;not an external IR file: &quot;</span> &lt;&lt; extModuleName &lt;&lt; std::endl;</div>
3502
3502
  <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; abort();</div>
3503
3503
  <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div>
3504
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">// The module of extapi.bc needs to be inserted before applications modules, like std::vector&lt;std::reference_wrapper&lt;Module&gt;&gt; modules{extapi_module, app_module}.</span></div>
3505
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="comment">// Otherwise, when overwriting the app function with SVF extern function, the corresponding SVFFunction of the extern function will not be found.</span></div>
3506
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.begin(), *mod);</div>
3507
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.begin(),<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(mod));</div>
3508
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div>
3509
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;}</div>
3504
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3505
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; assert(!(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> == <span class="keyword">nullptr</span> &amp;&amp; context == <span class="keyword">nullptr</span>) &amp;&amp; <span class="stringliteral">&quot;Before loading extapi module, at least one LLVMContext should be initialized !!!&quot;</span>);</div>
3506
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (context != <span class="keyword">nullptr</span>)</div>
3507
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(context);</div>
3508
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(extModuleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
3509
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3510
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; {</div>
3511
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;load external module: &quot;</span> &lt;&lt; extModuleName &lt;&lt; <span class="stringliteral">&quot;failed!!\n\n&quot;</span>;</div>
3512
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3513
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; abort();</div>
3514
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; }</div>
3515
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="comment">// The module of extapi.bc needs to be inserted before applications modules, like std::vector&lt;std::reference_wrapper&lt;Module&gt;&gt; modules{extapi_module, app_module}.</span></div>
3516
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">// Otherwise, when overwriting the app function with SVF extern function, the corresponding SVFFunction of the extern function will not be found.</span></div>
3517
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.begin(), *mod);</div>
3518
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.begin(),<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(mod));</div>
3519
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div>
3520
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;}</div>
3510
3521
  </div><!-- fragment -->
3511
3522
  </div>
3512
3523
  </div>
@@ -3534,60 +3545,60 @@ Friends</h2></td></tr>
3534
3545
  </table>
3535
3546
  </div><div class="memdoc">
3536
3547
 
3537
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00477">477</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3538
- <div class="fragment"><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;{</div>
3539
- <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; </div>
3540
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="comment">// We read SVFIR from LLVM IR</span></div>
3541
- <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">Options::Graphtxt</a>().<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>())</div>
3542
- <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div>
3543
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">if</span>(moduleNameVec.empty())</div>
3544
- <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div>
3545
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;no LLVM bc file is found!\n&quot;</span>;</div>
3546
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; exit(0);</div>
3547
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div>
3548
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="comment">//assert(!moduleNameVec.empty() &amp;&amp; &quot;no LLVM bc file is found!&quot;);</span></div>
3549
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
3550
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div>
3551
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">else</span></div>
3552
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html#a7af3076a26060090377d1f74293560fe">SVFModule::setPagFromTXT</a>(<a class="code" href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">Options::Graphtxt</a>());</div>
3553
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; </div>
3554
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="comment">//</span></div>
3555
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="comment">// To avoid the following type bugs (t1 != t3) when parsing multiple modules,</span></div>
3556
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="comment">// We should use only one LLVMContext object for multiple modules in the same thread.</span></div>
3557
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="comment">// No such problem if only one module is processed by SVF.</span></div>
3558
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3559
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// LLVMContext ctxa,ctxb;</span></div>
3560
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="comment">// IntegerType * t1 = IntegerType::get(ctxa,32);</span></div>
3561
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">// IntegerType * t2 = IntegerType::get(ctxa,32);</span></div>
3562
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="comment">// assert(t1 == t2);</span></div>
3563
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="comment">// IntegerType * t3 = IntegerType::get(ctxb,32);</span></div>
3564
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="comment">// IntegerType * t4 = IntegerType::get(ctxb,32);</span></div>
3565
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="comment">// assert(t3 == t4);</span></div>
3566
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="comment">// assert(t1 != t3);</span></div>
3567
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3568
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="comment">//</span></div>
3569
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = std::make_unique&lt;LLVMContext&gt;();</div>
3570
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; </div>
3571
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; moduleName : moduleNameVec)</div>
3572
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div>
3573
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div>
3574
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div>
3575
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;not an IR file: &quot;</span> &lt;&lt; moduleName &lt;&lt; std::endl;</div>
3576
- <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; abort();</div>
3577
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; }</div>
3578
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; </div>
3579
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3580
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(moduleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
3581
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3582
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div>
3583
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;load module: &quot;</span> &lt;&lt; moduleName &lt;&lt; <span class="stringliteral">&quot;failed!!\n\n&quot;</span>;</div>
3584
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3585
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; abort();</div>
3586
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div>
3587
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
3588
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.emplace_back(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(mod));</div>
3589
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
3590
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;}</div>
3548
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00488">488</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3549
+ <div class="fragment"><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;{</div>
3550
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; </div>
3551
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="comment">// We read SVFIR from LLVM IR</span></div>
3552
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">Options::Graphtxt</a>().<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>())</div>
3553
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; {</div>
3554
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span>(moduleNameVec.empty())</div>
3555
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div>
3556
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;no LLVM bc file is found!\n&quot;</span>;</div>
3557
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; exit(0);</div>
3558
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div>
3559
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">//assert(!moduleNameVec.empty() &amp;&amp; &quot;no LLVM bc file is found!&quot;);</span></div>
3560
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div>
3561
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div>
3562
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">else</span></div>
3563
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html#a7af3076a26060090377d1f74293560fe">SVFModule::setPagFromTXT</a>(<a class="code" href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">Options::Graphtxt</a>());</div>
3564
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; </div>
3565
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="comment">//</span></div>
3566
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="comment">// To avoid the following type bugs (t1 != t3) when parsing multiple modules,</span></div>
3567
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="comment">// We should use only one LLVMContext object for multiple modules in the same thread.</span></div>
3568
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="comment">// No such problem if only one module is processed by SVF.</span></div>
3569
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3570
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="comment">// LLVMContext ctxa,ctxb;</span></div>
3571
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="comment">// IntegerType * t1 = IntegerType::get(ctxa,32);</span></div>
3572
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="comment">// IntegerType * t2 = IntegerType::get(ctxa,32);</span></div>
3573
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="comment">// assert(t1 == t2);</span></div>
3574
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="comment">// IntegerType * t3 = IntegerType::get(ctxb,32);</span></div>
3575
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">// IntegerType * t4 = IntegerType::get(ctxb,32);</span></div>
3576
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="comment">// assert(t3 == t4);</span></div>
3577
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="comment">// assert(t1 != t3);</span></div>
3578
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3579
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="comment">//</span></div>
3580
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = std::make_unique&lt;LLVMContext&gt;();</div>
3581
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; </div>
3582
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; moduleName : moduleNameVec)</div>
3583
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div>
3584
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div>
3585
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {</div>
3586
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;not an IR file: &quot;</span> &lt;&lt; moduleName &lt;&lt; std::endl;</div>
3587
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; abort();</div>
3588
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div>
3589
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; </div>
3590
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3591
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(moduleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
3592
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3593
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div>
3594
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;load module: &quot;</span> &lt;&lt; moduleName &lt;&lt; <span class="stringliteral">&quot;failed!!\n\n&quot;</span>;</div>
3595
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3596
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; abort();</div>
3597
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div>
3598
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
3599
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.emplace_back(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(mod));</div>
3600
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; }</div>
3601
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;}</div>
3591
3602
  </div><!-- fragment -->
3592
3603
  </div>
3593
3604
  </div>
@@ -3619,27 +3630,27 @@ Friends</h2></td></tr>
3619
3630
  <p><a class="el" href="classSVF_1_1BreakConstantGEPs.html">BreakConstantGEPs</a> Pass</p>
3620
3631
  <p><a class="el" href="classSVF_1_1MergeFunctionRets.html">MergeFunctionRets</a> Pass</p>
3621
3632
 
3622
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00432">432</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3623
- <div class="fragment"><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;{</div>
3624
- <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; std::unique_ptr&lt;BreakConstantGEPs&gt; p1 = std::make_unique&lt;BreakConstantGEPs&gt;();</div>
3625
- <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
3626
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div>
3627
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; p1-&gt;runOnModule(M);</div>
3628
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div>
3629
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; </div>
3630
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; std::unique_ptr&lt;UnifyFunctionExitNodes&gt; p2 =</div>
3631
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; std::make_unique&lt;UnifyFunctionExitNodes&gt;();</div>
3632
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
3633
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; {</div>
3634
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> = M.begin(), E = M.end(); <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> != E; ++<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
3635
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div>
3636
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &amp;fun = *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>;</div>
3637
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
3638
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">continue</span>;</div>
3639
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; p2-&gt;runOnFunction(fun);</div>
3640
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
3641
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div>
3642
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;}</div>
3633
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00443">443</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3634
+ <div class="fragment"><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;{</div>
3635
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; std::unique_ptr&lt;BreakConstantGEPs&gt; p1 = std::make_unique&lt;BreakConstantGEPs&gt;();</div>
3636
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
3637
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div>
3638
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; p1-&gt;runOnModule(M);</div>
3639
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
3640
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; </div>
3641
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; std::unique_ptr&lt;UnifyFunctionExitNodes&gt; p2 =</div>
3642
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; std::make_unique&lt;UnifyFunctionExitNodes&gt;();</div>
3643
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
3644
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div>
3645
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> = M.begin(), E = M.end(); <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> != E; ++<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
3646
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; {</div>
3647
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &amp;fun = *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>;</div>
3648
+ <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
3649
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">continue</span>;</div>
3650
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; p2-&gt;runOnFunction(fun);</div>
3651
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div>
3652
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div>
3653
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;}</div>
3643
3654
  </div><!-- fragment -->
3644
3655
  </div>
3645
3656
  </div>
@@ -3667,26 +3678,26 @@ Friends</h2></td></tr>
3667
3678
  </table>
3668
3679
  </div><div class="memdoc">
3669
3680
 
3670
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00456">456</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3671
- <div class="fragment"><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;{</div>
3672
- <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* mset = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">getLLVMModuleSet</a>();</div>
3673
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div>
3674
- <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#aa7992d03a48ec79bde169ddceb6ef67b">loadExtAPIModules</a>();</div>
3675
- <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
3676
- <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; </div>
3677
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> preProcessSuffix = <span class="stringliteral">&quot;.pre.bc&quot;</span>;</div>
3678
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="comment">// Get the existing module names, remove old extension, add preProcessSuffix</span></div>
3679
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; moduleNameVec.size(); i++)</div>
3680
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div>
3681
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lastIndex = moduleNameVec[i].find_last_of(<span class="stringliteral">&quot;.&quot;</span>);</div>
3682
- <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> rawName = moduleNameVec[i].substr(0, lastIndex);</div>
3683
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; moduleNameVec[i] = (rawName + preProcessSuffix);</div>
3684
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div>
3685
- <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; </div>
3686
- <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">dumpModulesToFile</a>(preProcessSuffix);</div>
3687
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a> = <span class="keyword">true</span>;</div>
3688
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">releaseLLVMModuleSet</a>();</div>
3689
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;}</div>
3681
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00467">467</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3682
+ <div class="fragment"><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;{</div>
3683
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* mset = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">getLLVMModuleSet</a>();</div>
3684
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div>
3685
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#aa7992d03a48ec79bde169ddceb6ef67b">loadExtAPIModules</a>();</div>
3686
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
3687
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; </div>
3688
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> preProcessSuffix = <span class="stringliteral">&quot;.pre.bc&quot;</span>;</div>
3689
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">// Get the existing module names, remove old extension, add preProcessSuffix</span></div>
3690
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; moduleNameVec.size(); i++)</div>
3691
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; {</div>
3692
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lastIndex = moduleNameVec[i].find_last_of(<span class="stringliteral">&quot;.&quot;</span>);</div>
3693
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> rawName = moduleNameVec[i].substr(0, lastIndex);</div>
3694
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; moduleNameVec[i] = (rawName + preProcessSuffix);</div>
3695
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div>
3696
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; </div>
3697
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">dumpModulesToFile</a>(preProcessSuffix);</div>
3698
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a> = <span class="keyword">true</span>;</div>
3699
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">releaseLLVMModuleSet</a>();</div>
3700
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;}</div>
3690
3701
  </div><!-- fragment -->
3691
3702
  </div>
3692
3703
  </div>
@@ -3755,31 +3766,31 @@ Friends</h2></td></tr>
3755
3766
  </table>
3756
3767
  </div><div class="memdoc">
3757
3768
 
3758
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01057">1057</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3759
- <div class="fragment"><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;{</div>
3760
- <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>[svfvalue] = val;</div>
3761
- <div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; </div>
3762
- <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#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div>
3763
- <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; svfvalue-&gt;setPtrInUncalledFunction();</div>
3764
- <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#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
3765
- <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; svfvalue-&gt;setConstDataOrAggData();</div>
3766
- <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; </div>
3767
- <div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* glob = SVFUtil::dyn_cast&lt;SVFGlobalValue&gt;(svfvalue))</div>
3768
- <div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; {</div>
3769
- <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* llvmVal = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val);</div>
3770
- <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; assert(SVFUtil::isa&lt;GlobalValue&gt;(llvmVal) &amp;&amp; <span class="stringliteral">&quot;not a GlobalValue?&quot;</span>);</div>
3771
- <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; glob-&gt;setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast&lt;GlobalValue&gt;(llvmVal)));</div>
3772
- <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; }</div>
3773
- <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = SVFUtil::dyn_cast&lt;SVFFunction&gt;(svfvalue))</div>
3774
- <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; {</div>
3775
- <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast&lt;Function&gt;(val);</div>
3776
- <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; svffun-&gt;setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div>
3777
- <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; svffun-&gt;setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div>
3778
- <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; svffun-&gt;setDefFunForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(func)));</div>
3779
- <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; }</div>
3780
- <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; </div>
3781
- <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; svfvalue-&gt;setSourceLoc(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(val));</div>
3782
- <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;}</div>
3769
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01068">1068</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3770
+ <div class="fragment"><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;{</div>
3771
+ <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>[svfvalue] = val;</div>
3772
+ <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; </div>
3773
+ <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div>
3774
+ <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; svfvalue-&gt;setPtrInUncalledFunction();</div>
3775
+ <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
3776
+ <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; svfvalue-&gt;setConstDataOrAggData();</div>
3777
+ <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; </div>
3778
+ <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* glob = SVFUtil::dyn_cast&lt;SVFGlobalValue&gt;(svfvalue))</div>
3779
+ <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; {</div>
3780
+ <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* llvmVal = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val);</div>
3781
+ <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; assert(SVFUtil::isa&lt;GlobalValue&gt;(llvmVal) &amp;&amp; <span class="stringliteral">&quot;not a GlobalValue?&quot;</span>);</div>
3782
+ <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; glob-&gt;setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast&lt;GlobalValue&gt;(llvmVal)));</div>
3783
+ <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; }</div>
3784
+ <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = SVFUtil::dyn_cast&lt;SVFFunction&gt;(svfvalue))</div>
3785
+ <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; {</div>
3786
+ <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast&lt;Function&gt;(val);</div>
3787
+ <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; svffun-&gt;setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div>
3788
+ <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; svffun-&gt;setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div>
3789
+ <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; svffun-&gt;setDefFunForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(func)));</div>
3790
+ <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; }</div>
3791
+ <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; </div>
3792
+ <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; svfvalue-&gt;setSourceLoc(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(val));</div>
3793
+ <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;}</div>
3783
3794
  </div><!-- fragment -->
3784
3795
  </div>
3785
3796
  </div>
@@ -4310,8 +4321,8 @@ Friends</h2></td></tr>
4310
4321
  <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>
4311
4322
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_af2c555af91679d9e6d3009547ee11486"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">SVF::LLVMModuleSet::Type2TypeInfo</a></div><div class="ttdeci">Type2TypeInfoMap Type2TypeInfo</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00091">LLVMModule.h:91</a></div></div>
4312
4323
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae265a7f3cc7367d62013e0f15cf3d233"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">SVF::LLVMModuleSet::getModuleNum</a></div><div class="ttdeci">u32_t getModuleNum() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00125">LLVMModule.h:125</a></div></div>
4313
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aaab03cb6ff665bc008c67b866ba81e47"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aaab03cb6ff665bc008c67b866ba81e47">SVF::LLVMModuleSet::buildGlobalDefToRepMap</a></div><div class="ttdeci">void buildGlobalDefToRepMap()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00989">LLVMModule.cpp:989</a></div></div>
4314
- <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#l00667">LLVMUtil.cpp:667</a></div></div>
4324
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aaab03cb6ff665bc008c67b866ba81e47"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aaab03cb6ff665bc008c67b866ba81e47">SVF::LLVMModuleSet::buildGlobalDefToRepMap</a></div><div class="ttdeci">void buildGlobalDefToRepMap()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01000">LLVMModule.cpp:1000</a></div></div>
4325
+ <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#l00679">LLVMUtil.cpp:679</a></div></div>
4315
4326
  <div class="ttc" id="aLLVMModule_8cpp_html_a9fd6e28e6ed93f65a20a348ab0646320"><div class="ttname"><a href="LLVMModule_8cpp.html#a9fd6e28e6ed93f65a20a348ab0646320">SVF_GLOBAL_DTORS</a></div><div class="ttdeci">#define SVF_GLOBAL_DTORS</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00069">LLVMModule.cpp:69</a></div></div>
4316
4327
  <div class="ttc" id="aclassSVF_1_1SVFType_html_aef5999ada62dac3cc946d832ac66948c"><div class="ttname"><a href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">SVF::SVFType::setTypeInfo</a></div><div class="ttdeci">void setTypeInfo(StInfo *ti)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00304">SVFType.h:304</a></div></div>
4317
4328
  <div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html">SVF::SVFLoopAndDomInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00050">SVFValue.h:50</a></div></div>
@@ -4320,18 +4331,18 @@ Friends</h2></td></tr>
4320
4331
  <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>
4321
4332
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a0c1143eff451edf8ea47d4487a8d3a55"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">SVF::SymbolTableInfo::maxStruct</a></div><div class="ttdeci">const SVFType * maxStruct</div><div class="ttdoc">The struct type with the most fields.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00340">SymbolTableInfo.h:340</a></div></div>
4322
4333
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a9fd7f0170bffa7c1b927cdb0de98fd15"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a9fd7f0170bffa7c1b927cdb0de98fd15">SVF::LLVMModuleSet::LLVMFunc2SVFFunc</a></div><div class="ttdeci">LLVMFun2SVFFunMap LLVMFunc2SVFFunc</div><div class="ttdoc">Map an LLVM Function to an SVF Function.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00083">LLVMModule.h:83</a></div></div>
4323
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aab7b08db9252ef7e21e54d019f44b073"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">SVF::LLVMModuleSet::addSVFTypeInfo</a></div><div class="ttdeci">SVFType * addSVFTypeInfo(const Type *t)</div><div class="ttdoc">Create SVFTypes.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01254">LLVMModule.cpp:1254</a></div></div>
4324
- <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ac1b15d8f9c2499add8dbc889ae5cab65"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">SVF::SVFBasicBlock::addInstruction</a></div><div class="ttdeci">void addInstruction(const SVFInstruction *inst)</div><div class="ttdoc">Function where this BasicBlock is.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00535">SVFValue.h:535</a></div></div>
4334
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aab7b08db9252ef7e21e54d019f44b073"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">SVF::LLVMModuleSet::addSVFTypeInfo</a></div><div class="ttdeci">SVFType * addSVFTypeInfo(const Type *t)</div><div class="ttdoc">Create SVFTypes.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01265">LLVMModule.cpp:1265</a></div></div>
4335
+ <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ac1b15d8f9c2499add8dbc889ae5cab65"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">SVF::SVFBasicBlock::addInstruction</a></div><div class="ttdeci">void addInstruction(const SVFInstruction *inst)</div><div class="ttdoc">Function where this BasicBlock is.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00546">SVFValue.h:546</a></div></div>
4325
4336
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4091b12bdfe4423d8114612a199bc480"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">SVF::LLVMModuleSet::getLLVMModules</a></div><div class="ttdeci">const std::vector&lt; std::reference_wrapper&lt; Module &gt; &gt; &amp; getLLVMModules() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00130">LLVMModule.h:130</a></div></div>
4326
4337
  <div class="ttc" id="anamespaceSVF_html_a94824519e439aeef1568d415b6f7331c"><div class="ttname"><a href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">SVF::IRBuilder</a></div><div class="ttdeci">llvm::IRBuilder IRBuilder</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
4327
4338
  <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>
4328
4339
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_acde6292e719c80f93d3d1c344ab442cd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">SVF::LLVMModuleSet::modules</a></div><div class="ttdeci">std::vector&lt; std::reference_wrapper&lt; Module &gt; &gt; modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00072">LLVMModule.h:72</a></div></div>
4329
- <div class="ttc" id="aclassSVF_1_1SVFCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html">SVF::SVFCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00688">SVFValue.h:688</a></div></div>
4340
+ <div class="ttc" id="aclassSVF_1_1SVFCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html">SVF::SVFCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00699">SVFValue.h:699</a></div></div>
4330
4341
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7de84e7817406867b173e1591e0681ac"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">SVF::LLVMModuleSet::addGlobalValueMap</a></div><div class="ttdeci">void addGlobalValueMap(const GlobalValue *glob, SVFGlobalValue *svfglob)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00169">LLVMModule.h:169</a></div></div>
4331
4342
  <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>
4332
4343
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ad647d73d2e1bda61348eff658e32f481"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad647d73d2e1bda61348eff658e32f481">SVF::LLVMModuleSet::getModuleRef</a></div><div class="ttdeci">Module &amp; getModuleRef(u32_t idx) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00140">LLVMModule.h:140</a></div></div>
4333
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac7c646a78c989807c52263fc35fb3628"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac7c646a78c989807c52263fc35fb3628">SVF::LLVMModuleSet::buildFunToFunMap</a></div><div class="ttdeci">void buildFunToFunMap()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00807">LLVMModule.cpp:807</a></div></div>
4334
- <div class="ttc" id="aclassSVF_1_1SVFCallInst_html_a6dd304f555d2d2388c4430e57b0d2b91"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">SVF::SVFCallInst::setCalledOperand</a></div><div class="ttdeci">void setCalledOperand(const SVFValue *v)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00706">SVFValue.h:706</a></div></div>
4344
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac7c646a78c989807c52263fc35fb3628"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac7c646a78c989807c52263fc35fb3628">SVF::LLVMModuleSet::buildFunToFunMap</a></div><div class="ttdeci">void buildFunToFunMap()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00818">LLVMModule.cpp:818</a></div></div>
4345
+ <div class="ttc" id="aclassSVF_1_1SVFCallInst_html_a6dd304f555d2d2388c4430e57b0d2b91"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">SVF::SVFCallInst::setCalledOperand</a></div><div class="ttdeci">void setCalledOperand(const SVFValue *v)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00717">SVFValue.h:717</a></div></div>
4335
4346
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a91083d9504ae5d220b28e0b3e461d4aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">SVF::SymbolTableInfo::addTypeInfo</a></div><div class="ttdeci">void addTypeInfo(const SVFType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00345">SymbolTableInfo.h:345</a></div></div>
4336
4347
  <div class="ttc" id="aclassSVF_1_1SVFPointerType_html"><div class="ttname"><a href="classSVF_1_1SVFPointerType.html">SVF::SVFPointerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00351">SVFType.h:351</a></div></div>
4337
4348
  <div class="ttc" id="anamespaceSVF_html_a77e088bfe47c0b0ddcbbe0693dec6fe5"><div class="ttname"><a href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">SVF::LoopInfo</a></div><div class="ttdeci">llvm::LoopInfo LoopInfo</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00139">BasicTypes.h:139</a></div></div>
@@ -4340,7 +4351,7 @@ Friends</h2></td></tr>
4340
4351
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a6e670254385050b9a5e612f881b07b9c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">SVF::LLVMModuleSet::getDefinition</a></div><div class="ttdeci">const Function * getDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00277">LLVMModule.h:277</a></div></div>
4341
4352
  <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>
4342
4353
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab932917041e1b1d8b461bfef464330fd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">SVF::LLVMModuleSet::ExtFuncsVec</a></div><div class="ttdeci">FunctionSetType ExtFuncsVec</div><div class="ttdoc">Record some &quot;sse_&quot; function declarations used in other ext function definition, e....</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00079">LLVMModule.h:79</a></div></div>
4343
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_af37b9976b282c875cac7bb1777da635c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">SVF::LLVMModuleSet::dumpModulesToFile</a></div><div class="ttdeci">void dumpModulesToFile(const std::string &amp;suffix)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01032">LLVMModule.cpp:1032</a></div></div>
4354
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_af37b9976b282c875cac7bb1777da635c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">SVF::LLVMModuleSet::dumpModulesToFile</a></div><div class="ttdeci">void dumpModulesToFile(const std::string &amp;suffix)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01043">LLVMModule.cpp:1043</a></div></div>
4344
4355
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ad3f66b40ad360003845253f452d6a711"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">SVF::LLVMModuleSet::getSVFArgument</a></div><div class="ttdeci">SVFArgument * getSVFArgument(const Argument *arg) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00220">LLVMModule.h:220</a></div></div>
4345
4356
  <div class="ttc" id="aclassSVF_1_1SVFValue_html_a8325774df9d65d78ef6a66fef59b9a97"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">SVF::SVFValue::setName</a></div><div class="ttdeci">void setName(const std::string &amp;n)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00247">SVFValue.h:247</a></div></div>
4346
4357
  <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>
@@ -4353,32 +4364,32 @@ Friends</h2></td></tr>
4353
4364
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_a7af3076a26060090377d1f74293560fe"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a7af3076a26060090377d1f74293560fe">SVF::SVFModule::setPagFromTXT</a></div><div class="ttdeci">static void setPagFromTXT(const std::string &amp;txt)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00083">SVFModule.h:83</a></div></div>
4354
4365
  <div class="ttc" id="aSVFType_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00604">SVFType.h:604</a></div></div>
4355
4366
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a3eaadb33cd21d0bd868526b5ddb051d9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">SVF::LLVMModuleSet::addBasicBlockMap</a></div><div class="ttdeci">void addBasicBlockMap(const BasicBlock *bb, SVFBasicBlock *svfBB)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00154">LLVMModule.h:154</a></div></div>
4356
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0ef17c1d5e6a95c597d2334ea577a965"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">SVF::LLVMModuleSet::getSVFOtherValue</a></div><div class="ttdeci">SVFOtherValue * getSVFOtherValue(const Value *ov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01146">LLVMModule.cpp:1146</a></div></div>
4367
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0ef17c1d5e6a95c597d2334ea577a965"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">SVF::LLVMModuleSet::getSVFOtherValue</a></div><div class="ttdeci">SVFOtherValue * getSVFOtherValue(const Value *ov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01157">LLVMModule.cpp:1157</a></div></div>
4357
4368
  <div class="ttc" id="aclassSVF_1_1StInfo_html_a518c82138fcadc6634980566c1c0f762"><div class="ttname"><a href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">SVF::StInfo::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements() const</div><div class="ttdoc">Return number of elements after flattening (including array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00225">SVFType.h:225</a></div></div>
4358
- <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>
4359
- <div class="ttc" id="aclassSVF_1_1SVFConstantData_html"><div class="ttname"><a href="classSVF_1_1SVFConstantData.html">SVF::SVFConstantData</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00926">SVFValue.h:926</a></div></div>
4360
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01202">LLVMModule.cpp:1202</a></div></div>
4369
+ <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#l00154">LLVMUtil.cpp:154</a></div></div>
4370
+ <div class="ttc" id="aclassSVF_1_1SVFConstantData_html"><div class="ttname"><a href="classSVF_1_1SVFConstantData.html">SVF::SVFConstantData</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00937">SVFValue.h:937</a></div></div>
4371
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01213">LLVMModule.cpp:1213</a></div></div>
4361
4372
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_a0bc5a63d8c10da51766007cf40b095e5"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a0bc5a63d8c10da51766007cf40b095e5">SVF::SVFModule::addGlobalSet</a></div><div class="ttdeci">void addGlobalSet(SVFGlobalValue *glob)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00110">SVFModule.h:110</a></div></div>
4362
- <div class="ttc" id="aclassSVF_1_1SVFMetadataAsValue_html"><div class="ttname"><a href="classSVF_1_1SVFMetadataAsValue.html">SVF::SVFMetadataAsValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01080">SVFValue.h:1080</a></div></div>
4373
+ <div class="ttc" id="aclassSVF_1_1SVFMetadataAsValue_html"><div class="ttname"><a href="classSVF_1_1SVFMetadataAsValue.html">SVF::SVFMetadataAsValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01091">SVFValue.h:1091</a></div></div>
4363
4374
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4b94c96898dbbc71bc1cee04786cf3dc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">SVF::LLVMModuleSet::LLVMConst2SVFConst</a></div><div class="ttdeci">LLVMConst2SVFConstMap LLVMConst2SVFConst</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00087">LLVMModule.h:87</a></div></div>
4364
4375
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a2f8e91c075d90be66412a079fe73e936"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a></div><div class="ttdeci">static void releaseLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00108">LLVMModule.h:108</a></div></div>
4365
4376
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00199">LLVMModule.h:199</a></div></div>
4366
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a946d1251501c7e0e33a9210838951258"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">SVF::LLVMModuleSet::collectStructInfo</a></div><div class="ttdeci">StInfo * collectStructInfo(const StructType *structTy, u32_t &amp;numFields)</div><div class="ttdoc">Collect the struct info and set the number of fields after flattening.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01386">LLVMModule.cpp:1386</a></div></div>
4377
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a946d1251501c7e0e33a9210838951258"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">SVF::LLVMModuleSet::collectStructInfo</a></div><div class="ttdeci">StInfo * collectStructInfo(const StructType *structTy, u32_t &amp;numFields)</div><div class="ttdoc">Collect the struct info and set the number of fields after flattening.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01397">LLVMModule.cpp:1397</a></div></div>
4367
4378
  <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>
4368
4379
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_ae64d24569942d7c4b18d2198be4839f3"><div class="ttname"><a href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">SVF::SVFModule::addConstant</a></div><div class="ttdeci">void addConstant(SVFConstant *cd)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00120">SVFModule.h:120</a></div></div>
4369
4380
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8afb7ab3ee4632e78d546e549110e74c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">SVF::LLVMModuleSet::getModule</a></div><div class="ttdeci">Module * getModule(u32_t idx) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00135">LLVMModule.h:135</a></div></div>
4370
- <div class="ttc" id="aclassSVF_1_1SVFBlackHoleValue_html"><div class="ttname"><a href="classSVF_1_1SVFBlackHoleValue.html">SVF::SVFBlackHoleValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01038">SVFValue.h:1038</a></div></div>
4371
- <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_abfe3a1ce5fa364d9db7cd2d0e6a144ff"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">SVF::SVFBasicBlock::addSuccBasicBlock</a></div><div class="ttdeci">void addSuccBasicBlock(const SVFBasicBlock *succ)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00540">SVFValue.h:540</a></div></div>
4372
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a41e64f3318e2bf368eebe9a104ef6ad9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">SVF::LLVMUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01198">LLVMUtil.cpp:1198</a></div></div>
4373
- <div class="ttc" id="aclassSVF_1_1SVFFunction_html_ad865b8440a6e0d5d212798d2213e1e9c"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">SVF::SVFFunction::addArgument</a></div><div class="ttdeci">void addArgument(SVFArgument *arg)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00331">SVFValue.h:331</a></div></div>
4381
+ <div class="ttc" id="aclassSVF_1_1SVFBlackHoleValue_html"><div class="ttname"><a href="classSVF_1_1SVFBlackHoleValue.html">SVF::SVFBlackHoleValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01049">SVFValue.h:1049</a></div></div>
4382
+ <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_abfe3a1ce5fa364d9db7cd2d0e6a144ff"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">SVF::SVFBasicBlock::addSuccBasicBlock</a></div><div class="ttdeci">void addSuccBasicBlock(const SVFBasicBlock *succ)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00551">SVFValue.h:551</a></div></div>
4383
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a41e64f3318e2bf368eebe9a104ef6ad9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">SVF::LLVMUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01210">LLVMUtil.cpp:1210</a></div></div>
4384
+ <div class="ttc" id="aclassSVF_1_1SVFFunction_html_ad865b8440a6e0d5d212798d2213e1e9c"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">SVF::SVFFunction::addArgument</a></div><div class="ttdeci">void addArgument(SVFArgument *arg)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00332">SVFValue.h:332</a></div></div>
4374
4385
  <div class="ttc" id="aclassSVF_1_1StInfo_html_ae5fad367673315da57a604e64b5889f0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">SVF::StInfo::getNumOfFlattenFields</a></div><div class="ttdeci">u32_t getNumOfFlattenFields() const</div><div class="ttdoc">Return the number of fields after flattening (ignoring array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00231">SVFType.h:231</a></div></div>
4375
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a651b6a1cf3665277d2241220bb145aed"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">SVF::LLVMUtil::functionDoesNotRet</a></div><div class="ttdeci">bool functionDoesNotRet(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00104">LLVMUtil.cpp:104</a></div></div>
4386
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a651b6a1cf3665277d2241220bb145aed"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">SVF::LLVMUtil::functionDoesNotRet</a></div><div class="ttdeci">bool functionDoesNotRet(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00118">LLVMUtil.cpp:118</a></div></div>
4376
4387
  <div class="ttc" id="aclassSVF_1_1SVFPointerType_html_aaaa79de3df0f6764bfd3d2e487ea7a09"><div class="ttname"><a href="classSVF_1_1SVFPointerType.html#aaaa79de3df0f6764bfd3d2e487ea7a09">SVF::SVFPointerType::setPtrElementType</a></div><div class="ttdeci">void setPtrElementType(SVFType *_ptrElementType)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00375">SVFType.h:375</a></div></div>
4377
4388
  <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>
4378
- <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>
4389
+ <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#l00559">LLVMUtil.cpp:559</a></div></div>
4379
4390
  <div class="ttc" id="aSVFType_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00582">SVFType.h:582</a></div></div>
4380
4391
  <div class="ttc" id="anamespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00053">SVFType.h:53</a></div></div>
4381
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a0ecff33105811b1e5ebc83afee76da27"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0ecff33105811b1e5ebc83afee76da27">SVF::LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a></div><div class="ttdeci">void removeUnusedFuncsAndAnnotationsAndGlobalVariables(std::vector&lt; Function * &gt; removedFuncList)</div><div class="ttdoc">Delete unused functions, annotations and global variables in extapi.bc.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00596">LLVMUtil.cpp:596</a></div></div>
4392
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a0ecff33105811b1e5ebc83afee76da27"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0ecff33105811b1e5ebc83afee76da27">SVF::LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a></div><div class="ttdeci">void removeUnusedFuncsAndAnnotationsAndGlobalVariables(std::vector&lt; Function * &gt; removedFuncList)</div><div class="ttdoc">Delete unused functions, annotations and global variables in extapi.bc.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00608">LLVMUtil.cpp:608</a></div></div>
4382
4393
  <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#l00251">BasicTypes.h:251</a></div></div>
4383
4394
  <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>
4384
4395
  <div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a2fc6b806a436d8fa65863f6cef99e716"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">SVF::SVFLoopAndDomInfo::getDomTreeMap</a></div><div class="ttdeci">Map&lt; const SVFBasicBlock *, BBSet &gt; &amp; getDomTreeMap()</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00139">SVFValue.h:139</a></div></div>
@@ -4391,7 +4402,7 @@ Friends</h2></td></tr>
4391
4402
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab0c0f321b6bfbfab2e4ff06d81920ab9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">SVF::LLVMModuleSet::getSVFBasicBlock</a></div><div class="ttdeci">SVFBasicBlock * getSVFBasicBlock(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00206">LLVMModule.h:206</a></div></div>
4392
4403
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0f9b36699b99dfcfe3c1588bfab6b97c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0f9b36699b99dfcfe3c1588bfab6b97c">SVF::LLVMModuleSet::LLVMBB2SVFBB</a></div><div class="ttdeci">LLVMBB2SVFBBMap LLVMBB2SVFBB</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00084">LLVMModule.h:84</a></div></div>
4393
4404
  <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>
4394
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0b46a2a5ff2165d17993a071d9cc82c1"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">SVF::LLVMModuleSet::getLLVMGlobalFunctions</a></div><div class="ttdeci">std::vector&lt; const Function * &gt; getLLVMGlobalFunctions(const GlobalVariable *global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00561">LLVMModule.cpp:561</a></div></div>
4405
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0b46a2a5ff2165d17993a071d9cc82c1"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">SVF::LLVMModuleSet::getLLVMGlobalFunctions</a></div><div class="ttdeci">std::vector&lt; const Function * &gt; getLLVMGlobalFunctions(const GlobalVariable *global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00572">LLVMModule.cpp:572</a></div></div>
4395
4406
  <div class="ttc" id="aclassSVF_1_1SVFStat_html_aa4950ec26b66a085ad38ac154b789db5"><div class="ttname"><a href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5">SVF::SVFStat::timeOfBuildingLLVMModule</a></div><div class="ttdeci">static double timeOfBuildingLLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00090">SVFStat.h:90</a></div></div>
4396
4407
  <div class="ttc" id="anamespaceSVF_html_a0fd33072b099f61eaa642e94ed0c03fc"><div class="ttname"><a href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">SVF::GlobalAlias</a></div><div class="ttdeci">llvm::GlobalAlias GlobalAlias</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
4397
4408
  <div class="ttc" id="anamespaceSVF_html_aedd9d023a68dddd66314be63bb8e48d2"><div class="ttname"><a href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">SVF::operator&gt;</a></div><div class="ttdeci">IntervalValue operator&gt;(const IntervalValue &amp;lhs, const IntervalValue &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00581">IntervalValue.h:581</a></div></div>
@@ -4401,13 +4412,13 @@ Friends</h2></td></tr>
4401
4412
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac3e70bd338be3a54330be5dc10321eb3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">SVF::LLVMModuleSet::LLVMValue2SVFOtherValue</a></div><div class="ttdeci">LLVMValue2SVFOtherValueMap LLVMValue2SVFOtherValue</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00088">LLVMModule.h:88</a></div></div>
4402
4413
  <div class="ttc" id="aclassSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00047">SVFStat.cpp:47</a></div></div>
4403
4414
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac1a9d20d62066ec4e181fad223669e32"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">SVF::LLVMModuleSet::getContext</a></div><div class="ttdeci">LLVMContext &amp; getContext() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00329">LLVMModule.h:329</a></div></div>
4404
- <div class="ttc" id="aclassSVF_1_1SVFVirtualCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFVirtualCallInst.html">SVF::SVFVirtualCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00762">SVFValue.h:762</a></div></div>
4415
+ <div class="ttc" id="aclassSVF_1_1SVFVirtualCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFVirtualCallInst.html">SVF::SVFVirtualCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00773">SVFValue.h:773</a></div></div>
4405
4416
  <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>
4406
- <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#l00517">SVFValue.h:517</a></div></div>
4417
+ <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#l00527">SVFValue.h:527</a></div></div>
4407
4418
  <div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00177">SVFValue.h:177</a></div></div>
4408
4419
  <div class="ttc" id="aclassSVF_1_1SVFFunctionType_html"><div class="ttname"><a href="classSVF_1_1SVFFunctionType.html">SVF::SVFFunctionType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00411">SVFType.h:411</a></div></div>
4409
4420
  <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>
4410
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07c785d931cef3c61e3dab4c615770be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">SVF::LLVMUtil::isPtrInUncalledFunction</a></div><div class="ttdeci">bool isPtrInUncalledFunction(const Value *value)</div><div class="ttdoc">Return true if this is value in a dead function (function without any caller)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00175">LLVMUtil.cpp:175</a></div></div>
4421
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07c785d931cef3c61e3dab4c615770be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">SVF::LLVMUtil::isPtrInUncalledFunction</a></div><div class="ttdeci">bool isPtrInUncalledFunction(const Value *value)</div><div class="ttdoc">Return true if this is value in a dead function (function without any caller)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00187">LLVMUtil.cpp:187</a></div></div>
4411
4422
  <div class="ttc" id="aclassSVF_1_1SVFArrayType_html"><div class="ttname"><a href="classSVF_1_1SVFArrayType.html">SVF::SVFArrayType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00469">SVFType.h:469</a></div></div>
4412
4423
  <div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_ac285502846c993f149b6bcc3e04f767e"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ac285502846c993f149b6bcc3e04f767e">SVF::SVFLoopAndDomInfo::getBBPDomLevel</a></div><div class="ttdeci">const Map&lt; const SVFBasicBlock *, u32_t &gt; &amp; getBBPDomLevel() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00118">SVFValue.h:118</a></div></div>
4413
4424
  <div class="ttc" id="aLLVMModule_8cpp_html_a10ab7c7da3a458495d8528b9e90d714b"><div class="ttname"><a href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a></div><div class="ttdeci">#define SVF_MAIN_FUNC_NAME</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00067">LLVMModule.cpp:67</a></div></div>
@@ -4417,43 +4428,45 @@ Friends</h2></td></tr>
4417
4428
  <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>
4418
4429
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aee80b29e5246e3eaa0e30e165346101f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">SVF::LLVMModuleSet::FunDeclToDefMap</a></div><div class="ttdeci">FunDeclToDefMapTy FunDeclToDefMap</div><div class="ttdoc">Function declaration to function definition map.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00075">LLVMModule.h:75</a></div></div>
4419
4430
  <div class="ttc" id="aclassSVF_1_1SVFStructType_html"><div class="ttname"><a href="classSVF_1_1SVFStructType.html">SVF::SVFStructType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00436">SVFType.h:436</a></div></div>
4420
- <div class="ttc" id="aclassSVF_1_1SVFConstant_html"><div class="ttname"><a href="classSVF_1_1SVFConstant.html">SVF::SVFConstant</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00822">SVFValue.h:822</a></div></div>
4431
+ <div class="ttc" id="aclassSVF_1_1SVFConstant_html"><div class="ttname"><a href="classSVF_1_1SVFConstant.html">SVF::SVFConstant</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00833">SVFValue.h:833</a></div></div>
4421
4432
  <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>
4422
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3a23aa54459a068e16c96e5b5eb72f77"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">SVF::LLVMUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01118">LLVMUtil.cpp:1118</a></div></div>
4423
- <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#l00411">LLVMUtil.h:411</a></div></div>
4433
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3a23aa54459a068e16c96e5b5eb72f77"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">SVF::LLVMUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01130">LLVMUtil.cpp:1130</a></div></div>
4434
+ <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#l00414">LLVMUtil.h:414</a></div></div>
4424
4435
  <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>
4425
4436
  <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>
4426
4437
  <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#l00297">SVFValue.h:297</a></div></div>
4427
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa7992d03a48ec79bde169ddceb6ef67b"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa7992d03a48ec79bde169ddceb6ef67b">SVF::LLVMModuleSet::loadExtAPIModules</a></div><div class="ttdeci">void loadExtAPIModules(std::unique_ptr&lt; LLVMContext &gt; context=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00532">LLVMModule.cpp:532</a></div></div>
4428
- <div class="ttc" id="aclassSVF_1_1SVFOtherValue_html"><div class="ttname"><a href="classSVF_1_1SVFOtherValue.html">SVF::SVFOtherValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01060">SVFValue.h:1060</a></div></div>
4429
- <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>
4438
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa7992d03a48ec79bde169ddceb6ef67b"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa7992d03a48ec79bde169ddceb6ef67b">SVF::LLVMModuleSet::loadExtAPIModules</a></div><div class="ttdeci">void loadExtAPIModules(std::unique_ptr&lt; LLVMContext &gt; context=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00543">LLVMModule.cpp:543</a></div></div>
4439
+ <div class="ttc" id="aclassSVF_1_1SVFOtherValue_html"><div class="ttname"><a href="classSVF_1_1SVFOtherValue.html">SVF::SVFOtherValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01071">SVFValue.h:1071</a></div></div>
4440
+ <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#l00412">LLVMUtil.cpp:412</a></div></div>
4430
4441
  <div class="ttc" id="aclassSVF_1_1Options_html_a3a718b0a27c2d13878c0718af97ad73d"><div class="ttname"><a href="classSVF_1_1Options.html#a3a718b0a27c2d13878c0718af97ad73d">SVF::Options::SVFMain</a></div><div class="ttdeci">static const Option&lt; bool &gt; SVFMain</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00214">Options.h:214</a></div></div>
4431
4442
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a9fe3fa15a6a0ec25864cb8439a45596e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">SVF::LLVMModuleSet::getMainLLVMModule</a></div><div class="ttdeci">Module * getMainLLVMModule() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00324">LLVMModule.h:324</a></div></div>
4432
- <div class="ttc" id="aclassSVF_1_1SVFConstantInt_html"><div class="ttname"><a href="classSVF_1_1SVFConstantInt.html">SVF::SVFConstantInt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00955">SVFValue.h:955</a></div></div>
4433
- <div class="ttc" id="aclassSVF_1_1SVFConstantFP_html"><div class="ttname"><a href="classSVF_1_1SVFConstantFP.html">SVF::SVFConstantFP</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00989">SVFValue.h:989</a></div></div>
4434
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a298966366b02d0a34f409c2c77da3789"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">SVF::LLVMModuleSet::loadModules</a></div><div class="ttdeci">void loadModules(const std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00477">LLVMModule.cpp:477</a></div></div>
4443
+ <div class="ttc" id="aclassSVF_1_1SVFConstantInt_html"><div class="ttname"><a href="classSVF_1_1SVFConstantInt.html">SVF::SVFConstantInt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00966">SVFValue.h:966</a></div></div>
4444
+ <div class="ttc" id="aclassSVF_1_1SVFConstantFP_html"><div class="ttname"><a href="classSVF_1_1SVFConstantFP.html">SVF::SVFConstantFP</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01000">SVFValue.h:1000</a></div></div>
4445
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a298966366b02d0a34f409c2c77da3789"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">SVF::LLVMModuleSet::loadModules</a></div><div class="ttdeci">void loadModules(const std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00488">LLVMModule.cpp:488</a></div></div>
4446
+ <div class="ttc" id="aclassSVF_1_1SVFFunction_html_abd458bb5a035d3f7db32fac5f01b57f3"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#abd458bb5a035d3f7db32fac5f01b57f3">SVF::SVFFunction::setExitBlock</a></div><div class="ttdeci">void setExitBlock(SVFBasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00193">SVFValue.cpp:193</a></div></div>
4435
4447
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a32558da64f03452c502ec57d1e106427"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">SVF::LLVMModuleSet::hasDefinition</a></div><div class="ttdeci">bool hasDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00270">LLVMModule.h:270</a></div></div>
4436
- <div class="ttc" id="aclassSVF_1_1SVFGlobalValue_html"><div class="ttname"><a href="classSVF_1_1SVFGlobalValue.html">SVF::SVFGlobalValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00845">SVFValue.h:845</a></div></div>
4448
+ <div class="ttc" id="aclassSVF_1_1SVFGlobalValue_html"><div class="ttname"><a href="classSVF_1_1SVFGlobalValue.html">SVF::SVFGlobalValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00856">SVFValue.h:856</a></div></div>
4437
4449
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ad06a92bf8bc556de742e0ffdf79ffafe"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">SVF::LLVMModuleSet::cxts</a></div><div class="ttdeci">std::unique_ptr&lt; LLVMContext &gt; cxts</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
4438
4450
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_a1357c876eccedd58b3abe68875b3a570"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVF::SVFModule::pagReadFromTXT</a></div><div class="ttdeci">static bool pagReadFromTXT()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00098">SVFModule.h:98</a></div></div>
4439
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a52853bd34a394882c6fd0fc73739c9f2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">SVF::LLVMModuleSet::collectSimpleTypeInfo</a></div><div class="ttdeci">StInfo * collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01443">LLVMModule.cpp:1443</a></div></div>
4451
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a52853bd34a394882c6fd0fc73739c9f2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">SVF::LLVMModuleSet::collectSimpleTypeInfo</a></div><div class="ttdeci">StInfo * collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01454">LLVMModule.cpp:1454</a></div></div>
4440
4452
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae365189769640adb919a23c36978e5e2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">SVF::LLVMModuleSet::owned_modules</a></div><div class="ttdeci">std::vector&lt; std::unique_ptr&lt; Module &gt; &gt; owned_modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00071">LLVMModule.h:71</a></div></div>
4453
+ <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a66f51cd41e93ad055c4a0c2874e73fae"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a66f51cd41e93ad055c4a0c2874e73fae">SVF::SVFBasicBlock::getSuccessors</a></div><div class="ttdeci">const std::vector&lt; const SVFBasicBlock * &gt; &amp; getSuccessors() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00612">SVFValue.h:612</a></div></div>
4441
4454
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a43832e93a42ae43d44b0cc160981678f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">SVFModule * svfModule</div><div class="ttdoc">Borrowed from singleton SVFModule::svfModule.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
4442
4455
  <div class="ttc" id="aclassSVF_1_1StInfo_html_a1a07c2b1415c29d7d70791c6dfe602a3"><div class="ttname"><a href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">SVF::StInfo::setNumOfFieldsAndElems</a></div><div class="ttdeci">void setNumOfFieldsAndElems(u32_t nf, u32_t ne)</div><div class="ttdoc">Set number of fields and elements of an aggregate.</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00218">SVFType.h:218</a></div></div>
4443
4456
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00081">SymbolTableInfo.cpp:81</a></div></div>
4444
4457
  <div class="ttc" id="aclassSVF_1_1ExtAPI_html_a58a764c27354d5f9b70995d30de65f1d"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">SVF::ExtAPI::getExtAPI</a></div><div class="ttdeci">static ExtAPI * getExtAPI()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00040">ExtAPI.cpp:40</a></div></div>
4445
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9e0c786488dfdc4605d4cbcf9943c85a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00418">LLVMUtil.h:418</a></div></div>
4446
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8af6b911b728713f66f7c809d5c0fbf1"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8af6b911b728713f66f7c809d5c0fbf1">SVF::LLVMModuleSet::addSVFMain</a></div><div class="ttdeci">void addSVFMain()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00650">LLVMModule.cpp:650</a></div></div>
4447
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8ba9092747108e0289014d52465a692d"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">SVF::LLVMModuleSet::initDomTree</a></div><div class="ttdeci">void initDomTree(SVFFunction *func, const Function *f)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00359">LLVMModule.cpp:359</a></div></div>
4458
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9e0c786488dfdc4605d4cbcf9943c85a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00421">LLVMUtil.h:421</a></div></div>
4459
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8af6b911b728713f66f7c809d5c0fbf1"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8af6b911b728713f66f7c809d5c0fbf1">SVF::LLVMModuleSet::addSVFMain</a></div><div class="ttdeci">void addSVFMain()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00661">LLVMModule.cpp:661</a></div></div>
4460
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8ba9092747108e0289014d52465a692d"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">SVF::LLVMModuleSet::initDomTree</a></div><div class="ttdeci">void initDomTree(SVFFunction *func, const Function *f)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00370">LLVMModule.cpp:370</a></div></div>
4448
4461
  <div class="ttc" id="anamespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
4449
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab1b4c565ae6be788b934defc21a5cfaf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">SVF::LLVMUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00930">LLVMUtil.cpp:930</a></div></div>
4462
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab1b4c565ae6be788b934defc21a5cfaf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">SVF::LLVMUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00942">LLVMUtil.cpp:942</a></div></div>
4450
4463
  <div class="ttc" id="anamespaceSVF_html_a86863d104a3930b3a806935d92ddbf30"><div class="ttname"><a href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SVF::SMDiagnostic</a></div><div class="ttdeci">llvm::SMDiagnostic SMDiagnostic</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00088">BasicTypes.h:88</a></div></div>
4451
4464
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae19e38054c55d5822dfc83a12f12aa60"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">SVF::LLVMModuleSet::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00335">LLVMModule.h:335</a></div></div>
4452
4465
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00309">SVFUtil.h:309</a></div></div>
4453
4466
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a428bd75b33fab60988d8758090712f29"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">SVF::LLVMUtil::isArgOfUncalledFunction</a></div><div class="ttdeci">bool isArgOfUncalledFunction(const Value *val)</div><div class="ttdoc">Return true if the argument in a function does not have a caller.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00201">LLVMUtil.h:201</a></div></div>
4454
- <div class="ttc" id="aclassSVF_1_1SVFCallInst_html_ac979b49b449b97b2a23f195cb107ec77"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">SVF::SVFCallInst::addArgument</a></div><div class="ttdeci">void addArgument(const SVFValue *a)</div><div class="ttdoc">attributes to be set only through Module builders e.g., LLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00702">SVFValue.h:702</a></div></div>
4467
+ <div class="ttc" id="aclassSVF_1_1SVFCallInst_html_ac979b49b449b97b2a23f195cb107ec77"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">SVF::SVFCallInst::addArgument</a></div><div class="ttdeci">void addArgument(const SVFValue *a)</div><div class="ttdoc">attributes to be set only through Module builders e.g., LLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00713">SVFValue.h:713</a></div></div>
4455
4468
  <div class="ttc" id="anamespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00134">BasicTypes.h:134</a></div></div>
4456
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa8de934358332505d4805db137d8ec29"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">SVF::LLVMModuleSet::collectArrayInfo</a></div><div class="ttdeci">StInfo * collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01323">LLVMModule.cpp:1323</a></div></div>
4469
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa8de934358332505d4805db137d8ec29"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">SVF::LLVMModuleSet::collectArrayInfo</a></div><div class="ttdeci">StInfo * collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01334">LLVMModule.cpp:1334</a></div></div>
4457
4470
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4ca8c4678a7fefe26372fc1f4b2880fd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4ca8c4678a7fefe26372fc1f4b2880fd">SVF::LLVMModuleSet::createSVFDataStructure</a></div><div class="ttdeci">void createSVFDataStructure()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00153">LLVMModule.cpp:153</a></div></div>
4458
4471
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7f8e61cf5d838d7a2e862bc6955f16be"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVF::LLVMModuleSet::SVFValue2LLVMValue</a></div><div class="ttdeci">SVFValue2LLVMValueMap SVFValue2LLVMValue</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00089">LLVMModule.h:89</a></div></div>
4459
4472
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference&lt; T &gt;::type &amp;&amp; move(T &amp;&amp;t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00621">SVFUtil.h:621</a></div></div>
@@ -4464,6 +4477,7 @@ Friends</h2></td></tr>
4464
4477
  <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>
4465
4478
  <div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_aed2f125f7b8c21092b23d9727568ba50"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">SVF::SVFLoopAndDomInfo::addToBB2LoopMap</a></div><div class="ttdeci">void addToBB2LoopMap(const SVFBasicBlock *bb, const SVFBasicBlock *loopBB)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00103">SVFValue.h:103</a></div></div>
4466
4479
  <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>
4480
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abb4b5ed04ec70a2e7fca8198132370cf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">SVF::LLVMUtil::basicBlockHasRetInst</a></div><div class="ttdeci">bool basicBlockHasRetInst(const BasicBlock *bb)</div><div class="ttdoc">Return true if the function has a return instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00104">LLVMUtil.cpp:104</a></div></div>
4467
4481
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5552135a27684cbe4d2a5ed346f64644"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">SVF::LLVMModuleSet::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00068">LLVMModule.h:68</a></div></div>
4468
4482
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00343">SymbolTableInfo.h:343</a></div></div>
4469
4483
  <div class="ttc" id="anamespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set&lt; Key, Compare, Allocator &gt; OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00106">SVFType.h:106</a></div></div>
@@ -4472,15 +4486,15 @@ Friends</h2></td></tr>
4472
4486
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac6a5540354696f4c9170e0a5832ba70e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac6a5540354696f4c9170e0a5832ba70e">SVF::LLVMModuleSet::initSVFFunction</a></div><div class="ttdeci">void initSVFFunction()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00288">LLVMModule.cpp:288</a></div></div>
4473
4487
  <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#l00273">BasicTypes.h:273</a></div></div>
4474
4488
  <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html">SVF::SymbolTableBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00042">SymbolTableBuilder.h:42</a></div></div>
4475
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a25821b0feeb3b08e00ec9d444520b727"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">SVF::LLVMModuleSet::getSVFConstantData</a></div><div class="ttdeci">SVFConstantData * getSVFConstantData(const ConstantData *cd)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01083">LLVMModule.cpp:1083</a></div></div>
4489
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a25821b0feeb3b08e00ec9d444520b727"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">SVF::LLVMModuleSet::getSVFConstantData</a></div><div class="ttdeci">SVFConstantData * getSVFConstantData(const ConstantData *cd)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01094">LLVMModule.cpp:1094</a></div></div>
4476
4490
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
4477
4491
  <div class="ttc" id="aclassSVF_1_1SVFIntegerType_html"><div class="ttname"><a href="classSVF_1_1SVFIntegerType.html">SVF::SVFIntegerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00383">SVFType.h:383</a></div></div>
4478
4492
  <div class="ttc" id="aclassSVF_1_1SVFStat_html_ae89293bc063bdc74a988e9c37c70321e"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVF::SVFStat::timeOfBuildingSymbolTable</a></div><div class="ttdeci">static double timeOfBuildingSymbolTable</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00091">SVFStat.h:91</a></div></div>
4479
4493
  <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>
4480
4494
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a3ddabbd763acaaca28cacbabe5bc7f3b"><div class="ttname"><a href="classSVF_1_1SVFType.html#a3ddabbd763acaaca28cacbabe5bc7f3b">SVF::SVFType::setPointerTo</a></div><div class="ttdeci">void setPointerTo(const SVFPointerType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00292">SVFType.h:292</a></div></div>
4481
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a74256f36f0fdc242df9729906c34efbc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">SVF::LLVMModuleSet::getOtherSVFConstant</a></div><div class="ttdeci">SVFConstant * getOtherSVFConstant(const Constant *oc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01130">LLVMModule.cpp:1130</a></div></div>
4495
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a74256f36f0fdc242df9729906c34efbc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">SVF::LLVMModuleSet::getOtherSVFConstant</a></div><div class="ttdeci">SVFConstant * getOtherSVFConstant(const Constant *oc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01141">LLVMModule.cpp:1141</a></div></div>
4482
4496
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html">SVF::LLVMModuleSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00044">LLVMModule.h:44</a></div></div>
4483
- <div class="ttc" id="aclassSVF_1_1SVFFunction_html_a0d5031bd11b6372803082111ec2cb4f6"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">SVF::SVFFunction::addBasicBlock</a></div><div class="ttdeci">void addBasicBlock(const SVFBasicBlock *bb)</div><div class="ttdoc">annotations of this function</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00326">SVFValue.h:326</a></div></div>
4497
+ <div class="ttc" id="aclassSVF_1_1SVFFunction_html_a0d5031bd11b6372803082111ec2cb4f6"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">SVF::SVFFunction::addBasicBlock</a></div><div class="ttdeci">void addBasicBlock(const SVFBasicBlock *bb)</div><div class="ttdoc">a 'single' basic block having no successors and containing return instruction in a function</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00327">SVFValue.h:327</a></div></div>
4484
4498
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00213">LLVMModule.h:213</a></div></div>
4485
4499
  <div class="ttc" id="anamespaceSVF_html_a67f3f86344f028cacfbeb08caaf7bb0f"><div class="ttname"><a href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">SVF::GlobalValue</a></div><div class="ttdeci">llvm::GlobalValue GlobalValue</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00086">BasicTypes.h:86</a></div></div>
4486
4500
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a4550f2fb815882edfb666ac818792064"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4550f2fb815882edfb666ac818792064">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(const std::string &amp;msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00099">SVFUtil.cpp:99</a></div></div>
@@ -4489,37 +4503,37 @@ Friends</h2></td></tr>
4489
4503
  <div class="ttc" id="acJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
4490
4504
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_abbca1044dc59299224598ec2ba17fe7e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#abbca1044dc59299224598ec2ba17fe7e">SVF::LLVMModuleSet::isCalledExtFunction</a></div><div class="ttdeci">bool isCalledExtFunction(Function *func)</div><div class="ttdoc">Remove unused function in extapi.bc module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00241">LLVMModule.h:241</a></div></div>
4491
4505
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9bd6f54920929e5ad35102ba2f2223da"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">SVF::LLVMUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *svfFun, std::vector&lt; const SVFBasicBlock * &gt; &amp;bbs)</div><div class="ttdoc">Get reachable basic block from function entry.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00069">LLVMUtil.cpp:69</a></div></div>
4492
- <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a38f8fdd93ef7222f408cbbb2a98a1cd5"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">SVF::SVFBasicBlock::addPredBasicBlock</a></div><div class="ttdeci">void addPredBasicBlock(const SVFBasicBlock *pred)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00545">SVFValue.h:545</a></div></div>
4506
+ <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a38f8fdd93ef7222f408cbbb2a98a1cd5"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">SVF::SVFBasicBlock::addPredBasicBlock</a></div><div class="ttdeci">void addPredBasicBlock(const SVFBasicBlock *pred)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00556">SVFValue.h:556</a></div></div>
4493
4507
  <div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_ad07f95e790b5c3a50c864155aa20a083"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">SVF::SVFLoopAndDomInfo::getPostDomTreeMap</a></div><div class="ttdeci">const Map&lt; const SVFBasicBlock *, BBSet &gt; &amp; getPostDomTreeMap() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00108">SVFValue.h:108</a></div></div>
4494
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7d61f479f52e1dc71a4ae7a4d62f3b6a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">SVF::LLVMModuleSet::setValueAttr</a></div><div class="ttdeci">void setValueAttr(const Value *val, SVFValue *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01057">LLVMModule.cpp:1057</a></div></div>
4508
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7d61f479f52e1dc71a4ae7a4d62f3b6a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">SVF::LLVMModuleSet::setValueAttr</a></div><div class="ttdeci">void setValueAttr(const Value *val, SVFValue *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01068">LLVMModule.cpp:1068</a></div></div>
4495
4509
  <div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_ad478ac88bc07cf4d6d0ad3517b2c4ab3"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVF::SVFLoopAndDomInfo::BBSet</a></div><div class="ttdeci">Set&lt; const SVFBasicBlock * &gt; BBSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00055">SVFValue.h:55</a></div></div>
4496
- <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>
4510
+ <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#l00316">LLVMUtil.cpp:316</a></div></div>
4497
4511
  <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>
4498
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01165">LLVMModule.cpp:1165</a></div></div>
4499
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01222">LLVMModule.cpp:1222</a></div></div>
4512
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01176">LLVMModule.cpp:1176</a></div></div>
4513
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01233">LLVMModule.cpp:1233</a></div></div>
4500
4514
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a067661e0049314779a44c9600420820f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">SVF::LLVMModuleSet::LLVMType2SVFType</a></div><div class="ttdeci">LLVMType2SVFTypeMap LLVMType2SVFType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00090">LLVMModule.h:90</a></div></div>
4501
- <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>
4502
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8b5f24c873db1f6a0614d1dac48bb4bb"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">SVF::LLVMModuleSet::prePassSchedule</a></div><div class="ttdeci">void prePassSchedule()</div><div class="ttdoc">Invoke llvm passes to modify module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00432">LLVMModule.cpp:432</a></div></div>
4515
+ <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#l00202">LLVMUtil.cpp:202</a></div></div>
4516
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8b5f24c873db1f6a0614d1dac48bb4bb"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">SVF::LLVMModuleSet::prePassSchedule</a></div><div class="ttdeci">void prePassSchedule()</div><div class="ttdoc">Invoke llvm passes to modify module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00443">LLVMModule.cpp:443</a></div></div>
4503
4517
  <div class="ttc" id="aclassSVF_1_1ExtAPI_html_a26bc352dbfd1b2fe34106a73f1f6d50c"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">SVF::ExtAPI::getExtBcPath</a></div><div class="ttdeci">std::string getExtBcPath()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00123">ExtAPI.cpp:123</a></div></div>
4504
- <div class="ttc" id="aclassSVF_1_1SVFArgument_html"><div class="ttname"><a href="classSVF_1_1SVFArgument.html">SVF::SVFArgument</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00886">SVFValue.h:886</a></div></div>
4518
+ <div class="ttc" id="aclassSVF_1_1SVFArgument_html"><div class="ttname"><a href="classSVF_1_1SVFArgument.html">SVF::SVFArgument</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00897">SVFValue.h:897</a></div></div>
4505
4519
  <div class="ttc" id="anamespaceSVF_html_ad49e4222ba46d9490b87a80df8b46800"><div class="ttname"><a href="namespaceSVF.html#ad49e4222ba46d9490b87a80df8b46800">SVF::ConstantFP</a></div><div class="ttdeci">llvm::ConstantFP ConstantFP</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
4506
- <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>
4520
+ <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#l00287">LLVMUtil.cpp:287</a></div></div>
4507
4521
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a023ea6f179433fa4d007c98ddc38e3c5"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">SVF::LLVMModuleSet::addOtherValueMap</a></div><div class="ttdeci">void addOtherValueMap(const Value *ov, SVFOtherValue *svfov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00184">LLVMModule.h:184</a></div></div>
4508
4522
  <div class="ttc" id="aclassSVF_1_1SVFOtherType_html"><div class="ttname"><a href="classSVF_1_1SVFOtherType.html">SVF::SVFOtherType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00509">SVFType.h:509</a></div></div>
4509
4523
  <div class="ttc" id="aSVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DBUG model of each pass.</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00576">SVFType.h:576</a></div></div>
4510
4524
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a024f5de163fde6f63cb2d762b4b28d8a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">SVF::LLVMModuleSet::createSVFFunction</a></div><div class="ttdeci">void createSVFFunction(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00223">LLVMModule.cpp:223</a></div></div>
4511
- <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#l00620">SVFValue.h:620</a></div></div>
4525
+ <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#l00631">SVFValue.h:631</a></div></div>
4512
4526
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_a48d7f0643bb228701dcabb88ef541fca"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a48d7f0643bb228701dcabb88ef541fca">SVF::SVFModule::addOtherValue</a></div><div class="ttdeci">void addOtherValue(SVFOtherValue *ov)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00124">SVFModule.h:124</a></div></div>
4513
4527
  <div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_acc409e328f641a2c9512beeb727f58c7"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">SVF::SVFLoopAndDomInfo::setReachableBBs</a></div><div class="ttdeci">void setReachableBBs(BBList &amp;bbs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00160">SVFValue.h:160</a></div></div>
4514
4528
  <div class="ttc" id="anamespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00102">SVFType.h:102</a></div></div>
4515
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8cd4d6410017b9e5f47f2f88450b78d8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">SVF::LLVMUtil::getFunAnnotations</a></div><div class="ttdeci">std::vector&lt; std::string &gt; getFunAnnotations(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00444">LLVMUtil.cpp:444</a></div></div>
4529
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8cd4d6410017b9e5f47f2f88450b78d8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">SVF::LLVMUtil::getFunAnnotations</a></div><div class="ttdeci">std::vector&lt; std::string &gt; getFunAnnotations(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00456">LLVMUtil.cpp:456</a></div></div>
4516
4530
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a3204400c52ec55da70418471d5c9bad5"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">SVF::LLVMModuleSet::preProcessed</a></div><div class="ttdeci">static bool preProcessed</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00067">LLVMModule.h:67</a></div></div>
4517
4531
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_ab930bb5449538c4d0da1297a103788a1"><div class="ttname"><a href="classSVF_1_1SVFModule.html#ab930bb5449538c4d0da1297a103788a1">SVF::SVFModule::getSVFModule</a></div><div class="ttdeci">static SVFModule * getSVFModule()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00060">SVFModule.cpp:60</a></div></div>
4518
4532
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a852524c71831d7b2da0e9b0b6b191480"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a852524c71831d7b2da0e9b0b6b191480">SVF::LLVMModuleSet::LLVMArgument2SVFArgument</a></div><div class="ttdeci">LLVMArgument2SVFArgumentMap LLVMArgument2SVFArgument</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00086">LLVMModule.h:86</a></div></div>
4519
- <div class="ttc" id="aclassSVF_1_1SVFConstantNullPtr_html"><div class="ttname"><a href="classSVF_1_1SVFConstantNullPtr.html">SVF::SVFConstantNullPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01016">SVFValue.h:1016</a></div></div>
4533
+ <div class="ttc" id="aclassSVF_1_1SVFConstantNullPtr_html"><div class="ttname"><a href="classSVF_1_1SVFConstantNullPtr.html">SVF::SVFConstantNullPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01027">SVFValue.h:1027</a></div></div>
4520
4534
  <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>
4521
4535
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a3cbba2eb702a3481478b2590dfffa352"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">SVF::LLVMModuleSet::getSVFGlobalValue</a></div><div class="ttdeci">SVFGlobalValue * getSVFGlobalValue(const GlobalValue *g) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00227">LLVMModule.h:227</a></div></div>
4522
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a718c8ec79f36cef5df2f4530541f2770"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">SVF::LLVMUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01209">LLVMUtil.cpp:1209</a></div></div>
4536
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a718c8ec79f36cef5df2f4530541f2770"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">SVF::LLVMUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01221">LLVMUtil.cpp:1221</a></div></div>
4523
4537
  <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>
4524
4538
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a172084437a8450314a17f7085a32b5d2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">SVF::LLVMModuleSet::addInstructionMap</a></div><div class="ttdeci">void addInstructionMap(const Instruction *inst, SVFInstruction *svfInst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00159">LLVMModule.h:159</a></div></div>
4525
4539
  <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>