svf-tools 1.0.762 → 1.0.764

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 (300) hide show
  1. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1212 -1208
  3. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +172 -159
  4. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  5. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +3 -3
  6. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +2 -2
  9. package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -2
  12. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +54 -55
  13. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +4 -5
  14. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +54 -55
  15. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +4 -5
  16. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +53 -54
  17. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +4 -5
  18. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +55 -56
  19. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +4 -5
  20. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +59 -60
  21. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +4 -5
  22. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode-members.html +51 -52
  23. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +4 -5
  24. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode-members.html +59 -60
  25. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +4 -5
  26. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode-members.html +54 -55
  27. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +4 -5
  28. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode-members.html +59 -60
  29. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +4 -5
  30. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +59 -60
  31. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +4 -5
  32. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode-members.html +53 -54
  33. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +4 -5
  34. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +54 -55
  35. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +4 -5
  36. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +54 -55
  37. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +4 -5
  38. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode-members.html +52 -53
  39. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +4 -5
  40. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode-members.html +56 -57
  41. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +4 -5
  42. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +62 -63
  43. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +4 -5
  44. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +1 -1
  45. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +66 -67
  46. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +4 -5
  47. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +64 -65
  48. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +4 -5
  49. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +62 -63
  50. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +4 -5
  51. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode-members.html +65 -66
  52. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +4 -5
  53. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +1 -1
  54. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1234 -1217
  55. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +62 -63
  56. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +4 -5
  57. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode-members.html +51 -52
  58. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +4 -5
  59. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode-members.html +61 -62
  60. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +4 -5
  61. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  62. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode-members.html +53 -54
  63. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +4 -5
  64. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode-members.html +60 -61
  65. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +4 -5
  66. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +1 -1
  67. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +3 -3
  68. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +58 -59
  69. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +4 -5
  70. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +62 -63
  71. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +4 -5
  72. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +3 -3
  73. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode-members.html +62 -63
  74. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +4 -5
  75. package/SVF-doxygen/html/html/classSVF_1_1VFGNode-members.html +50 -51
  76. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +6 -9
  77. package/SVF-doxygen/html/html/functions_eval_f.html +0 -3
  78. package/SVF-doxygen/html/html/functions_f.html +9 -12
  79. package/SVF-doxygen/html/html/functions_func_i.html +13 -13
  80. package/SVF-doxygen/html/html/functions_i.html +16 -16
  81. package/SVF-doxygen/html/html/functions_l.html +3 -3
  82. package/SVF-doxygen/html/html/functions_o.html +3 -3
  83. package/SVF-doxygen/html/html/functions_p.html +18 -14
  84. package/SVF-doxygen/html/html/functions_r.html +8 -8
  85. package/SVF-doxygen/html/html/functions_s.html +14 -14
  86. package/SVF-doxygen/html/html/functions_t.html +7 -7
  87. package/SVF-doxygen/html/html/functions_v.html +3 -3
  88. package/SVF-doxygen/html/html/search/all_10.js +323 -323
  89. package/SVF-doxygen/html/html/search/all_11.js +212 -212
  90. package/SVF-doxygen/html/html/search/all_12.js +536 -536
  91. package/SVF-doxygen/html/html/search/all_13.js +188 -188
  92. package/SVF-doxygen/html/html/search/all_14.js +66 -66
  93. package/SVF-doxygen/html/html/search/all_15.js +170 -170
  94. package/SVF-doxygen/html/html/search/all_16.js +60 -60
  95. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  96. package/SVF-doxygen/html/html/search/all_18.js +1 -1
  97. package/SVF-doxygen/html/html/search/all_19.js +10 -10
  98. package/SVF-doxygen/html/html/search/all_1a.js +169 -169
  99. package/SVF-doxygen/html/html/search/all_6.js +31 -32
  100. package/SVF-doxygen/html/html/search/all_7.js +996 -996
  101. package/SVF-doxygen/html/html/search/all_8.js +191 -191
  102. package/SVF-doxygen/html/html/search/all_9.js +354 -354
  103. package/SVF-doxygen/html/html/search/all_a.js +46 -46
  104. package/SVF-doxygen/html/html/search/all_b.js +26 -26
  105. package/SVF-doxygen/html/html/search/all_c.js +114 -114
  106. package/SVF-doxygen/html/html/search/all_d.js +196 -196
  107. package/SVF-doxygen/html/html/search/all_e.js +205 -205
  108. package/SVF-doxygen/html/html/search/all_f.js +116 -116
  109. package/SVF-doxygen/html/html/search/classes_0.js +26 -26
  110. package/SVF-doxygen/html/html/search/classes_1.js +9 -9
  111. package/SVF-doxygen/html/html/search/classes_10.js +73 -73
  112. package/SVF-doxygen/html/html/search/classes_11.js +15 -15
  113. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  114. package/SVF-doxygen/html/html/search/classes_13.js +10 -10
  115. package/SVF-doxygen/html/html/search/classes_14.js +14 -14
  116. package/SVF-doxygen/html/html/search/classes_15.js +1 -1
  117. package/SVF-doxygen/html/html/search/classes_2.js +76 -76
  118. package/SVF-doxygen/html/html/search/classes_3.js +35 -35
  119. package/SVF-doxygen/html/html/search/classes_4.js +8 -8
  120. package/SVF-doxygen/html/html/search/classes_5.js +28 -28
  121. package/SVF-doxygen/html/html/search/classes_6.js +98 -98
  122. package/SVF-doxygen/html/html/search/classes_7.js +33 -33
  123. package/SVF-doxygen/html/html/search/classes_8.js +56 -56
  124. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  125. package/SVF-doxygen/html/html/search/classes_a.js +12 -12
  126. package/SVF-doxygen/html/html/search/classes_b.js +29 -29
  127. package/SVF-doxygen/html/html/search/classes_c.js +6 -6
  128. package/SVF-doxygen/html/html/search/classes_d.js +18 -18
  129. package/SVF-doxygen/html/html/search/classes_e.js +36 -36
  130. package/SVF-doxygen/html/html/search/classes_f.js +25 -25
  131. package/SVF-doxygen/html/html/search/defines_0.js +3 -3
  132. package/SVF-doxygen/html/html/search/defines_1.js +2 -2
  133. package/SVF-doxygen/html/html/search/defines_2.js +30 -30
  134. package/SVF-doxygen/html/html/search/defines_3.js +20 -20
  135. package/SVF-doxygen/html/html/search/defines_4.js +2 -2
  136. package/SVF-doxygen/html/html/search/defines_5.js +4 -4
  137. package/SVF-doxygen/html/html/search/defines_6.js +2 -2
  138. package/SVF-doxygen/html/html/search/defines_7.js +5 -5
  139. package/SVF-doxygen/html/html/search/defines_8.js +11 -11
  140. package/SVF-doxygen/html/html/search/defines_9.js +9 -9
  141. package/SVF-doxygen/html/html/search/defines_a.js +2 -2
  142. package/SVF-doxygen/html/html/search/defines_b.js +1 -1
  143. package/SVF-doxygen/html/html/search/defines_c.js +3 -3
  144. package/SVF-doxygen/html/html/search/defines_d.js +2 -2
  145. package/SVF-doxygen/html/html/search/defines_e.js +6 -6
  146. package/SVF-doxygen/html/html/search/defines_f.js +3 -3
  147. package/SVF-doxygen/html/html/search/enums_0.js +3 -3
  148. package/SVF-doxygen/html/html/search/enums_1.js +2 -2
  149. package/SVF-doxygen/html/html/search/enums_10.js +1 -1
  150. package/SVF-doxygen/html/html/search/enums_11.js +1 -1
  151. package/SVF-doxygen/html/html/search/enums_2.js +8 -8
  152. package/SVF-doxygen/html/html/search/enums_3.js +1 -1
  153. package/SVF-doxygen/html/html/search/enums_4.js +3 -3
  154. package/SVF-doxygen/html/html/search/enums_5.js +1 -1
  155. package/SVF-doxygen/html/html/search/enums_6.js +2 -2
  156. package/SVF-doxygen/html/html/search/enums_7.js +2 -2
  157. package/SVF-doxygen/html/html/search/enums_8.js +4 -4
  158. package/SVF-doxygen/html/html/search/enums_9.js +1 -1
  159. package/SVF-doxygen/html/html/search/enums_a.js +1 -1
  160. package/SVF-doxygen/html/html/search/enums_b.js +7 -7
  161. package/SVF-doxygen/html/html/search/enums_c.js +1 -1
  162. package/SVF-doxygen/html/html/search/enums_d.js +4 -4
  163. package/SVF-doxygen/html/html/search/enums_e.js +2 -2
  164. package/SVF-doxygen/html/html/search/enums_f.js +4 -4
  165. package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
  166. package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
  167. package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
  168. package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
  169. package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
  170. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  171. package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
  172. package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
  173. package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -36
  174. package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
  175. package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -2
  176. package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -48
  177. package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
  178. package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
  179. package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
  180. package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
  181. package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -15
  182. package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
  183. package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -5
  184. package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
  185. package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -9
  186. package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
  187. package/SVF-doxygen/html/html/search/files_0.js +13 -13
  188. package/SVF-doxygen/html/html/search/files_1.js +7 -7
  189. package/SVF-doxygen/html/html/search/files_10.js +8 -8
  190. package/SVF-doxygen/html/html/search/files_11.js +8 -8
  191. package/SVF-doxygen/html/html/search/files_12.js +2 -2
  192. package/SVF-doxygen/html/html/search/files_2.js +49 -49
  193. package/SVF-doxygen/html/html/search/files_3.js +14 -14
  194. package/SVF-doxygen/html/html/search/files_4.js +5 -5
  195. package/SVF-doxygen/html/html/search/files_5.js +13 -13
  196. package/SVF-doxygen/html/html/search/files_6.js +9 -9
  197. package/SVF-doxygen/html/html/search/files_7.js +14 -14
  198. package/SVF-doxygen/html/html/search/files_8.js +13 -13
  199. package/SVF-doxygen/html/html/search/files_9.js +18 -18
  200. package/SVF-doxygen/html/html/search/files_a.js +3 -3
  201. package/SVF-doxygen/html/html/search/files_b.js +2 -2
  202. package/SVF-doxygen/html/html/search/files_c.js +20 -20
  203. package/SVF-doxygen/html/html/search/files_d.js +4 -4
  204. package/SVF-doxygen/html/html/search/files_e.js +62 -62
  205. package/SVF-doxygen/html/html/search/files_f.js +8 -8
  206. package/SVF-doxygen/html/html/search/functions_0.js +6 -6
  207. package/SVF-doxygen/html/html/search/functions_1.js +348 -348
  208. package/SVF-doxygen/html/html/search/functions_10.js +139 -139
  209. package/SVF-doxygen/html/html/search/functions_11.js +126 -126
  210. package/SVF-doxygen/html/html/search/functions_12.js +273 -273
  211. package/SVF-doxygen/html/html/search/functions_13.js +56 -56
  212. package/SVF-doxygen/html/html/search/functions_14.js +38 -38
  213. package/SVF-doxygen/html/html/search/functions_15.js +71 -71
  214. package/SVF-doxygen/html/html/search/functions_16.js +29 -29
  215. package/SVF-doxygen/html/html/search/functions_17.js +2 -2
  216. package/SVF-doxygen/html/html/search/functions_18.js +169 -169
  217. package/SVF-doxygen/html/html/search/functions_2.js +82 -82
  218. package/SVF-doxygen/html/html/search/functions_3.js +251 -251
  219. package/SVF-doxygen/html/html/search/functions_4.js +71 -71
  220. package/SVF-doxygen/html/html/search/functions_5.js +51 -51
  221. package/SVF-doxygen/html/html/search/functions_6.js +58 -58
  222. package/SVF-doxygen/html/html/search/functions_7.js +816 -816
  223. package/SVF-doxygen/html/html/search/functions_8.js +143 -143
  224. package/SVF-doxygen/html/html/search/functions_9.js +186 -186
  225. package/SVF-doxygen/html/html/search/functions_a.js +30 -30
  226. package/SVF-doxygen/html/html/search/functions_b.js +2 -2
  227. package/SVF-doxygen/html/html/search/functions_c.js +24 -24
  228. package/SVF-doxygen/html/html/search/functions_d.js +77 -77
  229. package/SVF-doxygen/html/html/search/functions_e.js +34 -34
  230. package/SVF-doxygen/html/html/search/functions_f.js +56 -56
  231. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  232. package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
  233. package/SVF-doxygen/html/html/search/related_0.js +2 -2
  234. package/SVF-doxygen/html/html/search/related_1.js +1 -1
  235. package/SVF-doxygen/html/html/search/related_2.js +2 -2
  236. package/SVF-doxygen/html/html/search/related_3.js +2 -2
  237. package/SVF-doxygen/html/html/search/related_4.js +2 -2
  238. package/SVF-doxygen/html/html/search/related_5.js +1 -1
  239. package/SVF-doxygen/html/html/search/related_6.js +2 -2
  240. package/SVF-doxygen/html/html/search/related_7.js +4 -4
  241. package/SVF-doxygen/html/html/search/related_8.js +2 -2
  242. package/SVF-doxygen/html/html/search/related_9.js +4 -4
  243. package/SVF-doxygen/html/html/search/related_a.js +19 -19
  244. package/SVF-doxygen/html/html/search/related_b.js +4 -4
  245. package/SVF-doxygen/html/html/search/related_c.js +1 -1
  246. package/SVF-doxygen/html/html/search/related_d.js +11 -11
  247. package/SVF-doxygen/html/html/search/related_e.js +2 -2
  248. package/SVF-doxygen/html/html/search/related_f.js +2 -2
  249. package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
  250. package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
  251. package/SVF-doxygen/html/html/search/typedefs_10.js +60 -60
  252. package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
  253. package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
  254. package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
  255. package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
  256. package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
  257. package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
  258. package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
  259. package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
  260. package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
  261. package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
  262. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  263. package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
  264. package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
  265. package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
  266. package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
  267. package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
  268. package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
  269. package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
  270. package/SVF-doxygen/html/html/search/variables_0.js +147 -147
  271. package/SVF-doxygen/html/html/search/variables_1.js +75 -75
  272. package/SVF-doxygen/html/html/search/variables_10.js +97 -97
  273. package/SVF-doxygen/html/html/search/variables_11.js +46 -46
  274. package/SVF-doxygen/html/html/search/variables_12.js +92 -92
  275. package/SVF-doxygen/html/html/search/variables_13.js +75 -75
  276. package/SVF-doxygen/html/html/search/variables_14.js +14 -14
  277. package/SVF-doxygen/html/html/search/variables_15.js +48 -48
  278. package/SVF-doxygen/html/html/search/variables_16.js +9 -9
  279. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  280. package/SVF-doxygen/html/html/search/variables_18.js +2 -2
  281. package/SVF-doxygen/html/html/search/variables_2.js +34 -34
  282. package/SVF-doxygen/html/html/search/variables_3.js +141 -141
  283. package/SVF-doxygen/html/html/search/variables_4.js +55 -55
  284. package/SVF-doxygen/html/html/search/variables_5.js +38 -38
  285. package/SVF-doxygen/html/html/search/variables_6.js +66 -66
  286. package/SVF-doxygen/html/html/search/variables_7.js +33 -33
  287. package/SVF-doxygen/html/html/search/variables_8.js +7 -7
  288. package/SVF-doxygen/html/html/search/variables_9.js +77 -77
  289. package/SVF-doxygen/html/html/search/variables_a.js +4 -4
  290. package/SVF-doxygen/html/html/search/variables_b.js +10 -10
  291. package/SVF-doxygen/html/html/search/variables_c.js +45 -45
  292. package/SVF-doxygen/html/html/search/variables_d.js +56 -56
  293. package/SVF-doxygen/html/html/search/variables_e.js +123 -123
  294. package/SVF-doxygen/html/html/search/variables_f.js +30 -30
  295. package/SVF-doxygen/html/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  296. package/SVF-doxygen/html/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  297. package/package.json +1 -1
  298. package/svf/include/Graphs/VFGNode.h +2 -2
  299. package/svf-llvm/include/SVF-LLVM/LLVMModule.h +16 -4
  300. package/svf-llvm/lib/LLVMModule.cpp +24 -20
@@ -162,9 +162,9 @@ Public Member Functions</h2></td></tr>
162
162
  <tr class="separator:a74256f36f0fdc242df9729906c34efbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
163
163
  <tr class="memitem:a0ef17c1d5e6a95c597d2334ea577a965"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *ov)</td></tr>
164
164
  <tr class="separator:a0ef17c1d5e6a95c597d2334ea577a965"><td class="memSeparator" colspan="2">&#160;</td></tr>
165
- <tr class="memitem:aa259d688db36387c824ebfa741d4692d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#aa259d688db36387c824ebfa741d4692d">isUsedExtFunction</a> (<a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *func)</td></tr>
166
- <tr class="memdesc:aa259d688db36387c824ebfa741d4692d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove unused function in extapi.bc module. <a href="classSVF_1_1LLVMModuleSet.html#aa259d688db36387c824ebfa741d4692d">More...</a><br /></td></tr>
167
- <tr class="separator:aa259d688db36387c824ebfa741d4692d"><td class="memSeparator" colspan="2">&#160;</td></tr>
165
+ <tr class="memitem:abbca1044dc59299224598ec2ba17fe7e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#abbca1044dc59299224598ec2ba17fe7e">isCalledExtFunction</a> (<a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *func)</td></tr>
166
+ <tr class="memdesc:abbca1044dc59299224598ec2ba17fe7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove unused function in extapi.bc module. <a href="classSVF_1_1LLVMModuleSet.html#abbca1044dc59299224598ec2ba17fe7e">More...</a><br /></td></tr>
167
+ <tr class="separator:abbca1044dc59299224598ec2ba17fe7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
168
168
  <tr class="memitem:a6ff4127e778810f613e594782643ad22"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a6ff4127e778810f613e594782643ad22">getSVFFunction</a> (const <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> &amp;<a class="el" href="cJSON_8cpp.html#acc128f98d9ceca227038c771308eff39">name</a>)</td></tr>
169
169
  <tr class="memdesc:a6ff4127e778810f613e594782643ad22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the corresponding Function based on its name. <a href="classSVF_1_1LLVMModuleSet.html#a6ff4127e778810f613e594782643ad22">More...</a><br /></td></tr>
170
170
  <tr class="separator:a6ff4127e778810f613e594782643ad22"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -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#l00638">638</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
951
- <div class="fragment"><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;{</div>
952
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; std::vector&lt;const Function*&gt; ctor_funcs;</div>
953
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; std::vector&lt;const Function*&gt; dtor_funcs;</div>
954
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* orgMain = 0;</div>
955
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div>
956
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; </div>
957
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</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="l00646"></a><span class="lineno"> 646</span>&#160; {</div>
959
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
960
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</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="l00649"></a><span class="lineno"> 649</span>&#160; {</div>
962
- <div class="line"><a name="l00650"></a><span class="lineno"> 650</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="l00651"></a><span class="lineno"> 651</span>&#160; {</div>
964
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
965
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; }</div>
966
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</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="l00655"></a><span class="lineno"> 655</span>&#160; {</div>
968
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
969
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div>
970
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div>
971
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; </div>
972
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="comment">// Find main function</span></div>
973
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;func : mod)</div>
974
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; {</div>
975
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keyword">auto</span> funName = func.getName();</div>
976
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; </div>
977
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</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>
950
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00640">640</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
951
+ <div class="fragment"><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;{</div>
952
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; std::vector&lt;const Function*&gt; ctor_funcs;</div>
953
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; std::vector&lt;const Function*&gt; dtor_funcs;</div>
954
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* orgMain = 0;</div>
955
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div>
956
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; </div>
957
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</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="l00648"></a><span class="lineno"> 648</span>&#160; {</div>
959
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
960
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</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="l00651"></a><span class="lineno"> 651</span>&#160; {</div>
962
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</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="l00653"></a><span class="lineno"> 653</span>&#160; {</div>
964
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
965
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; }</div>
966
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</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="l00657"></a><span class="lineno"> 657</span>&#160; {</div>
968
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
969
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div>
970
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; }</div>
971
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; </div>
972
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">// Find main function</span></div>
973
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;func : mod)</div>
974
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
975
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keyword">auto</span> funName = func.getName();</div>
978
976
  <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; </div>
979
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">if</span> (funName.equals(<span class="stringliteral">&quot;main&quot;</span>))</div>
980
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; {</div>
981
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; orgMain = &amp;func;</div>
982
- <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; mainMod = &amp;mod;</div>
983
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div>
984
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div>
985
- <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div>
986
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; </div>
987
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</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="l00676"></a><span class="lineno"> 676</span>&#160; <span class="comment">// there are global constructor or destructor functions.</span></div>
989
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</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="l00678"></a><span class="lineno"> 678</span>&#160; (ctor_funcs.size() &gt; 0 || dtor_funcs.size() &gt; 0))</div>
991
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; {</div>
992
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</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="l00681"></a><span class="lineno"> 681</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; M = *mainMod;</div>
994
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="comment">// char **</span></div>
995
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</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="l00684"></a><span class="lineno"> 684</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i32 = IntegerType::getInt32Ty(M.getContext());</div>
997
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div>
998
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 9)</span></div>
999
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; FunctionCallee svfmainFn = M.getOrInsertFunction(</div>
1000
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
1001
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; Type::getVoidTy(M.getContext()),</div>
1002
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; i32,i8ptr2,i8ptr2</div>
1003
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; );</div>
1004
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</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="l00693"></a><span class="lineno"> 693</span>&#160;<span class="preprocessor">#else</span></div>
1006
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</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="l00695"></a><span class="lineno"> 695</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
1008
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; Type::getVoidTy(M.getContext()),</div>
1009
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; i32,i8ptr2,i8ptr2</div>
1010
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; ));</div>
1011
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="preprocessor">#endif</span></div>
1012
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; svfmain-&gt;setCallingConv(llvm::CallingConv::C);</div>
1013
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</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="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div>
1015
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</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="l00704"></a><span class="lineno"> 704</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1017
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; ctor : ctor_funcs)</div>
1018
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; {</div>
1019
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(</div>
1020
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; ctor-&gt;getName(),</div>
1021
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; Type::getVoidTy(M.getContext())</div>
1022
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; );</div>
1023
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; Builder.CreateCall(target);</div>
1024
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; }</div>
1025
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="comment">// main() should be called after all ctor functions and before dtor</span></div>
1026
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="comment">// functions.</span></div>
1027
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; Function::arg_iterator arg_it = svfmain-&gt;arg_begin();</div>
1028
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</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="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordtype">size_t</span> cnt = orgMain-&gt;arg_size();</div>
1030
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</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="l00719"></a><span class="lineno"> 719</span>&#160; Builder.CreateCall(orgMain, llvm::ArrayRef&lt;Value*&gt;(args, args + cnt));</div>
1032
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</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="l00721"></a><span class="lineno"> 721</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1034
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; dtor : dtor_funcs)</div>
1035
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; {</div>
1036
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(dtor-&gt;getName(), Type::getVoidTy(M.getContext()));</div>
1037
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; Builder.CreateCall(target);</div>
1038
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div>
1039
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="comment">// return;</span></div>
1040
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; Builder.CreateRetVoid();</div>
1041
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; }</div>
1042
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;}</div>
977
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</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="l00668"></a><span class="lineno"> 668</span>&#160; </div>
979
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">if</span> (funName.equals(<span class="stringliteral">&quot;main&quot;</span>))</div>
980
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; {</div>
981
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; orgMain = &amp;func;</div>
982
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; mainMod = &amp;mod;</div>
983
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div>
984
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; }</div>
985
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; }</div>
986
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; </div>
987
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</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="l00678"></a><span class="lineno"> 678</span>&#160; <span class="comment">// there are global constructor or destructor functions.</span></div>
989
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</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="l00680"></a><span class="lineno"> 680</span>&#160; (ctor_funcs.size() &gt; 0 || dtor_funcs.size() &gt; 0))</div>
991
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div>
992
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</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="l00683"></a><span class="lineno"> 683</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; M = *mainMod;</div>
994
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="comment">// char **</span></div>
995
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</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="l00686"></a><span class="lineno"> 686</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i32 = IntegerType::getInt32Ty(M.getContext());</div>
997
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div>
998
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 9)</span></div>
999
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; FunctionCallee svfmainFn = M.getOrInsertFunction(</div>
1000
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
1001
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; Type::getVoidTy(M.getContext()),</div>
1002
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; i32,i8ptr2,i8ptr2</div>
1003
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; );</div>
1004
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</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="l00695"></a><span class="lineno"> 695</span>&#160;<span class="preprocessor">#else</span></div>
1006
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</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="l00697"></a><span class="lineno"> 697</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
1008
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; Type::getVoidTy(M.getContext()),</div>
1009
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; i32,i8ptr2,i8ptr2</div>
1010
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; ));</div>
1011
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="preprocessor">#endif</span></div>
1012
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; svfmain-&gt;setCallingConv(llvm::CallingConv::C);</div>
1013
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</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="l00704"></a><span class="lineno"> 704</span>&#160; <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div>
1015
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</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="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1017
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; ctor : ctor_funcs)</div>
1018
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; {</div>
1019
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(</div>
1020
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; ctor-&gt;getName(),</div>
1021
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; Type::getVoidTy(M.getContext())</div>
1022
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; );</div>
1023
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; Builder.CreateCall(target);</div>
1024
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div>
1025
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="comment">// main() should be called after all ctor functions and before dtor</span></div>
1026
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="comment">// functions.</span></div>
1027
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; Function::arg_iterator arg_it = svfmain-&gt;arg_begin();</div>
1028
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</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="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordtype">size_t</span> cnt = orgMain-&gt;arg_size();</div>
1030
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</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="l00721"></a><span class="lineno"> 721</span>&#160; Builder.CreateCall(orgMain, llvm::ArrayRef&lt;Value*&gt;(args, args + cnt));</div>
1032
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</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="l00723"></a><span class="lineno"> 723</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1034
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; dtor : dtor_funcs)</div>
1035
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; {</div>
1036
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(dtor-&gt;getName(), Type::getVoidTy(M.getContext()));</div>
1037
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; Builder.CreateCall(target);</div>
1038
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; }</div>
1039
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="comment">// return;</span></div>
1040
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; Builder.CreateRetVoid();</div>
1041
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div>
1042
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;}</div>
1043
1043
  </div><!-- fragment -->
1044
1044
  </div>
1045
1045
  </div>
@@ -1069,51 +1069,51 @@ 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#l01230">1230</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1073
- <div class="fragment"><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;{</div>
1074
- <div class="line"><a name="l01232"></a><span class="lineno"> 1232</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="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="stringliteral">&quot;SVFType has been added before&quot;</span>);</div>
1076
- <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; </div>
1077
- <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
1078
- <div class="line"><a name="l01236"></a><span class="lineno"> 1236</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>
1079
- <div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</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>
1080
- <div class="line"><a name="l01238"></a><span class="lineno"> 1238</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>
1081
- <div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; {</div>
1082
- <div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <span class="keyword">auto</span> svfIntT = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>();</div>
1083
- <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keywordtype">unsigned</span> signWidth = intT-&gt;getBitWidth();</div>
1084
- <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; assert(signWidth &lt; INT16_MAX &amp;&amp; <span class="stringliteral">&quot;Integer width too big&quot;</span>);</div>
1085
- <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; svfIntT-&gt;setSignAndWidth(intT-&gt;getSignBit() ? -signWidth : signWidth);</div>
1086
- <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; svftype = svfIntT;</div>
1087
- <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; }</div>
1088
- <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#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* ft = SVFUtil::dyn_cast&lt;FunctionType&gt;(T))</div>
1089
- <div class="line"><a name="l01247"></a><span class="lineno"> 1247</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>
1090
- <div class="line"><a name="l01248"></a><span class="lineno"> 1248</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>
1091
- <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; {</div>
1092
- <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keyword">auto</span> svfst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>();</div>
1093
- <div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <span class="keywordflow">if</span> (st-&gt;hasName())</div>
1094
- <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; svfst-&gt;setName(st-&gt;getName().str());</div>
1095
- <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; svftype = svfst;</div>
1096
- <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; }</div>
1097
- <div class="line"><a name="l01255"></a><span class="lineno"> 1255</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>
1098
- <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; {</div>
1099
- <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="keyword">auto</span> svfat = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>();</div>
1100
- <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; svfat-&gt;setNumOfElement(at-&gt;getNumElements());</div>
1101
- <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; svfat-&gt;setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at-&gt;getElementType()));</div>
1102
- <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; svftype = svfat;</div>
1103
- <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; }</div>
1104
- <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <span class="keywordflow">else</span></div>
1105
- <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; {</div>
1106
- <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>;</div>
1107
- <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keyword">auto</span> ot = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(T-&gt;isSingleValueType());</div>
1108
- <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) &lt;&lt; *T;</div>
1109
- <div class="line"><a name="l01267"></a><span class="lineno"> 1267</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>
1110
- <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; svftype = ot;</div>
1111
- <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; }</div>
1112
- <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; </div>
1113
- <div class="line"><a name="l01271"></a><span class="lineno"> 1271</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>
1114
- <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
1115
- <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; <span class="keywordflow">return</span> svftype;</div>
1116
- <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;}</div>
1072
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01234">1234</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1073
+ <div class="fragment"><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;{</div>
1074
+ <div class="line"><a name="l01236"></a><span class="lineno"> 1236</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="l01237"></a><span class="lineno"> 1237</span>&#160; <span class="stringliteral">&quot;SVFType has been added before&quot;</span>);</div>
1076
+ <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; </div>
1077
+ <div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
1078
+ <div class="line"><a name="l01240"></a><span class="lineno"> 1240</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>
1079
+ <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</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>
1080
+ <div class="line"><a name="l01242"></a><span class="lineno"> 1242</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>
1081
+ <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; {</div>
1082
+ <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="keyword">auto</span> svfIntT = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>();</div>
1083
+ <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="keywordtype">unsigned</span> signWidth = intT-&gt;getBitWidth();</div>
1084
+ <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; assert(signWidth &lt; INT16_MAX &amp;&amp; <span class="stringliteral">&quot;Integer width too big&quot;</span>);</div>
1085
+ <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; svfIntT-&gt;setSignAndWidth(intT-&gt;getSignBit() ? -signWidth : signWidth);</div>
1086
+ <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; svftype = svfIntT;</div>
1087
+ <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; }</div>
1088
+ <div class="line"><a name="l01250"></a><span class="lineno"> 1250</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>
1089
+ <div class="line"><a name="l01251"></a><span class="lineno"> 1251</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>
1090
+ <div class="line"><a name="l01252"></a><span class="lineno"> 1252</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>
1091
+ <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; {</div>
1092
+ <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keyword">auto</span> svfst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>();</div>
1093
+ <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordflow">if</span> (st-&gt;hasName())</div>
1094
+ <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; svfst-&gt;setName(st-&gt;getName().str());</div>
1095
+ <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; svftype = svfst;</div>
1096
+ <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; }</div>
1097
+ <div class="line"><a name="l01259"></a><span class="lineno"> 1259</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>
1098
+ <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; {</div>
1099
+ <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <span class="keyword">auto</span> svfat = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>();</div>
1100
+ <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; svfat-&gt;setNumOfElement(at-&gt;getNumElements());</div>
1101
+ <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; svfat-&gt;setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at-&gt;getElementType()));</div>
1102
+ <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; svftype = svfat;</div>
1103
+ <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; }</div>
1104
+ <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordflow">else</span></div>
1105
+ <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; {</div>
1106
+ <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>;</div>
1107
+ <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <span class="keyword">auto</span> ot = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(T-&gt;isSingleValueType());</div>
1108
+ <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) &lt;&lt; *T;</div>
1109
+ <div class="line"><a name="l01271"></a><span class="lineno"> 1271</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>
1110
+ <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; svftype = ot;</div>
1111
+ <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; }</div>
1112
+ <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; </div>
1113
+ <div class="line"><a name="l01275"></a><span class="lineno"> 1275</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>
1114
+ <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
1115
+ <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; <span class="keywordflow">return</span> svftype;</div>
1116
+ <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;}</div>
1117
1117
  </div><!-- fragment -->
1118
1118
  </div>
1119
1119
  </div>
@@ -1185,14 +1185,12 @@ Friends</h2></td></tr>
1185
1185
  <p>App Func decl -&gt; <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> extern Func def</p>
1186
1186
  <p>Overwrite App Func def -&gt; <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> extern Func def</p>
1187
1187
 
1188
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00795">795</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1189
- <div class="fragment"><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;{</div>
1190
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> funDecls, funDefs, extFuncs, overwriteExtFuncs;</div>
1191
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;string&gt;</a> declNames, defNames, intersectNames;</div>
1192
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, const Function*&gt;</a> NameToFunDefMapTy;</div>
1193
- <div class="line"><a name="l00800"></a><span class="lineno"> 800</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>
1194
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* main_ext = <span class="keyword">nullptr</span>;</div>
1195
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* main_app = <span class="keyword">nullptr</span>;</div>
1188
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00797">797</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1189
+ <div class="fragment"><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;{</div>
1190
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> funDecls, funDefs, extFuncs, overwriteExtFuncs;</div>
1191
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;string&gt;</a> declNames, defNames, intersectNames;</div>
1192
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, const Function*&gt;</a> NameToFunDefMapTy;</div>
1193
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</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>
1196
1194
  <div class="line"><a name="l00803"></a><span class="lineno"> 803</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>
1197
1195
  <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; {</div>
1198
1196
  <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="comment">// extapi.bc functions</span></div>
@@ -1200,152 +1198,156 @@ Friends</h2></td></tr>
1200
1198
  <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; {</div>
1201
1199
  <div class="line"><a name="l00808"></a><span class="lineno"> 808</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>
1202
1200
  <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; {</div>
1203
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; extFuncs.insert(&amp;fun);</div>
1204
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="comment">// Find overwrite functions in extapi.bc</span></div>
1205
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; std::vector&lt;std::string&gt; annotations = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">LLVMUtil::getFunAnnotations</a>(&amp;fun);</div>
1206
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keyword">auto</span> it = std::find_if(annotations.begin(), annotations.end(), [&amp;](<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; annotation)</div>
1207
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div>
1208
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; return annotation.find(<span class="stringliteral">&quot;OVERWRITE&quot;</span>) != std::string::npos;</div>
1209
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; });</div>
1210
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">if</span> (it != annotations.end())</div>
1201
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="comment">// there is main declaration in ext bc, it should be mapped to</span></div>
1202
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="comment">// main definition in app bc.</span></div>
1203
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">&quot;main&quot;</span>)</div>
1204
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; {</div>
1205
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; funDecls.insert(&amp;fun);</div>
1206
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; declNames.insert(fun.getName().str());</div>
1207
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; }</div>
1208
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">else</span></div>
1211
1209
  <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; {</div>
1212
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; overwriteExtFuncs.insert(&amp;fun);</div>
1213
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div>
1214
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">&quot;main&quot;</span>)</div>
1215
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div>
1216
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; main_ext = &amp;fun;</div>
1217
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; }</div>
1218
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; }</div>
1219
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div>
1220
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">else</span></div>
1221
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; {</div>
1222
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</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>
1223
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; {</div>
1224
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
1225
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; {</div>
1226
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; funDecls.insert(&amp;fun);</div>
1227
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; declNames.insert(fun.getName().str());</div>
1228
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; }</div>
1229
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">else</span></div>
1230
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; {</div>
1231
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; funDefs.insert(&amp;fun);</div>
1232
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; defNames.insert(fun.getName().str());</div>
1233
- <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; }</div>
1234
- <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">&quot;main&quot;</span>)</div>
1210
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; extFuncs.insert(&amp;fun);</div>
1211
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="comment">// Find overwrite functions in extapi.bc</span></div>
1212
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; std::vector&lt;std::string&gt; annotations =</div>
1213
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">LLVMUtil::getFunAnnotations</a>(&amp;fun);</div>
1214
+ <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keyword">auto</span> it =</div>
1215
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; std::find_if(annotations.begin(), annotations.end(),</div>
1216
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; [&amp;](<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; annotation)</div>
1217
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; {</div>
1218
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; return annotation.find(<span class="stringliteral">&quot;OVERWRITE&quot;</span>) !=</div>
1219
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; std::string::npos;</div>
1220
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; });</div>
1221
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">if</span> (it != annotations.end())</div>
1222
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; {</div>
1223
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; overwriteExtFuncs.insert(&amp;fun);</div>
1224
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; }</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; }</div>
1227
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; }</div>
1228
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">else</span></div>
1229
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; {</div>
1230
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</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>
1231
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; {</div>
1232
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
1235
1233
  <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; {</div>
1236
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; main_app = &amp;fun;</div>
1237
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; }</div>
1238
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; }</div>
1239
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div>
1240
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div>
1241
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="comment">// Find the intersectNames</span></div>
1242
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; std::set_intersection(</div>
1243
- <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; declNames.begin(), declNames.end(), defNames.begin(), defNames.end(),</div>
1244
- <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; std::inserter(intersectNames, intersectNames.end()));</div>
1245
- <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; </div>
1246
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; NameToFunDefMapTy nameToFunDefMap;</div>
1247
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
1248
- <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; {</div>
1249
- <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1250
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1251
- <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; {</div>
1252
- <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; nameToFunDefMap.emplace(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName), fdef);</div>
1253
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div>
1254
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; }</div>
1255
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; </div>
1256
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; NameToFunDeclsMapTy nameToFunDeclsMap;</div>
1257
- <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1258
- <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; {</div>
1259
- <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1260
- <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1261
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; {</div>
1262
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="comment">// pair with key funName will be created automatically if it does</span></div>
1263
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="comment">// not exist</span></div>
1264
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; nameToFunDeclsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName)].insert(fdecl);</div>
1265
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; }</div>
1266
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; }</div>
1267
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; </div>
1268
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</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; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1271
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; NameToFunDefMapTy::iterator mit;</div>
1272
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end() &amp;&amp;</div>
1273
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; (mit = nameToFunDefMap.find(funName)) != nameToFunDefMap.end())</div>
1274
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; {</div>
1275
- <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit-&gt;second;</div>
1276
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; }</div>
1277
- <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; }</div>
1278
- <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[main_ext] = main_app;</div>
1279
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; </div>
1280
- <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
1281
- <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; {</div>
1282
- <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1283
- <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div>
1284
- <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">continue</span>;</div>
1285
- <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div>
1286
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div>
1287
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordflow">continue</span>;</div>
1288
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; </div>
1289
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[fdef];</div>
1290
- <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; declsSet = mit-&gt;second;</div>
1291
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="comment">// Reserve space for decls to avoid more than 1 reallocation</span></div>
1292
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; decls.reserve(decls.size() + declsSet.size());</div>
1234
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; funDecls.insert(&amp;fun);</div>
1235
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; declNames.insert(fun.getName().str());</div>
1236
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; }</div>
1237
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">else</span></div>
1238
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; {</div>
1239
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; funDefs.insert(&amp;fun);</div>
1240
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; defNames.insert(fun.getName().str());</div>
1241
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; }</div>
1242
+ <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div>
1243
+ <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div>
1244
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; }</div>
1245
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="comment">// Find the intersectNames</span></div>
1246
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; std::set_intersection(</div>
1247
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; declNames.begin(), declNames.end(), defNames.begin(), defNames.end(),</div>
1248
+ <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; std::inserter(intersectNames, intersectNames.end()));</div>
1249
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; </div>
1250
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; NameToFunDefMapTy nameToFunDefMap;</div>
1251
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
1252
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; {</div>
1253
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1254
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1255
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; {</div>
1256
+ <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; nameToFunDefMap.emplace(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName), fdef);</div>
1257
+ <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; }</div>
1258
+ <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; }</div>
1259
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; </div>
1260
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; NameToFunDeclsMapTy nameToFunDeclsMap;</div>
1261
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1262
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; {</div>
1263
+ <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1264
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1265
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; {</div>
1266
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="comment">// pair with key funName will be created automatically if it does</span></div>
1267
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="comment">// not exist</span></div>
1268
+ <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; nameToFunDeclsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName)].insert(fdecl);</div>
1269
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; }</div>
1270
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div>
1271
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; </div>
1272
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1273
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; {</div>
1274
+ <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1275
+ <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; NameToFunDefMapTy::iterator mit;</div>
1276
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end() &amp;&amp;</div>
1277
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; (mit = nameToFunDefMap.find(funName)) != nameToFunDefMap.end())</div>
1278
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; {</div>
1279
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit-&gt;second;</div>
1280
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; }</div>
1281
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; }</div>
1282
+ <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; </div>
1283
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
1284
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; {</div>
1285
+ <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1286
+ <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div>
1287
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">continue</span>;</div>
1288
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div>
1289
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div>
1290
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">continue</span>;</div>
1293
1291
  <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; </div>
1294
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl : declsSet)</div>
1295
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; {</div>
1296
- <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; decls.push_back(decl);</div>
1297
- <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; }</div>
1298
- <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; }</div>
1299
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[main_app] = {main_ext};</div>
1300
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; </div>
1301
- <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>
1302
- <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; {</div>
1303
- <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* extfun : extFuncs)</div>
1304
- <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; {</div>
1305
- <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> declName = fdecl-&gt;getName().str();</div>
1306
- <div class="line"><a name="l00919"></a><span class="lineno"> 919</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>
1307
- <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; std::replace(declName.begin(), declName.end(), <span class="charliteral">&#39;.&#39;</span>, <span class="charliteral">&#39;_&#39;</span>);</div>
1308
- <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">if</span> (extfun-&gt;getName().str().compare(declName) == 0)</div>
1309
- <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; {</div>
1310
- <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="comment">// AppDecl -&gt; ExtDef in Table 1</span></div>
1311
- <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = extfun;</div>
1312
- <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="comment">// ExtDef -&gt; AppDecl in Table 1</span></div>
1313
- <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[extfun];</div>
1314
- <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; decls.push_back(fdecl);</div>
1315
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="comment">// Keep all called functions in extfun</span></div>
1316
- <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="comment">// ExtDecl -&gt; ExtDecl in Table 1</span></div>
1317
- <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a> = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(extfun);</div>
1318
- <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; }</div>
1319
- <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; }</div>
1320
- <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; }</div>
1321
- <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; </div>
1322
- <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* appfunc : funDefs)</div>
1323
- <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; {</div>
1324
- <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* owfunc : overwriteExtFuncs)</div>
1325
- <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; {</div>
1326
- <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keywordflow">if</span> (appfunc-&gt;getName().str().compare(owfunc-&gt;getName().str()) == 0)</div>
1327
- <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; {</div>
1328
- <div class="line"><a name="l00943"></a><span class="lineno"> 943</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>
1329
- <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = fun-&gt;getParent();</div>
1330
- <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* funType = fun-&gt;getFunctionType();</div>
1331
- <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName = fun-&gt;getName().str();</div>
1332
- <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="comment">// Replace app function definition with declaration</span></div>
1333
- <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* declaration = Function::Create(funType, GlobalValue::ExternalLinkage, funName, mod);</div>
1334
- <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; fun-&gt;replaceAllUsesWith(declaration);</div>
1335
- <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; fun-&gt;eraseFromParent();</div>
1336
- <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; declaration-&gt;setName(funName);</div>
1337
- <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="comment">// AppDef -&gt; ExtDef in Table 1, AppDef has been changed to AppDecl</span></div>
1338
- <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[declaration] = owfunc;</div>
1339
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="comment">// ExtDef -&gt; AppDef in Table 1</span></div>
1340
- <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[owfunc];</div>
1341
- <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; decls.push_back(declaration);</div>
1342
- <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="comment">// Keep all called functions in owfunc</span></div>
1343
- <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="comment">// ExtDecl -&gt; ExtDecl in Table 1</span></div>
1344
- <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a> = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(owfunc);</div>
1345
- <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div>
1346
- <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; }</div>
1347
- <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; }</div>
1348
- <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;}</div>
1292
+ <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[fdef];</div>
1293
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; declsSet = mit-&gt;second;</div>
1294
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="comment">// Reserve space for decls to avoid more than 1 reallocation</span></div>
1295
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; decls.reserve(decls.size() + declsSet.size());</div>
1296
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; </div>
1297
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl : declsSet)</div>
1298
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; {</div>
1299
+ <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; decls.push_back(decl);</div>
1300
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; }</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; </div>
1303
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1304
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; {</div>
1305
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* extfun : extFuncs)</div>
1306
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; {</div>
1307
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> declName = fdecl-&gt;getName().str();</div>
1308
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</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>
1309
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; std::replace(declName.begin(), declName.end(), <span class="charliteral">&#39;.&#39;</span>, <span class="charliteral">&#39;_&#39;</span>);</div>
1310
+ <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">if</span> (extfun-&gt;getName().str().compare(declName) == 0)</div>
1311
+ <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; {</div>
1312
+ <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="comment">// AppDecl -&gt; ExtDef in Table 1</span></div>
1313
+ <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = extfun;</div>
1314
+ <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="comment">// ExtDef -&gt; AppDecl in Table 1</span></div>
1315
+ <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[extfun];</div>
1316
+ <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; decls.push_back(fdecl);</div>
1317
+ <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="comment">// Keep all called functions in extfun</span></div>
1318
+ <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="comment">// ExtDecl -&gt; ExtDecl in Table 1</span></div>
1319
+ <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a> = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(extfun);</div>
1320
+ <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; }</div>
1321
+ <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; }</div>
1322
+ <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; }</div>
1323
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; </div>
1324
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* appfunc : funDefs)</div>
1325
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; {</div>
1326
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* owfunc : overwriteExtFuncs)</div>
1327
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; {</div>
1328
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">if</span> (appfunc-&gt;getName().str().compare(owfunc-&gt;getName().str()) == 0)</div>
1329
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; {</div>
1330
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</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>
1331
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = fun-&gt;getParent();</div>
1332
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* funType = fun-&gt;getFunctionType();</div>
1333
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName = fun-&gt;getName().str();</div>
1334
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="comment">// Replace app function definition with declaration</span></div>
1335
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* declaration = Function::Create(funType, GlobalValue::ExternalLinkage, funName, mod);</div>
1336
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; fun-&gt;replaceAllUsesWith(declaration);</div>
1337
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; fun-&gt;eraseFromParent();</div>
1338
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; declaration-&gt;setName(funName);</div>
1339
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="comment">// AppDef -&gt; ExtDef in Table 1, AppDef has been changed to AppDecl</span></div>
1340
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[declaration] = owfunc;</div>
1341
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="comment">// ExtDef -&gt; AppDef in Table 1</span></div>
1342
+ <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>[owfunc];</div>
1343
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; decls.push_back(declaration);</div>
1344
+ <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="comment">// Keep all called functions in owfunc</span></div>
1345
+ <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="comment">// ExtDecl -&gt; ExtDecl in Table 1</span></div>
1346
+ <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a> = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(owfunc);</div>
1347
+ <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; }</div>
1348
+ <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; }</div>
1349
+ <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; }</div>
1350
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;}</div>
1349
1351
  </div><!-- fragment -->
1350
1352
  </div>
1351
1353
  </div>
@@ -1372,47 +1374,47 @@ Friends</h2></td></tr>
1372
1374
  </table>
1373
1375
  </div><div class="memdoc">
1374
1376
 
1375
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00965">965</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1376
- <div class="fragment"><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;{</div>
1377
- <div class="line"><a name="l00967"></a><span class="lineno"> 967</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>
1378
- <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; NameToGlobalsMapTy nameToGlobalsMap;</div>
1379
- <div class="line"><a name="l00969"></a><span class="lineno"> 969</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>
1380
- <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; {</div>
1381
- <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
1382
- <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : mod.globals())</div>
1383
- <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; {</div>
1384
- <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keywordflow">if</span> (global.hasPrivateLinkage())</div>
1385
- <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">continue</span>;</div>
1386
- <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordtype">string</span> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = global.getName().str();</div>
1387
- <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>.empty())</div>
1388
- <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">continue</span>;</div>
1389
- <div class="line"><a name="l00979"></a><span class="lineno"> 979</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>
1390
- <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; }</div>
1391
- <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; }</div>
1392
- <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; </div>
1393
- <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pair : nameToGlobalsMap)</div>
1394
- <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; {</div>
1395
- <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;GlobalVariable*&gt;</a> &amp;globals = pair.second;</div>
1377
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00969">969</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1378
+ <div class="fragment"><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160;{</div>
1379
+ <div class="line"><a name="l00971"></a><span class="lineno"> 971</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>
1380
+ <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; NameToGlobalsMapTy nameToGlobalsMap;</div>
1381
+ <div class="line"><a name="l00973"></a><span class="lineno"> 973</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>
1382
+ <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; {</div>
1383
+ <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
1384
+ <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : mod.globals())</div>
1385
+ <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; {</div>
1386
+ <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">if</span> (global.hasPrivateLinkage())</div>
1387
+ <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">continue</span>;</div>
1388
+ <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordtype">string</span> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = global.getName().str();</div>
1389
+ <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>.empty())</div>
1390
+ <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keywordflow">continue</span>;</div>
1391
+ <div class="line"><a name="l00983"></a><span class="lineno"> 983</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>
1392
+ <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; }</div>
1393
+ <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; }</div>
1396
1394
  <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; </div>
1397
- <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> repIt =</div>
1398
- <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; std::find_if(globals.begin(), globals.end(),</div>
1399
- <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; [](<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* g)</div>
1400
- <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; {</div>
1401
- <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; return g-&gt;hasInitializer();</div>
1402
- <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; });</div>
1403
- <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* rep =</div>
1404
- <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; repIt != globals.end()</div>
1405
- <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; ? *repIt</div>
1406
- <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="comment">// When there is no initializer, just pick the first one.</span></div>
1407
- <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; : (assert(!globals.empty() &amp;&amp; <span class="stringliteral">&quot;Empty global set&quot;</span>),</div>
1408
- <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; *globals.begin());</div>
1409
- <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; </div>
1410
- <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* cur : globals)</div>
1411
- <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; {</div>
1412
- <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>[cur] = rep;</div>
1413
- <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; }</div>
1414
- <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; }</div>
1415
- <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;}</div>
1395
+ <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pair : nameToGlobalsMap)</div>
1396
+ <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; {</div>
1397
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;GlobalVariable*&gt;</a> &amp;globals = pair.second;</div>
1398
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; </div>
1399
+ <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> repIt =</div>
1400
+ <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; std::find_if(globals.begin(), globals.end(),</div>
1401
+ <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; [](<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* g)</div>
1402
+ <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; {</div>
1403
+ <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; return g-&gt;hasInitializer();</div>
1404
+ <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; });</div>
1405
+ <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* rep =</div>
1406
+ <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; repIt != globals.end()</div>
1407
+ <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; ? *repIt</div>
1408
+ <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="comment">// When there is no initializer, just pick the first one.</span></div>
1409
+ <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; : (assert(!globals.empty() &amp;&amp; <span class="stringliteral">&quot;Empty global set&quot;</span>),</div>
1410
+ <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; *globals.begin());</div>
1411
+ <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; </div>
1412
+ <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* cur : globals)</div>
1413
+ <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; {</div>
1414
+ <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>[cur] = rep;</div>
1415
+ <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; }</div>
1416
+ <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; }</div>
1417
+ <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;}</div>
1416
1418
  </div><!-- fragment -->
1417
1419
  </div>
1418
1420
  </div>
@@ -1580,59 +1582,59 @@ Friends</h2></td></tr>
1580
1582
  <p>Array's flatten field infor is the same as its element's flatten infor.</p>
1581
1583
  <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>
1582
1584
 
1583
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01279">1279</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1584
- <div class="fragment"><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;{</div>
1585
- <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty-&gt;getNumElements();</div>
1586
- <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty-&gt;getElementType();</div>
1587
- <div class="line"><a name="l01283"></a><span class="lineno"> 1283</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>
1588
- <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; {</div>
1589
- <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; totalElemNum *= aty-&gt;getNumElements();</div>
1590
- <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; elemTy = aty-&gt;getElementType();</div>
1591
- <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; }</div>
1592
- <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; </div>
1593
- <div class="line"><a name="l01289"></a><span class="lineno"> 1289</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>
1594
- <div class="line"><a name="l01290"></a><span class="lineno"> 1290</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>
1595
- <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; </div>
1596
- <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordflow">if</span> (totalElemNum == 0)</div>
1597
- <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; {</div>
1598
- <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, elemSvfType, 0);</div>
1599
- <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
1600
- <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
1601
- <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
1602
- <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1603
- <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; }</div>
1604
- <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; </div>
1605
- <div class="line"><a name="l01304"></a><span class="lineno"> 1304</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>
1606
- <div class="line"><a name="l01305"></a><span class="lineno"> 1305</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>
1607
- <div class="line"><a name="l01306"></a><span class="lineno"> 1306</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>
1608
- <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; j++)</div>
1609
- <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; {</div>
1610
- <div class="line"><a name="l01309"></a><span class="lineno"> 1309</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>
1611
- <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
1612
- <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; }</div>
1613
- <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; </div>
1614
- <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty-&gt;getNumElements();</div>
1615
- <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; outArrayElemNum; ++i)</div>
1616
- <div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; {</div>
1617
- <div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
1618
- <div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, elemSvfType, idx);</div>
1619
- <div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; }</div>
1620
- <div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; </div>
1621
- <div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; totalElemNum; ++i)</div>
1622
- <div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; {</div>
1623
- <div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; ++j)</div>
1624
- <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; {</div>
1625
- <div class="line"><a name="l01326"></a><span class="lineno"> 1326</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>
1626
- <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
1627
- <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; }</div>
1628
- <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; }</div>
1629
- <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; </div>
1630
- <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &amp;&amp;</div>
1631
- <div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; <span class="stringliteral">&quot;typeForArray size incorrect!!!&quot;</span>);</div>
1632
- <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
1585
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01283">1283</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1586
+ <div class="fragment"><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;{</div>
1587
+ <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty-&gt;getNumElements();</div>
1588
+ <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty-&gt;getElementType();</div>
1589
+ <div class="line"><a name="l01287"></a><span class="lineno"> 1287</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>
1590
+ <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; {</div>
1591
+ <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; totalElemNum *= aty-&gt;getNumElements();</div>
1592
+ <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; elemTy = aty-&gt;getElementType();</div>
1593
+ <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; }</div>
1594
+ <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; </div>
1595
+ <div class="line"><a name="l01293"></a><span class="lineno"> 1293</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>
1596
+ <div class="line"><a name="l01294"></a><span class="lineno"> 1294</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>
1597
+ <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; </div>
1598
+ <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <span class="keywordflow">if</span> (totalElemNum == 0)</div>
1599
+ <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; {</div>
1600
+ <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, elemSvfType, 0);</div>
1601
+ <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
1602
+ <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
1603
+ <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
1604
+ <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1605
+ <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; }</div>
1606
+ <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; </div>
1607
+ <div class="line"><a name="l01308"></a><span class="lineno"> 1308</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>
1608
+ <div class="line"><a name="l01309"></a><span class="lineno"> 1309</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>
1609
+ <div class="line"><a name="l01310"></a><span class="lineno"> 1310</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>
1610
+ <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; j++)</div>
1611
+ <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; {</div>
1612
+ <div class="line"><a name="l01313"></a><span class="lineno"> 1313</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>
1613
+ <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
1614
+ <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; }</div>
1615
+ <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; </div>
1616
+ <div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty-&gt;getNumElements();</div>
1617
+ <div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; outArrayElemNum; ++i)</div>
1618
+ <div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; {</div>
1619
+ <div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
1620
+ <div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, elemSvfType, idx);</div>
1621
+ <div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; }</div>
1622
+ <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; </div>
1623
+ <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; totalElemNum; ++i)</div>
1624
+ <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; {</div>
1625
+ <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; ++j)</div>
1626
+ <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; {</div>
1627
+ <div class="line"><a name="l01330"></a><span class="lineno"> 1330</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>
1628
+ <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
1629
+ <div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; }</div>
1630
+ <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; }</div>
1633
1631
  <div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; </div>
1634
- <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1635
- <div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;}</div>
1632
+ <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &amp;&amp;</div>
1633
+ <div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; <span class="stringliteral">&quot;typeForArray size incorrect!!!&quot;</span>);</div>
1634
+ <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
1635
+ <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; </div>
1636
+ <div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1637
+ <div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;}</div>
1636
1638
  </div><!-- fragment -->
1637
1639
  </div>
1638
1640
  </div>
@@ -1664,18 +1666,18 @@ Friends</h2></td></tr>
1664
1666
  <p>Collect simple type (non-aggregate) info </p>
1665
1667
  <p>Only one field</p>
1666
1668
 
1667
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01399">1399</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1668
- <div class="fragment"><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;{</div>
1669
- <div class="line"><a name="l01402"></a><span class="lineno"> 1402</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>
1670
- <div class="line"><a name="l01403"></a><span class="lineno"> 1403</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>
1671
- <div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, svfType, 0);</div>
1672
- <div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; </div>
1673
- <div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
1674
- <div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
1675
- <div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
1669
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01403">1403</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1670
+ <div class="fragment"><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;{</div>
1671
+ <div class="line"><a name="l01406"></a><span class="lineno"> 1406</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>
1672
+ <div class="line"><a name="l01407"></a><span class="lineno"> 1407</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>
1673
+ <div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, svfType, 0);</div>
1676
1674
  <div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; </div>
1677
- <div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1678
- <div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;}</div>
1675
+ <div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
1676
+ <div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
1677
+ <div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
1678
+ <div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; </div>
1679
+ <div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1680
+ <div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;}</div>
1679
1681
  </div><!-- fragment -->
1680
1682
  </div>
1681
1683
  </div>
@@ -1717,56 +1719,56 @@ Friends</h2></td></tr>
1717
1719
  <p>Fill in struct_info for T. Given a Struct type, we recursively extend and record its fields and types. </p>
1718
1720
  <p>The struct info should not be processed before</p>
1719
1721
 
1720
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01342">1342</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1721
- <div class="fragment"><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;{</div>
1722
- <div class="line"><a name="l01346"></a><span class="lineno"> 1346</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>
1723
- <div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; </div>
1724
- <div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div>
1725
- <div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; numFields = 0;</div>
1726
- <div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <span class="comment">// The offset when considering array stride info</span></div>
1727
- <div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div>
1728
- <div class="line"><a name="l01352"></a><span class="lineno"> 1352</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>
1729
- <div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; {</div>
1730
- <div class="line"><a name="l01354"></a><span class="lineno"> 1354</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>
1731
- <div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <span class="comment">// offset with int_32 (s32_t) is large enough and won&#39;t overflow</span></div>
1732
- <div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
1733
- <div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; </div>
1734
- <div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(elemTy))</div>
1735
- <div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; {</div>
1736
- <div class="line"><a name="l01360"></a><span class="lineno"> 1360</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>
1737
- <div class="line"><a name="l01361"></a><span class="lineno"> 1361</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>
1738
- <div class="line"><a name="l01362"></a><span class="lineno"> 1362</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>
1739
- <div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="comment">// Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div>
1740
- <div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; ++j)</div>
1741
- <div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; {</div>
1742
- <div class="line"><a name="l01366"></a><span class="lineno"> 1366</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>
1743
- <div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
1744
- <div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; }</div>
1745
- <div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; numFields += nfF;</div>
1746
- <div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; strideOffset += nfE;</div>
1747
- <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> tpj = 0; tpj &lt; nfE; ++tpj)</div>
1748
- <div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; {</div>
1749
- <div class="line"><a name="l01373"></a><span class="lineno"> 1373</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>
1750
- <div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
1751
- <div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; }</div>
1752
- <div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; </div>
1753
- <div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; }</div>
1754
- <div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <span class="keywordflow">else</span></div>
1755
- <div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; {</div>
1756
- <div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <span class="comment">// Simple type</span></div>
1757
- <div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; numFields += 1;</div>
1758
- <div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; strideOffset += 1;</div>
1759
- <div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
1760
- <div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
1761
- <div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; }</div>
1762
- <div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; }</div>
1763
- <div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; </div>
1764
- <div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp;</div>
1765
- <div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div>
1766
- <div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
1722
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01346">1346</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1723
+ <div class="fragment"><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;{</div>
1724
+ <div class="line"><a name="l01350"></a><span class="lineno"> 1350</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>
1725
+ <div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; </div>
1726
+ <div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div>
1727
+ <div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; numFields = 0;</div>
1728
+ <div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <span class="comment">// The offset when considering array stride info</span></div>
1729
+ <div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div>
1730
+ <div class="line"><a name="l01356"></a><span class="lineno"> 1356</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>
1731
+ <div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; {</div>
1732
+ <div class="line"><a name="l01358"></a><span class="lineno"> 1358</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>
1733
+ <div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <span class="comment">// offset with int_32 (s32_t) is large enough and won&#39;t overflow</span></div>
1734
+ <div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
1735
+ <div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; </div>
1736
+ <div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(elemTy))</div>
1737
+ <div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; {</div>
1738
+ <div class="line"><a name="l01364"></a><span class="lineno"> 1364</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>
1739
+ <div class="line"><a name="l01365"></a><span class="lineno"> 1365</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>
1740
+ <div class="line"><a name="l01366"></a><span class="lineno"> 1366</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>
1741
+ <div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; <span class="comment">// Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div>
1742
+ <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; nfF; ++j)</div>
1743
+ <div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; {</div>
1744
+ <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>* elemTy = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1745
+ <div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
1746
+ <div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; }</div>
1747
+ <div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; numFields += nfF;</div>
1748
+ <div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; strideOffset += nfE;</div>
1749
+ <div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj &lt; nfE; ++tpj)</div>
1750
+ <div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; {</div>
1751
+ <div class="line"><a name="l01377"></a><span class="lineno"> 1377</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>
1752
+ <div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
1753
+ <div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; }</div>
1754
+ <div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; </div>
1755
+ <div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; }</div>
1756
+ <div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; <span class="keywordflow">else</span></div>
1757
+ <div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; {</div>
1758
+ <div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; <span class="comment">// Simple type</span></div>
1759
+ <div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; numFields += 1;</div>
1760
+ <div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; strideOffset += 1;</div>
1761
+ <div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
1762
+ <div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
1763
+ <div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; }</div>
1764
+ <div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; }</div>
1767
1765
  <div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; </div>
1768
- <div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1769
- <div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;}</div>
1766
+ <div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp;</div>
1767
+ <div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div>
1768
+ <div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
1769
+ <div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; </div>
1770
+ <div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1771
+ <div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;}</div>
1770
1772
  </div><!-- fragment -->
1771
1773
  </div>
1772
1774
  </div>
@@ -1796,37 +1798,37 @@ Friends</h2></td></tr>
1796
1798
 
1797
1799
  <p>Collect a type info. </p>
1798
1800
 
1799
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01198">1198</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1800
- <div class="fragment"><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;{</div>
1801
- <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
1802
- <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">if</span> (tit != <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div>
1803
- <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; {</div>
1804
- <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <span class="keywordflow">return</span> tit-&gt;second;</div>
1805
- <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; }</div>
1806
- <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="comment">// No such StInfo for T, create it now.</span></div>
1807
- <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
1808
- <div class="line"><a name="l01207"></a><span class="lineno"> 1207</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>
1809
- <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; {</div>
1810
- <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
1811
- <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; }</div>
1812
- <div class="line"><a name="l01211"></a><span class="lineno"> 1211</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>
1801
+ <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>
1802
+ <div class="fragment"><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;{</div>
1803
+ <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
1804
+ <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">if</span> (tit != <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div>
1805
+ <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; {</div>
1806
+ <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">return</span> tit-&gt;second;</div>
1807
+ <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; }</div>
1808
+ <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; <span class="comment">// No such StInfo for T, create it now.</span></div>
1809
+ <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
1810
+ <div class="line"><a name="l01211"></a><span class="lineno"> 1211</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>
1813
1811
  <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; {</div>
1814
- <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div>
1815
- <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
1816
- <div class="line"><a name="l01215"></a><span class="lineno"> 1215</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>
1817
- <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; {</div>
1818
- <div class="line"><a name="l01217"></a><span class="lineno"> 1217</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>
1819
- <div class="line"><a name="l01218"></a><span class="lineno"> 1218</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>
1820
- <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; }</div>
1821
- <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; }</div>
1822
- <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keywordflow">else</span></div>
1823
- <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; {</div>
1824
- <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
1812
+ <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
1813
+ <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; }</div>
1814
+ <div class="line"><a name="l01215"></a><span class="lineno"> 1215</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>
1815
+ <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; {</div>
1816
+ <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div>
1817
+ <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
1818
+ <div class="line"><a name="l01219"></a><span class="lineno"> 1219</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>
1819
+ <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; {</div>
1820
+ <div class="line"><a name="l01221"></a><span class="lineno"> 1221</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>
1821
+ <div class="line"><a name="l01222"></a><span class="lineno"> 1222</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>
1822
+ <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; }</div>
1825
1823
  <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; }</div>
1826
- <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
1827
- <div class="line"><a name="l01226"></a><span class="lineno"> 1226</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>
1828
- <div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1829
- <div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;}</div>
1824
+ <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">else</span></div>
1825
+ <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; {</div>
1826
+ <div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
1827
+ <div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; }</div>
1828
+ <div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
1829
+ <div class="line"><a name="l01230"></a><span class="lineno"> 1230</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>
1830
+ <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1831
+ <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;}</div>
1830
1832
  </div><!-- fragment -->
1831
1833
  </div>
1832
1834
  </div>
@@ -1863,63 +1865,65 @@ Friends</h2></td></tr>
1863
1865
  <div class="fragment"><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;{</div>
1864
1866
  <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(IntegerType::getInt8Ty(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>()));</div>
1865
1867
  <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">// Functions need to be retrieved in the order of insertion</span></div>
1866
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; std::vector&lt;const Function*&gt; candidateDefs, candidateDecls;</div>
1867
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</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>
1868
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div>
1869
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; std::vector&lt;Function*&gt; removedFuncList;</div>
1870
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; func : mod.functions())</div>
1871
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div>
1872
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#aa259d688db36387c824ebfa741d4692d">isUsedExtFunction</a>(&amp;func))</div>
1873
- <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div>
1874
- <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; removedFuncList.push_back(&amp;func);</div>
1875
- <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div>
1876
- <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (func.isDeclaration())</div>
1877
- <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div>
1878
- <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; candidateDecls.push_back(&amp;func);</div>
1879
- <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
1880
- <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">else</span></div>
1881
- <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div>
1882
- <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; candidateDefs.push_back(&amp;func);</div>
1883
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
1884
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
1885
- <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a74ed17168bf5946cfb3f17495ec6db99">LLVMUtil::removeUnusedFuncsAndAnnotations</a>(removedFuncList);</div>
1886
- <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div>
1887
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func: candidateDefs)</div>
1888
- <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div>
1889
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">createSVFFunction</a>(func);</div>
1890
- <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div>
1891
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func: candidateDecls)</div>
1892
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div>
1893
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">createSVFFunction</a>(func);</div>
1894
- <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div>
1895
- <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; </div>
1896
- <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
1897
- <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div>
1898
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</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>
1899
- <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div>
1900
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfglobal = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
1901
- <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; global.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(global.getType()));</div>
1902
- <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a0bc5a63d8c10da51766007cf40b095e5">addGlobalSet</a>(svfglobal);</div>
1903
- <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&amp;global, svfglobal);</div>
1904
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div>
1905
- <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; </div>
1906
- <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">GlobalAlias</a>&amp; alias : mod.aliases())</div>
1907
- <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; {</div>
1908
- <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfalias = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
1909
- <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; alias.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(alias.getType()));</div>
1910
- <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa6627399cf4d30d576f76f681d83449d">addAliasSet</a>(svfalias);</div>
1911
- <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&amp;alias, svfalias);</div>
1912
- <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div>
1913
- <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
1914
- <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aacffd97ab4cb45aeae2e67ec479889aa">GlobalIFunc</a>&amp; ifunc : mod.ifuncs())</div>
1915
- <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
1916
- <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfifunc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
1917
- <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; ifunc.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ifunc.getType()));</div>
1918
- <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa6627399cf4d30d576f76f681d83449d">addAliasSet</a>(svfifunc);</div>
1919
- <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&amp;ifunc, svfifunc);</div>
1920
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div>
1921
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div>
1922
- <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;}</div>
1868
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// candidateDefs is the vector for all used defined functions</span></div>
1869
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// candidateDecls is the vector for all used declared functions</span></div>
1870
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; std::vector&lt;const Function*&gt; candidateDefs, candidateDecls;</div>
1871
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</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>
1872
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div>
1873
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; std::vector&lt;Function*&gt; removedFuncList;</div>
1874
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; func : mod.functions())</div>
1875
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div>
1876
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#abbca1044dc59299224598ec2ba17fe7e">isCalledExtFunction</a>(&amp;func))</div>
1877
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div>
1878
+ <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; removedFuncList.push_back(&amp;func);</div>
1879
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
1880
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (func.isDeclaration())</div>
1881
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div>
1882
+ <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; candidateDecls.push_back(&amp;func);</div>
1883
+ <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
1884
+ <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">else</span></div>
1885
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div>
1886
+ <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; candidateDefs.push_back(&amp;func);</div>
1887
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
1888
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div>
1889
+ <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a74ed17168bf5946cfb3f17495ec6db99">LLVMUtil::removeUnusedFuncsAndAnnotations</a>(removedFuncList);</div>
1890
+ <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div>
1891
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func: candidateDefs)</div>
1892
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div>
1893
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">createSVFFunction</a>(func);</div>
1894
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div>
1895
+ <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func: candidateDecls)</div>
1896
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div>
1897
+ <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">createSVFFunction</a>(func);</div>
1898
+ <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div>
1899
+ <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; </div>
1900
+ <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
1901
+ <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div>
1902
+ <div class="line"><a name="l00194"></a><span class="lineno"> 194</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>
1903
+ <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div>
1904
+ <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfglobal = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
1905
+ <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; global.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(global.getType()));</div>
1906
+ <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a0bc5a63d8c10da51766007cf40b095e5">addGlobalSet</a>(svfglobal);</div>
1907
+ <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&amp;global, svfglobal);</div>
1908
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div>
1909
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
1910
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">GlobalAlias</a>&amp; alias : mod.aliases())</div>
1911
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; {</div>
1912
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfalias = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
1913
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; alias.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(alias.getType()));</div>
1914
+ <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa6627399cf4d30d576f76f681d83449d">addAliasSet</a>(svfalias);</div>
1915
+ <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&amp;alias, svfalias);</div>
1916
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div>
1917
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; </div>
1918
+ <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aacffd97ab4cb45aeae2e67ec479889aa">GlobalIFunc</a>&amp; ifunc : mod.ifuncs())</div>
1919
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div>
1920
+ <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfifunc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
1921
+ <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; ifunc.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ifunc.getType()));</div>
1922
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa6627399cf4d30d576f76f681d83449d">addAliasSet</a>(svfifunc);</div>
1923
+ <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&amp;ifunc, svfifunc);</div>
1924
+ <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div>
1925
+ <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div>
1926
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;}</div>
1923
1927
  </div><!-- fragment -->
1924
1928
  </div>
1925
1929
  </div>
@@ -1947,70 +1951,70 @@ Friends</h2></td></tr>
1947
1951
  </table>
1948
1952
  </div><div class="memdoc">
1949
1953
 
1950
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00220">220</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1951
- <div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div>
1952
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFunc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>(</div>
1953
- <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func-&gt;getType()),</div>
1954
- <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; SVFUtil::cast&lt;SVFFunctionType&gt;(</div>
1955
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func-&gt;getFunctionType())),</div>
1956
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; func-&gt;isDeclaration(), <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">LLVMUtil::isIntrinsicFun</a>(func),</div>
1957
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; func-&gt;hasAddressTaken(), func-&gt;isVarArg(), <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>, <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">LLVMUtil::getFunAnnotations</a>(func));</div>
1958
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(func-&gt;getName().str());</div>
1959
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a8a0fe93cc13b799fc28540fb312573c6">addFunctionSet</a>(svfFunc);</div>
1960
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab671d5bb9ca5761e2b438a4d4da229cf">addFunctionMap</a>(func, svfFunc);</div>
1961
- <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; </div>
1962
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>&amp; arg : func-&gt;args())</div>
1963
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div>
1964
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* svfarg = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>(</div>
1965
- <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(arg.getType()), svfFunc, arg.getArgNo(),</div>
1966
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">LLVMUtil::isArgOfUncalledFunction</a>(&amp;arg));</div>
1967
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// Setting up arg name</span></div>
1968
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (arg.hasName())</div>
1969
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; svfarg-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(arg.getName().str());</div>
1970
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">else</span></div>
1971
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; svfarg-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(std::to_string(arg.getArgNo()));</div>
1972
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
1973
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">addArgument</a>(svfarg);</div>
1974
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5595ec3f7582934dc499770825bf5373">addArgumentMap</a>(&amp;arg, svfarg);</div>
1975
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
1976
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; </div>
1977
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb : *func)</div>
1978
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; {</div>
1979
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB =</div>
1980
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(bb.getType()), svfFunc);</div>
1981
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (bb.hasName())</div>
1982
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; svfBB-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(bb.getName().str());</div>
1983
- <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">addBasicBlock</a>(svfBB);</div>
1984
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">addBasicBlockMap</a>(&amp;bb, svfBB);</div>
1985
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&amp; inst : bb)</div>
1986
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; {</div>
1987
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <span class="keyword">nullptr</span>;</div>
1988
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</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;(&amp;inst))</div>
1989
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div>
1990
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">LLVMUtil::isVirtualCallSite</a>(call))</div>
1991
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>(</div>
1992
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call-&gt;getType()), svfBB,</div>
1993
- <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; call-&gt;getFunctionType()-&gt;isVarArg(),</div>
1994
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; inst.isTerminator());</div>
1995
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">else</span></div>
1996
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>(</div>
1997
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call-&gt;getType()), svfBB,</div>
1998
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; call-&gt;getFunctionType()-&gt;isVarArg(),</div>
1999
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; inst.isTerminator());</div>
2000
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div>
2001
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">else</span></div>
2002
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div>
2003
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; svfInst =</div>
2004
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(inst.getType()),</div>
2005
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; svfBB, inst.isTerminator(),</div>
2006
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; SVFUtil::isa&lt;ReturnInst&gt;(inst));</div>
2007
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div>
2008
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; </div>
2009
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; svfBB-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">addInstruction</a>(svfInst);</div>
2010
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">addInstructionMap</a>(&amp;inst, svfInst);</div>
2011
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div>
2012
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div>
2013
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</div>
1954
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00222">222</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1955
+ <div class="fragment"><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;{</div>
1956
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFunc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>(</div>
1957
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func-&gt;getType()),</div>
1958
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; SVFUtil::cast&lt;SVFFunctionType&gt;(</div>
1959
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func-&gt;getFunctionType())),</div>
1960
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; func-&gt;isDeclaration(), <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">LLVMUtil::isIntrinsicFun</a>(func),</div>
1961
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; func-&gt;hasAddressTaken(), func-&gt;isVarArg(), <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>, <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">LLVMUtil::getFunAnnotations</a>(func));</div>
1962
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(func-&gt;getName().str());</div>
1963
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a8a0fe93cc13b799fc28540fb312573c6">addFunctionSet</a>(svfFunc);</div>
1964
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab671d5bb9ca5761e2b438a4d4da229cf">addFunctionMap</a>(func, svfFunc);</div>
1965
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; </div>
1966
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>&amp; arg : func-&gt;args())</div>
1967
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div>
1968
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* svfarg = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>(</div>
1969
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(arg.getType()), svfFunc, arg.getArgNo(),</div>
1970
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">LLVMUtil::isArgOfUncalledFunction</a>(&amp;arg));</div>
1971
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// Setting up arg name</span></div>
1972
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (arg.hasName())</div>
1973
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; svfarg-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(arg.getName().str());</div>
1974
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">else</span></div>
1975
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; svfarg-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(std::to_string(arg.getArgNo()));</div>
1976
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
1977
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">addArgument</a>(svfarg);</div>
1978
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5595ec3f7582934dc499770825bf5373">addArgumentMap</a>(&amp;arg, svfarg);</div>
1979
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
1980
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
1981
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb : *func)</div>
1982
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div>
1983
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB =</div>
1984
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(bb.getType()), svfFunc);</div>
1985
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (bb.hasName())</div>
1986
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; svfBB-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(bb.getName().str());</div>
1987
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">addBasicBlock</a>(svfBB);</div>
1988
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">addBasicBlockMap</a>(&amp;bb, svfBB);</div>
1989
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&amp; inst : bb)</div>
1990
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div>
1991
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <span class="keyword">nullptr</span>;</div>
1992
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</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;(&amp;inst))</div>
1993
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div>
1994
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">LLVMUtil::isVirtualCallSite</a>(call))</div>
1995
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>(</div>
1996
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call-&gt;getType()), svfBB,</div>
1997
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; call-&gt;getFunctionType()-&gt;isVarArg(),</div>
1998
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; inst.isTerminator());</div>
1999
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">else</span></div>
2000
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>(</div>
2001
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call-&gt;getType()), svfBB,</div>
2002
+ <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; call-&gt;getFunctionType()-&gt;isVarArg(),</div>
2003
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; inst.isTerminator());</div>
2004
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div>
2005
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">else</span></div>
2006
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div>
2007
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; svfInst =</div>
2008
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(inst.getType()),</div>
2009
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; svfBB, inst.isTerminator(),</div>
2010
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; SVFUtil::isa&lt;ReturnInst&gt;(inst));</div>
2011
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div>
2012
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; </div>
2013
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; svfBB-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">addInstruction</a>(svfInst);</div>
2014
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">addInstructionMap</a>(&amp;inst, svfInst);</div>
2015
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div>
2016
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div>
2017
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;}</div>
2014
2018
  </div><!-- fragment -->
2015
2019
  </div>
2016
2020
  </div>
@@ -2030,30 +2034,30 @@ Friends</h2></td></tr>
2030
2034
  </table>
2031
2035
  </div><div class="memdoc">
2032
2036
 
2033
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01008">1008</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2034
- <div class="fragment"><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;{</div>
2035
- <div class="line"><a name="l01010"></a><span class="lineno"> 1010</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>
2036
- <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; {</div>
2037
- <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName = mod.getName().str();</div>
2038
- <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> OutputFilename;</div>
2039
- <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; std::size_t pos = moduleName.rfind(<span class="charliteral">&#39;.&#39;</span>);</div>
2040
- <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="keywordflow">if</span> (pos != std::string::npos)</div>
2041
- <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; OutputFilename = moduleName.substr(0, pos) + suffix;</div>
2042
- <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">else</span></div>
2043
- <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; OutputFilename = moduleName + suffix;</div>
2044
- <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; </div>
2045
- <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; std::error_code EC;</div>
2046
- <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> OS(OutputFilename.c_str(), EC, llvm::sys::fs::OF_None);</div>
2047
- <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; </div>
2048
- <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 7)</span></div>
2049
- <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; WriteBitcodeToFile(mod, OS);</div>
2050
- <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;<span class="preprocessor">#else</span></div>
2051
- <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; WriteBitcodeToFile(&amp;mod, OS);</div>
2052
- <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;<span class="preprocessor">#endif</span></div>
2053
- <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; </div>
2054
- <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; OS.flush();</div>
2055
- <div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; }</div>
2056
- <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;}</div>
2037
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01012">1012</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2038
+ <div class="fragment"><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;{</div>
2039
+ <div class="line"><a name="l01014"></a><span class="lineno"> 1014</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>
2040
+ <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; {</div>
2041
+ <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName = mod.getName().str();</div>
2042
+ <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> OutputFilename;</div>
2043
+ <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; std::size_t pos = moduleName.rfind(<span class="charliteral">&#39;.&#39;</span>);</div>
2044
+ <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordflow">if</span> (pos != std::string::npos)</div>
2045
+ <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; OutputFilename = moduleName.substr(0, pos) + suffix;</div>
2046
+ <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keywordflow">else</span></div>
2047
+ <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; OutputFilename = moduleName + suffix;</div>
2048
+ <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; </div>
2049
+ <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; std::error_code EC;</div>
2050
+ <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> OS(OutputFilename.c_str(), EC, llvm::sys::fs::OF_None);</div>
2051
+ <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; </div>
2052
+ <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 7)</span></div>
2053
+ <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; WriteBitcodeToFile(mod, OS);</div>
2054
+ <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="preprocessor">#else</span></div>
2055
+ <div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; WriteBitcodeToFile(&amp;mod, OS);</div>
2056
+ <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;<span class="preprocessor">#endif</span></div>
2057
+ <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; </div>
2058
+ <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; OS.flush();</div>
2059
+ <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; }</div>
2060
+ <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;}</div>
2057
2061
  </div><!-- fragment -->
2058
2062
  </div>
2059
2063
  </div>
@@ -2080,10 +2084,10 @@ Friends</h2></td></tr>
2080
2084
  </table>
2081
2085
  </div><div class="memdoc">
2082
2086
 
2083
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00338">338</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2084
- <div class="fragment"><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; {</div>
2085
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() == 0;</div>
2086
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
2087
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00350">350</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2088
+ <div class="fragment"><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div>
2089
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() == 0;</div>
2090
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div>
2087
2091
  </div><!-- fragment -->
2088
2092
  </div>
2089
2093
  </div>
@@ -2110,11 +2114,11 @@ Friends</h2></td></tr>
2110
2114
  </table>
2111
2115
  </div><div class="memdoc">
2112
2116
 
2113
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00332">332</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2114
- <div class="fragment"><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div>
2115
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; assert(!<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>() &amp;&amp; <span class="stringliteral">&quot;empty LLVM module!!&quot;</span>);</div>
2116
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>()-&gt;getContext();</div>
2117
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div>
2117
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00344">344</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2118
+ <div class="fragment"><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; {</div>
2119
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; assert(!<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>() &amp;&amp; <span class="stringliteral">&quot;empty LLVM module!!&quot;</span>);</div>
2120
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>()-&gt;getContext();</div>
2121
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
2118
2122
  </div><!-- fragment -->
2119
2123
  </div>
2120
2124
  </div>
@@ -2142,16 +2146,16 @@ Friends</h2></td></tr>
2142
2146
  </table>
2143
2147
  </div><div class="memdoc">
2144
2148
 
2145
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00301">301</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2146
- <div class="fragment"><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div>
2147
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* funDef = fun;</div>
2148
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">if</span>(fun-&gt;isDeclaration() &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div>
2149
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; funDef = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">getDefinition</a>(fun);</div>
2150
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; </div>
2151
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; FunDefToDeclsMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.find(funDef);</div>
2152
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; assert(it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;does not have a function definition (body)?&quot;</span>);</div>
2153
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2154
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div>
2149
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00313">313</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2150
+ <div class="fragment"><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div>
2151
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* funDef = fun;</div>
2152
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span>(fun-&gt;isDeclaration() &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div>
2153
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; funDef = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">getDefinition</a>(fun);</div>
2154
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; </div>
2155
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; FunDefToDeclsMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.find(funDef);</div>
2156
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; assert(it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;does not have a function definition (body)?&quot;</span>);</div>
2157
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2158
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div>
2155
2159
  </div><!-- fragment -->
2156
2160
  </div>
2157
2161
  </div>
@@ -2179,13 +2183,13 @@ Friends</h2></td></tr>
2179
2183
  </table>
2180
2184
  </div><div class="memdoc">
2181
2185
 
2182
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00280">280</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2183
- <div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div>
2184
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; assert(fun-&gt;isDeclaration() &amp;&amp; <span class="stringliteral">&quot;not a function declaration?&quot;</span>);</div>
2185
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; FunDeclToDefMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.find(fun);</div>
2186
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; assert(it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;has no definition?&quot;</span>);</div>
2187
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2188
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div>
2186
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00292">292</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2187
+ <div class="fragment"><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div>
2188
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; assert(fun-&gt;isDeclaration() &amp;&amp; <span class="stringliteral">&quot;not a function declaration?&quot;</span>);</div>
2189
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; FunDeclToDefMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.find(fun);</div>
2190
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; assert(it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;has no definition?&quot;</span>);</div>
2191
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2192
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div>
2189
2193
  </div><!-- fragment -->
2190
2194
  </div>
2191
2195
  </div>
@@ -2213,12 +2217,12 @@ Friends</h2></td></tr>
2213
2217
  </table>
2214
2218
  </div><div class="memdoc">
2215
2219
 
2216
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00319">319</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2217
- <div class="fragment"><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div>
2218
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; GlobalDefToRepMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.find(val);</div>
2219
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; assert(it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;has no rep?&quot;</span>);</div>
2220
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2221
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; }</div>
2220
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00331">331</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2221
+ <div class="fragment"><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div>
2222
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; GlobalDefToRepMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.find(val);</div>
2223
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; assert(it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;has no rep?&quot;</span>);</div>
2224
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2225
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div>
2222
2226
  </div><!-- fragment -->
2223
2227
  </div>
2224
2228
  </div>
@@ -2246,94 +2250,94 @@ Friends</h2></td></tr>
2246
2250
  </table>
2247
2251
  </div><div class="memdoc">
2248
2252
 
2249
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00549">549</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2250
- <div class="fragment"><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;{</div>
2251
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="comment">// This function is used to extract constructor and destructor functions</span></div>
2252
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div>
2253
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div>
2254
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div>
2255
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2256
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div>
2257
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="comment">//</span></div>
2258
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div>
2259
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div>
2260
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div>
2261
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div>
2262
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2263
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div>
2264
- <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div>
2265
- <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="comment">// function will only run if the associated data from the current module is</span></div>
2266
- <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">// not discarded. However the associated data is currently ignored.</span></div>
2267
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; </div>
2268
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; </div>
2269
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div>
2270
- <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="comment">// their priority. Each object of this class stands for an item in the</span></div>
2271
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="comment">// function array.</span></div>
2272
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keyword">class </span>LLVMGlobalFunction</div>
2273
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; {</div>
2274
- <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keyword">public</span>:</div>
2275
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> priority;</div>
2276
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div>
2277
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; LLVMGlobalFunction() {};</div>
2278
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</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>
2279
- <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; : priority(_priority), func(_func) {};</div>
2280
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</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>
2281
- <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="keyword"> </span>{</div>
2282
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (priority != other.priority)</div>
2283
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div>
2284
- <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">return</span> priority &gt; other.priority;</div>
2285
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div>
2286
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">else</span></div>
2287
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div>
2288
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">return</span> func &gt; other.func;</div>
2289
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; }</div>
2290
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</div>
2291
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; };</div>
2292
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; </div>
2293
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; std::priority_queue&lt;LLVMGlobalFunction, std::vector&lt;LLVMGlobalFunction&gt;,</div>
2294
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; greater&lt;LLVMGlobalFunction&gt;&gt;</div>
2295
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; queue;</div>
2296
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; std::vector&lt;const Function* &gt; result;</div>
2297
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; </div>
2298
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div>
2299
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div>
2300
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="comment">// First get the array here.</span></div>
2301
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *globalFuncArray =</div>
2302
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; SVFUtil::dyn_cast&lt;ConstantArray&gt;(global-&gt;getInitializer()))</div>
2303
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {</div>
2304
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="comment">// Get each struct in the array.</span></div>
2305
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</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>
2306
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div>
2307
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">if</span> (</div>
2308
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div>
2309
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; SVFUtil::dyn_cast&lt;ConstantStruct&gt;(</div>
2310
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; globalFuncArray-&gt;getOperand(i)))</div>
2311
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; {</div>
2312
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; </div>
2313
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="comment">// Extract priority and function from the struct</span></div>
2314
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = SVFUtil::dyn_cast&lt;ConstantInt&gt;(</div>
2315
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; globalFuncItem-&gt;getOperand(0));</div>
2316
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(</div>
2317
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; globalFuncItem-&gt;getOperand(1));</div>
2318
- <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; </div>
2319
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">if</span> (priority &amp;&amp; func)</div>
2320
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; {</div>
2321
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; queue.push(LLVMGlobalFunction(priority</div>
2322
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; -&gt;getZExtValue(),</div>
2323
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; func));</div>
2324
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div>
2325
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; }</div>
2326
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div>
2327
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div>
2328
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; </div>
2329
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div>
2330
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">while</span> (!queue.empty())</div>
2331
- <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; {</div>
2332
- <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; result.push_back(queue.top().func);</div>
2333
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; queue.pop();</div>
2334
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; }</div>
2335
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">return</span> result;</div>
2336
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;}</div>
2253
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00551">551</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2254
+ <div class="fragment"><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;{</div>
2255
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="comment">// This function is used to extract constructor and destructor functions</span></div>
2256
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div>
2257
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div>
2258
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div>
2259
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2260
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div>
2261
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">//</span></div>
2262
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div>
2263
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div>
2264
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div>
2265
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div>
2266
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2267
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div>
2268
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div>
2269
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="comment">// function will only run if the associated data from the current module is</span></div>
2270
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="comment">// not discarded. However the associated data is currently ignored.</span></div>
2271
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; </div>
2272
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; </div>
2273
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div>
2274
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="comment">// their priority. Each object of this class stands for an item in the</span></div>
2275
+ <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="comment">// function array.</span></div>
2276
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keyword">class </span>LLVMGlobalFunction</div>
2277
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div>
2278
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keyword">public</span>:</div>
2279
+ <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> priority;</div>
2280
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div>
2281
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; LLVMGlobalFunction() {};</div>
2282
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</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>
2283
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; : priority(_priority), func(_func) {};</div>
2284
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</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>
2285
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="keyword"> </span>{</div>
2286
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">if</span> (priority != other.priority)</div>
2287
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {</div>
2288
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">return</span> priority &gt; other.priority;</div>
2289
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div>
2290
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">else</span></div>
2291
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; {</div>
2292
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">return</span> func &gt; other.func;</div>
2293
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div>
2294
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div>
2295
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; };</div>
2296
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; </div>
2297
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; std::priority_queue&lt;LLVMGlobalFunction, std::vector&lt;LLVMGlobalFunction&gt;,</div>
2298
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; greater&lt;LLVMGlobalFunction&gt;&gt;</div>
2299
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; queue;</div>
2300
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; std::vector&lt;const Function* &gt; result;</div>
2301
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; </div>
2302
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div>
2303
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div>
2304
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="comment">// First get the array here.</span></div>
2305
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *globalFuncArray =</div>
2306
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; SVFUtil::dyn_cast&lt;ConstantArray&gt;(global-&gt;getInitializer()))</div>
2307
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div>
2308
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="comment">// Get each struct in the array.</span></div>
2309
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</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>
2310
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; {</div>
2311
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">if</span> (</div>
2312
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div>
2313
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; SVFUtil::dyn_cast&lt;ConstantStruct&gt;(</div>
2314
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; globalFuncArray-&gt;getOperand(i)))</div>
2315
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; {</div>
2316
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; </div>
2317
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="comment">// Extract priority and function from the struct</span></div>
2318
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = SVFUtil::dyn_cast&lt;ConstantInt&gt;(</div>
2319
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; globalFuncItem-&gt;getOperand(0));</div>
2320
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(</div>
2321
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; globalFuncItem-&gt;getOperand(1));</div>
2322
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; </div>
2323
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span> (priority &amp;&amp; func)</div>
2324
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; {</div>
2325
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; queue.push(LLVMGlobalFunction(priority</div>
2326
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; -&gt;getZExtValue(),</div>
2327
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; func));</div>
2328
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div>
2329
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div>
2330
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div>
2331
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }</div>
2332
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; </div>
2333
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div>
2334
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">while</span> (!queue.empty())</div>
2335
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; {</div>
2336
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; result.push_back(queue.top().func);</div>
2337
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; queue.pop();</div>
2338
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div>
2339
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">return</span> result;</div>
2340
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;}</div>
2337
2341
  </div><!-- fragment -->
2338
2342
  </div>
2339
2343
  </div>
@@ -2417,16 +2421,16 @@ Friends</h2></td></tr>
2417
2421
 
2418
2422
  <p>Get LLVM Type. </p>
2419
2423
 
2420
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01164">1164</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2421
- <div class="fragment"><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;{</div>
2422
- <div class="line"><a name="l01166"></a><span class="lineno"> 1166</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>
2423
- <div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; {</div>
2424
- <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">if</span> (it-&gt;second == T)</div>
2425
- <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">return</span> it-&gt;first;</div>
2426
- <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; }</div>
2427
- <div class="line"><a name="l01171"></a><span class="lineno"> 1171</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>
2428
- <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; abort();</div>
2429
- <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;}</div>
2424
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01168">1168</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2425
+ <div class="fragment"><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;{</div>
2426
+ <div class="line"><a name="l01170"></a><span class="lineno"> 1170</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>
2427
+ <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; {</div>
2428
+ <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">if</span> (it-&gt;second == T)</div>
2429
+ <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">return</span> it-&gt;first;</div>
2430
+ <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; }</div>
2431
+ <div class="line"><a name="l01175"></a><span class="lineno"> 1175</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>
2432
+ <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; abort();</div>
2433
+ <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;}</div>
2430
2434
  </div><!-- fragment -->
2431
2435
  </div>
2432
2436
  </div>
@@ -2486,10 +2490,10 @@ Friends</h2></td></tr>
2486
2490
  </table>
2487
2491
  </div><div class="memdoc">
2488
2492
 
2489
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00327">327</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2490
- <div class="fragment"><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div>
2491
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">getModule</a>(0);</div>
2492
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div>
2493
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00339">339</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2494
+ <div class="fragment"><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div>
2495
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">getModule</a>(0);</div>
2496
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div>
2493
2497
  </div><!-- fragment -->
2494
2498
  </div>
2495
2499
  </div>
@@ -2602,21 +2606,21 @@ Friends</h2></td></tr>
2602
2606
  </table>
2603
2607
  </div><div class="memdoc">
2604
2608
 
2605
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01106">1106</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2606
- <div class="fragment"><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;{</div>
2607
- <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
2608
- <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2609
- <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; {</div>
2610
- <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2611
- <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; }</div>
2612
- <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">else</span></div>
2609
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01110">1110</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2610
+ <div class="fragment"><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;{</div>
2611
+ <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
2612
+ <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2613
2613
  <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; {</div>
2614
- <div class="line"><a name="l01115"></a><span class="lineno"> 1115</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>
2615
- <div class="line"><a name="l01116"></a><span class="lineno"> 1116</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>
2616
- <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
2617
- <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keywordflow">return</span> svfoc;</div>
2618
- <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; }</div>
2619
- <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;}</div>
2614
+ <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2615
+ <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</div>
2616
+ <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <span class="keywordflow">else</span></div>
2617
+ <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; {</div>
2618
+ <div class="line"><a name="l01119"></a><span class="lineno"> 1119</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>
2619
+ <div class="line"><a name="l01120"></a><span class="lineno"> 1120</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>
2620
+ <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
2621
+ <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keywordflow">return</span> svfoc;</div>
2622
+ <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; }</div>
2623
+ <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;}</div>
2620
2624
  </div><!-- fragment -->
2621
2625
  </div>
2622
2626
  </div>
@@ -2703,49 +2707,49 @@ Friends</h2></td></tr>
2703
2707
  </div><div class="memdoc">
2704
2708
  <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>
2705
2709
 
2706
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01059">1059</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2707
- <div class="fragment"><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;{</div>
2708
- <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div>
2709
- <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2710
- <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; {</div>
2711
- <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; assert(SVFUtil::isa&lt;SVFConstantData&gt;(it-&gt;second) &amp;&amp; <span class="stringliteral">&quot;not a SVFConstantData type!&quot;</span>);</div>
2712
- <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;SVFConstantData&gt;(it-&gt;second);</div>
2713
- <div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; }</div>
2714
- <div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <span class="keywordflow">else</span></div>
2715
- <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; {</div>
2716
- <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div>
2717
- <div class="line"><a name="l01070"></a><span class="lineno"> 1070</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>
2718
- <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; {</div>
2719
- <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">if</span>(cint-&gt;getBitWidth() == 1)</div>
2720
- <div class="line"><a name="l01076"></a><span class="lineno"> 1076</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>
2721
- <div class="line"><a name="l01077"></a><span class="lineno"> 1077</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>
2722
- <div class="line"><a name="l01078"></a><span class="lineno"> 1078</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>
2723
- <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">else</span></div>
2724
- <div class="line"><a name="l01080"></a><span class="lineno"> 1080</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>
2725
- <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; }</div>
2726
- <div class="line"><a name="l01082"></a><span class="lineno"> 1082</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>
2727
- <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; {</div>
2728
- <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordtype">double</span> dval = 0;</div>
2729
- <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="comment">// TODO: Why only double is considered? What about float?</span></div>
2730
- <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">if</span>(cfp-&gt;isNormalFP() &amp;&amp; (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEdouble()))</div>
2731
- <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; dval = cfp-&gt;getValueAPF().convertToDouble();</div>
2732
- <div class="line"><a name="l01088"></a><span class="lineno"> 1088</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>
2733
- <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; }</div>
2734
- <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantPointerNull&gt;(cd))</div>
2735
- <div class="line"><a name="l01091"></a><span class="lineno"> 1091</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>
2736
- <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UndefValue&gt;(cd))</div>
2737
- <div class="line"><a name="l01093"></a><span class="lineno"> 1093</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>
2738
- <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">else</span></div>
2739
- <div class="line"><a name="l01095"></a><span class="lineno"> 1095</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>
2740
- <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; </div>
2741
- <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">if</span> (cd-&gt;hasName())</div>
2742
- <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; svfcd-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(cd-&gt;getName().str());</div>
2743
- <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; </div>
2744
- <div class="line"><a name="l01100"></a><span class="lineno"> 1100</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>
2745
- <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
2746
- <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">return</span> svfcd;</div>
2747
- <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; }</div>
2748
- <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;}</div>
2710
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01063">1063</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2711
+ <div class="fragment"><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;{</div>
2712
+ <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div>
2713
+ <div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2714
+ <div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; {</div>
2715
+ <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; assert(SVFUtil::isa&lt;SVFConstantData&gt;(it-&gt;second) &amp;&amp; <span class="stringliteral">&quot;not a SVFConstantData type!&quot;</span>);</div>
2716
+ <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;SVFConstantData&gt;(it-&gt;second);</div>
2717
+ <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; }</div>
2718
+ <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keywordflow">else</span></div>
2719
+ <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; {</div>
2720
+ <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div>
2721
+ <div class="line"><a name="l01074"></a><span class="lineno"> 1074</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>
2722
+ <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; {</div>
2723
+ <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">if</span>(cint-&gt;getBitWidth() == 1)</div>
2724
+ <div class="line"><a name="l01080"></a><span class="lineno"> 1080</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>
2725
+ <div class="line"><a name="l01081"></a><span class="lineno"> 1081</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>
2726
+ <div class="line"><a name="l01082"></a><span class="lineno"> 1082</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>
2727
+ <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keywordflow">else</span></div>
2728
+ <div class="line"><a name="l01084"></a><span class="lineno"> 1084</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>
2729
+ <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; }</div>
2730
+ <div class="line"><a name="l01086"></a><span class="lineno"> 1086</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>
2731
+ <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; {</div>
2732
+ <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keywordtype">double</span> dval = 0;</div>
2733
+ <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="comment">// TODO: Why only double is considered? What about float?</span></div>
2734
+ <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="keywordflow">if</span>(cfp-&gt;isNormalFP() &amp;&amp; (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEdouble()))</div>
2735
+ <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; dval = cfp-&gt;getValueAPF().convertToDouble();</div>
2736
+ <div class="line"><a name="l01092"></a><span class="lineno"> 1092</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>
2737
+ <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; }</div>
2738
+ <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantPointerNull&gt;(cd))</div>
2739
+ <div class="line"><a name="l01095"></a><span class="lineno"> 1095</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>
2740
+ <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UndefValue&gt;(cd))</div>
2741
+ <div class="line"><a name="l01097"></a><span class="lineno"> 1097</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>
2742
+ <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="keywordflow">else</span></div>
2743
+ <div class="line"><a name="l01099"></a><span class="lineno"> 1099</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>
2744
+ <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; </div>
2745
+ <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (cd-&gt;hasName())</div>
2746
+ <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; svfcd-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(cd-&gt;getName().str());</div>
2747
+ <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; </div>
2748
+ <div class="line"><a name="l01104"></a><span class="lineno"> 1104</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>
2749
+ <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
2750
+ <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordflow">return</span> svfcd;</div>
2751
+ <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; }</div>
2752
+ <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;}</div>
2749
2753
  </div><!-- fragment -->
2750
2754
  </div>
2751
2755
  </div>
@@ -2808,21 +2812,21 @@ Friends</h2></td></tr>
2808
2812
 
2809
2813
  <p>Get the corresponding Function based on its name. </p>
2810
2814
 
2811
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00257">257</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2812
- <div class="fragment"><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div>
2813
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">nullptr</span>;</div>
2814
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; </div>
2815
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>(); ++i)</div>
2816
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div>
2817
- <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">getModule</a>(i);</div>
2818
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; fun = mod-&gt;getFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
2819
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> (fun)</div>
2820
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div>
2821
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
2822
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div>
2823
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div>
2824
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2825
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div>
2815
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00269">269</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
2816
+ <div class="fragment"><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div>
2817
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">nullptr</span>;</div>
2818
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; </div>
2819
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>(); ++i)</div>
2820
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div>
2821
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">getModule</a>(i);</div>
2822
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; fun = mod-&gt;getFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
2823
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">if</span> (fun)</div>
2824
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div>
2825
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
2826
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div>
2827
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div>
2828
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2829
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div>
2826
2830
  </div><!-- fragment -->
2827
2831
  </div>
2828
2832
  </div>
@@ -2939,24 +2943,24 @@ Friends</h2></td></tr>
2939
2943
  </table>
2940
2944
  </div><div class="memdoc">
2941
2945
 
2942
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01122">1122</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2943
- <div class="fragment"><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;{</div>
2944
- <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
2945
- <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
2946
- <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; {</div>
2947
- <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2948
- <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; }</div>
2949
- <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keywordflow">else</span></div>
2946
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01126">1126</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2947
+ <div class="fragment"><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;{</div>
2948
+ <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
2949
+ <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
2950
2950
  <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; {</div>
2951
- <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
2952
- <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; SVFUtil::isa&lt;MetadataAsValue&gt;(ov)</div>
2953
- <div class="line"><a name="l01133"></a><span class="lineno"> 1133</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>
2954
- <div class="line"><a name="l01134"></a><span class="lineno"> 1134</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>
2955
- <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#a48d7f0643bb228701dcabb88ef541fca">addOtherValue</a>(svfov);</div>
2956
- <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
2957
- <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keywordflow">return</span> svfov;</div>
2958
- <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; }</div>
2959
- <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;}</div>
2951
+ <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2952
+ <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; }</div>
2953
+ <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keywordflow">else</span></div>
2954
+ <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; {</div>
2955
+ <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
2956
+ <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; SVFUtil::isa&lt;MetadataAsValue&gt;(ov)</div>
2957
+ <div class="line"><a name="l01137"></a><span class="lineno"> 1137</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>
2958
+ <div class="line"><a name="l01138"></a><span class="lineno"> 1138</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>
2959
+ <div class="line"><a name="l01139"></a><span class="lineno"> 1139</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>
2960
+ <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
2961
+ <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keywordflow">return</span> svfov;</div>
2962
+ <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; }</div>
2963
+ <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;}</div>
2960
2964
  </div><!-- fragment -->
2961
2965
  </div>
2962
2966
  </div>
@@ -2980,20 +2984,20 @@ Friends</h2></td></tr>
2980
2984
  <p>Get or create <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> and typeinfo </p>
2981
2985
  <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>
2982
2986
 
2983
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01178">1178</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2984
- <div class="fragment"><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;{</div>
2985
- <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; assert(T &amp;&amp; <span class="stringliteral">&quot;SVFType should not be null&quot;</span>);</div>
2986
- <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
2987
- <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
2988
- <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2989
- <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; </div>
2990
- <div class="line"><a name="l01185"></a><span class="lineno"> 1185</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>
2991
- <div class="line"><a name="l01186"></a><span class="lineno"> 1186</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>
2992
- <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
2993
- <div class="line"><a name="l01193"></a><span class="lineno"> 1193</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>
2994
- <div class="line"><a name="l01194"></a><span class="lineno"> 1194</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>
2995
- <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="keywordflow">return</span> svfType;</div>
2996
- <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;}</div>
2987
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01182">1182</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2988
+ <div class="fragment"><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;{</div>
2989
+ <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; assert(T &amp;&amp; <span class="stringliteral">&quot;SVFType should not be null&quot;</span>);</div>
2990
+ <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
2991
+ <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
2992
+ <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2993
+ <div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; </div>
2994
+ <div class="line"><a name="l01189"></a><span class="lineno"> 1189</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>
2995
+ <div class="line"><a name="l01190"></a><span class="lineno"> 1190</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>
2996
+ <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
2997
+ <div class="line"><a name="l01197"></a><span class="lineno"> 1197</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>
2998
+ <div class="line"><a name="l01198"></a><span class="lineno"> 1198</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>
2999
+ <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keywordflow">return</span> svfType;</div>
3000
+ <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;}</div>
2997
3001
  </div><!-- fragment -->
2998
3002
  </div>
2999
3003
  </div>
@@ -3013,28 +3017,28 @@ Friends</h2></td></tr>
3013
3017
  </table>
3014
3018
  </div><div class="memdoc">
3015
3019
 
3016
- <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>
3017
- <div class="fragment"><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;{</div>
3018
- <div class="line"><a name="l01143"></a><span class="lineno"> 1143</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>
3019
- <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
3020
- <div class="line"><a name="l01145"></a><span class="lineno"> 1145</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>
3021
- <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
3022
- <div class="line"><a name="l01147"></a><span class="lineno"> 1147</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>
3023
- <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
3024
- <div class="line"><a name="l01149"></a><span class="lineno"> 1149</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>
3025
- <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
3026
- <div class="line"><a name="l01151"></a><span class="lineno"> 1151</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>
3027
- <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; {</div>
3028
- <div class="line"><a name="l01153"></a><span class="lineno"> 1153</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>
3029
- <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
3030
- <div class="line"><a name="l01155"></a><span class="lineno"> 1155</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>
3031
- <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
3032
- <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">else</span></div>
3033
- <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
3034
- <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; }</div>
3035
- <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">else</span></div>
3036
- <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
3037
- <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;}</div>
3020
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01145">1145</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3021
+ <div class="fragment"><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;{</div>
3022
+ <div class="line"><a name="l01147"></a><span class="lineno"> 1147</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>
3023
+ <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
3024
+ <div class="line"><a name="l01149"></a><span class="lineno"> 1149</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>
3025
+ <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
3026
+ <div class="line"><a name="l01151"></a><span class="lineno"> 1151</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>
3027
+ <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
3028
+ <div class="line"><a name="l01153"></a><span class="lineno"> 1153</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>
3029
+ <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
3030
+ <div class="line"><a name="l01155"></a><span class="lineno"> 1155</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>
3031
+ <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; {</div>
3032
+ <div class="line"><a name="l01157"></a><span class="lineno"> 1157</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>
3033
+ <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
3034
+ <div class="line"><a name="l01159"></a><span class="lineno"> 1159</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>
3035
+ <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
3036
+ <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">else</span></div>
3037
+ <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
3038
+ <div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; }</div>
3039
+ <div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; <span class="keywordflow">else</span></div>
3040
+ <div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
3041
+ <div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;}</div>
3038
3042
  </div><!-- fragment -->
3039
3043
  </div>
3040
3044
  </div>
@@ -3062,18 +3066,18 @@ Friends</h2></td></tr>
3062
3066
  </table>
3063
3067
  </div><div class="memdoc">
3064
3068
 
3065
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00288">288</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
3066
- <div class="fragment"><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; {</div>
3067
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span>(fun-&gt;isDeclaration() &amp;&amp; !<a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div>
3068
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3069
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; </div>
3070
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* funDef = fun;</div>
3071
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span>(fun-&gt;isDeclaration() &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div>
3072
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; funDef = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">getDefinition</a>(fun);</div>
3073
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
3074
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; FunDefToDeclsMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.find(funDef);</div>
3075
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.end();</div>
3076
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div>
3069
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00300">300</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
3070
+ <div class="fragment"><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div>
3071
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span>(fun-&gt;isDeclaration() &amp;&amp; !<a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div>
3072
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3073
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; </div>
3074
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* funDef = fun;</div>
3075
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span>(fun-&gt;isDeclaration() &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div>
3076
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; funDef = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">getDefinition</a>(fun);</div>
3077
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
3078
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; FunDefToDeclsMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.find(funDef);</div>
3079
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">return</span> it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.end();</div>
3080
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div>
3077
3081
  </div><!-- fragment -->
3078
3082
  </div>
3079
3083
  </div>
@@ -3101,12 +3105,12 @@ Friends</h2></td></tr>
3101
3105
  </table>
3102
3106
  </div><div class="memdoc">
3103
3107
 
3104
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00273">273</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
3105
- <div class="fragment"><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div>
3106
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; assert(fun-&gt;isDeclaration() &amp;&amp; <span class="stringliteral">&quot;not a function declaration?&quot;</span>);</div>
3107
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; FunDeclToDefMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.find(fun);</div>
3108
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.end();</div>
3109
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div>
3108
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00285">285</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
3109
+ <div class="fragment"><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div>
3110
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; assert(fun-&gt;isDeclaration() &amp;&amp; <span class="stringliteral">&quot;not a function declaration?&quot;</span>);</div>
3111
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; FunDeclToDefMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.find(fun);</div>
3112
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.end();</div>
3113
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div>
3110
3114
  </div><!-- fragment -->
3111
3115
  </div>
3112
3116
  </div>
@@ -3136,11 +3140,11 @@ Friends</h2></td></tr>
3136
3140
 
3137
3141
  <p>Global to rep. </p>
3138
3142
 
3139
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00313">313</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
3140
- <div class="fragment"><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div>
3141
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; GlobalDefToRepMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.find(val);</div>
3142
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.end();</div>
3143
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div>
3143
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00325">325</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
3144
+ <div class="fragment"><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div>
3145
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; GlobalDefToRepMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.find(val);</div>
3146
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">return</span> it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.end();</div>
3147
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div>
3144
3148
  </div><!-- fragment -->
3145
3149
  </div>
3146
3150
  </div>
@@ -3178,68 +3182,68 @@ Friends</h2></td></tr>
3178
3182
  </table>
3179
3183
  </div><div class="memdoc">
3180
3184
 
3181
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00356">356</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3182
- <div class="fragment"><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;{</div>
3183
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div>
3184
- <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">return</span>;</div>
3185
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="comment">//process and stored dt &amp; df</span></div>
3186
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
3187
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div>
3188
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</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>
3189
- <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; df.analyze(dt);</div>
3190
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div>
3191
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</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>
3192
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun-&gt;getLoopAndDomInfo();</div>
3193
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; </div>
3194
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</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>
3195
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div>
3196
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div>
3197
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter-&gt;first;</div>
3198
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keyword">const</span> std::set&lt;BasicBlock* &gt;&amp; domSet = dfIter-&gt;second;</div>
3199
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</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>
3200
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div>
3201
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div>
3202
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div>
3203
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div>
3204
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div>
3205
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; std::vector&lt;const SVFBasicBlock*&gt; reachableBBs;</div>
3206
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div>
3207
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div>
3208
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; </div>
3209
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = fun-&gt;begin(), beit = fun-&gt;end(); bit!=beit; ++bit)</div>
3210
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div>
3211
- <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> &amp;bb = *bit;</div>
3212
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</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>
3213
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* dtNode = dt.getNode(&amp;bb))</div>
3214
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div>
3215
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</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>
3216
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *dtNode)</div>
3217
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; {</div>
3218
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</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>
3219
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; bbSet.insert(domSVFBB);</div>
3220
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div>
3221
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div>
3222
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; </div>
3223
- <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* pdtNode = pdt.getNode(&amp;bb))</div>
3224
- <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div>
3225
- <div class="line"><a name="l00400"></a><span class="lineno"> 400</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>
3226
- <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *pdtNode)</div>
3227
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; {</div>
3228
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</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>
3229
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; bbSet.insert(domSVFBB);</div>
3230
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div>
3231
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; }</div>
3232
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; </div>
3233
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</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>
3234
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div>
3235
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</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>
3236
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; {</div>
3237
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</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>
3238
- <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svfBB, loopbb);</div>
3239
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; }</div>
3240
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div>
3241
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div>
3242
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;}</div>
3185
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00358">358</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3186
+ <div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;{</div>
3187
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div>
3188
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span>;</div>
3189
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="comment">//process and stored dt &amp; df</span></div>
3190
+ <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
3191
+ <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div>
3192
+ <div class="line"><a name="l00365"></a><span class="lineno"> 365</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>
3193
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; df.analyze(dt);</div>
3194
+ <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div>
3195
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</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>
3196
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun-&gt;getLoopAndDomInfo();</div>
3197
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; </div>
3198
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</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>
3199
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div>
3200
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; {</div>
3201
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter-&gt;first;</div>
3202
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keyword">const</span> std::set&lt;BasicBlock* &gt;&amp; domSet = dfIter-&gt;second;</div>
3203
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</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>
3204
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div>
3205
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; {</div>
3206
+ <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div>
3207
+ <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div>
3208
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div>
3209
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; std::vector&lt;const SVFBasicBlock*&gt; reachableBBs;</div>
3210
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div>
3211
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div>
3212
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; </div>
3213
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = fun-&gt;begin(), beit = fun-&gt;end(); bit!=beit; ++bit)</div>
3214
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div>
3215
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &amp;bb = *bit;</div>
3216
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</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>
3217
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* dtNode = dt.getNode(&amp;bb))</div>
3218
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; {</div>
3219
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</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>
3220
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *dtNode)</div>
3221
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div>
3222
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</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>
3223
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; bbSet.insert(domSVFBB);</div>
3224
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div>
3225
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div>
3226
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; </div>
3227
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* pdtNode = pdt.getNode(&amp;bb))</div>
3228
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; {</div>
3229
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</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>
3230
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *pdtNode)</div>
3231
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div>
3232
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</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>
3233
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; bbSet.insert(domSVFBB);</div>
3234
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
3235
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div>
3236
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; </div>
3237
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</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>
3238
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; {</div>
3239
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</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>
3240
+ <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div>
3241
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</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>
3242
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svfBB, loopbb);</div>
3243
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div>
3244
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; }</div>
3245
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; }</div>
3246
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;}</div>
3243
3247
  </div><!-- fragment -->
3244
3248
  </div>
3245
3249
  </div>
@@ -3267,57 +3271,57 @@ Friends</h2></td></tr>
3267
3271
  </table>
3268
3272
  </div><div class="memdoc">
3269
3273
 
3270
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00303">303</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3271
- <div class="fragment"><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;{</div>
3272
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = func-&gt;begin(), ebit = func-&gt;end(); bit != ebit; ++bit)</div>
3273
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div>
3274
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &amp;*bit;</div>
3275
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</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>
3276
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</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>
3277
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div>
3278
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</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>
3279
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">addSuccBasicBlock</a>(svf_scc_bb);</div>
3280
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div>
3281
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</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>
3282
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div>
3283
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</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>
3284
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">addPredBasicBlock</a>(svf_pred_bb);</div>
3285
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div>
3286
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb-&gt;begin(), eiit = bb-&gt;end(); iit != eiit; ++iit)</div>
3287
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div>
3288
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*iit;</div>
3289
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</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>
3290
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div>
3291
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</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>
3292
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* svfcall = SVFUtil::cast&lt;SVFCallInst&gt;(svfinst);</div>
3293
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keyword">auto</span> called_llvmval = call-&gt;getCalledOperand()-&gt;stripPointerCasts();</div>
3294
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</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>
3295
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div>
3296
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</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>
3297
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</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>
3298
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(callee);</div>
3299
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
3300
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">else</span></div>
3301
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div>
3302
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</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>
3303
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div>
3304
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</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>
3305
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div>
3306
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</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>
3307
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; virtualCall-&gt;setFunIdxInVtable(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">LLVMUtil::getVCallIdx</a>(call));</div>
3308
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; virtualCall-&gt;setFunNameOfVirtualCall(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">LLVMUtil::getFunNameOfVCallSite</a>(call));</div>
3309
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div>
3310
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</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>
3311
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div>
3312
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</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>
3313
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div>
3314
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div>
3315
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
3316
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</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>
3317
- <div class="line"><a name="l00350"></a><span class="lineno"> 350</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>
3318
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
3319
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div>
3320
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;}</div>
3274
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00305">305</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3275
+ <div class="fragment"><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;{</div>
3276
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = func-&gt;begin(), ebit = func-&gt;end(); bit != ebit; ++bit)</div>
3277
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div>
3278
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &amp;*bit;</div>
3279
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</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>
3280
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</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>
3281
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div>
3282
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</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>
3283
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">addSuccBasicBlock</a>(svf_scc_bb);</div>
3284
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div>
3285
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</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>
3286
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div>
3287
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</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>
3288
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">addPredBasicBlock</a>(svf_pred_bb);</div>
3289
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div>
3290
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb-&gt;begin(), eiit = bb-&gt;end(); iit != eiit; ++iit)</div>
3291
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div>
3292
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*iit;</div>
3293
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</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>
3294
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; {</div>
3295
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</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>
3296
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* svfcall = SVFUtil::cast&lt;SVFCallInst&gt;(svfinst);</div>
3297
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keyword">auto</span> called_llvmval = call-&gt;getCalledOperand()-&gt;stripPointerCasts();</div>
3298
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</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>
3299
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div>
3300
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</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>
3301
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</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>
3302
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(callee);</div>
3303
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div>
3304
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">else</span></div>
3305
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; {</div>
3306
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</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>
3307
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div>
3308
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</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>
3309
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div>
3310
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</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>
3311
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; virtualCall-&gt;setFunIdxInVtable(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">LLVMUtil::getVCallIdx</a>(call));</div>
3312
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; virtualCall-&gt;setFunNameOfVirtualCall(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">LLVMUtil::getFunNameOfVCallSite</a>(call));</div>
3313
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div>
3314
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</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>
3315
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; {</div>
3316
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</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>
3317
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div>
3318
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div>
3319
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div>
3320
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</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>
3321
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</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>
3322
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div>
3323
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div>
3324
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;}</div>
3321
3325
  </div><!-- fragment -->
3322
3326
  </div>
3323
3327
  </div>
@@ -3345,27 +3349,27 @@ Friends</h2></td></tr>
3345
3349
  </div><div class="memdoc">
3346
3350
  <p>Function</p>
3347
3351
 
3348
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00285">285</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3349
- <div class="fragment"><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;{</div>
3350
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</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>
3351
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div>
3352
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; f : mod.functions())</div>
3353
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div>
3354
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(&amp;f);</div>
3355
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">initSVFBasicBlock</a>(&amp;f);</div>
3356
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; </div>
3357
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun))</div>
3358
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div>
3359
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">initDomTree</a>(svffun, &amp;f);</div>
3360
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div>
3361
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div>
3362
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div>
3363
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;}</div>
3352
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00287">287</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3353
+ <div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;{</div>
3354
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</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>
3355
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div>
3356
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; f : mod.functions())</div>
3357
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div>
3358
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(&amp;f);</div>
3359
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">initSVFBasicBlock</a>(&amp;f);</div>
3360
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
3361
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun))</div>
3362
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div>
3363
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">initDomTree</a>(svffun, &amp;f);</div>
3364
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div>
3365
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div>
3366
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; }</div>
3367
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;}</div>
3364
3368
  </div><!-- fragment -->
3365
3369
  </div>
3366
3370
  </div>
3367
- <a id="aa259d688db36387c824ebfa741d4692d"></a>
3368
- <h2 class="memtitle"><span class="permalink"><a href="#aa259d688db36387c824ebfa741d4692d">&#9670;&nbsp;</a></span>isUsedExtFunction()</h2>
3371
+ <a id="abbca1044dc59299224598ec2ba17fe7e"></a>
3372
+ <h2 class="memtitle"><span class="permalink"><a href="#abbca1044dc59299224598ec2ba17fe7e">&#9670;&nbsp;</a></span>isCalledExtFunction()</h2>
3369
3373
 
3370
3374
  <div class="memitem">
3371
3375
  <div class="memproto">
@@ -3374,7 +3378,7 @@ Friends</h2></td></tr>
3374
3378
  <td class="mlabels-left">
3375
3379
  <table class="memname">
3376
3380
  <tr>
3377
- <td class="memname">bool SVF::LLVMModuleSet::isUsedExtFunction </td>
3381
+ <td class="memname">bool SVF::LLVMModuleSet::isCalledExtFunction </td>
3378
3382
  <td>(</td>
3379
3383
  <td class="paramtype"><a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *&#160;</td>
3380
3384
  <td class="paramname"><em>func</em></td><td>)</td>
@@ -3389,22 +3393,34 @@ Friends</h2></td></tr>
3389
3393
  </div><div class="memdoc">
3390
3394
 
3391
3395
  <p>Remove unused function in extapi.bc module. </p>
3396
+ <p>check if a llvm Function is called.</p>
3392
3397
  <p>if this function func defined in extapi.bc but never used in application code (without any corresponding declared functions).</p>
3393
3398
 
3394
3399
  <p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00240">240</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
3395
3400
  <div class="fragment"><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div>
3396
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span> (func-&gt;getParent()-&gt;getName().str() == <a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>()</div>
3397
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; &amp;&amp; func-&gt;getName().str() != <span class="stringliteral">&quot;svf__main&quot;</span></div>
3398
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; &amp;&amp; func-&gt;getName().str() != <span class="stringliteral">&quot;malloc&quot;</span></div>
3399
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; &amp;&amp; func-&gt;getName().str() != <span class="stringliteral">&quot;main&quot;</span></div>
3400
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; &amp;&amp; func-&gt;getName().substr(0,4) != <span class="stringliteral">&quot;sse_&quot;</span></div>
3401
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.find(func) == <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.end()</div>
3402
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; &amp;&amp; std::find(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.begin(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), func) == <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end())</div>
3403
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div>
3404
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3405
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div>
3406
- <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3407
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div>
3401
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keyword">auto</span> isCalledFunction = [](<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">llvm::Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
3402
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div>
3403
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;uses())</div>
3404
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div>
3405
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
3406
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
3407
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (llvm::isa&lt;llvm::CallBase&gt;(user))</div>
3408
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div>
3409
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3410
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div>
3411
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div>
3412
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3413
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; };</div>
3414
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span> (func-&gt;getParent()-&gt;getName().str() == <a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>()</div>
3415
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; &amp;&amp; !isCalledFunction(func)</div>
3416
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; &amp;&amp; func-&gt;getName().str() != <span class="stringliteral">&quot;svf__main&quot;</span></div>
3417
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.find(func) == <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.end()</div>
3418
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; &amp;&amp; std::find(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.begin(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), func) == <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end())</div>
3419
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div>
3420
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3421
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div>
3422
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3423
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div>
3408
3424
  </div><!-- fragment -->
3409
3425
  </div>
3410
3426
  </div>
@@ -3431,31 +3447,31 @@ Friends</h2></td></tr>
3431
3447
  </table>
3432
3448
  </div><div class="memdoc">
3433
3449
 
3434
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00523">523</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3435
- <div class="fragment"><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;{</div>
3436
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="comment">// has external bc</span></div>
3437
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>().size() &gt; 0)</div>
3438
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div>
3439
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> extModuleName = <a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>();</div>
3440
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(extModuleName))</div>
3441
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {</div>
3442
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</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>
3443
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; abort();</div>
3444
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; }</div>
3445
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3446
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(extModuleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
3447
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3448
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div>
3449
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</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>
3450
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3451
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; abort();</div>
3452
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div>
3453
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</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>
3454
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</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>
3455
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</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>
3456
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</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>
3457
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
3458
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;}</div>
3450
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00525">525</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3451
+ <div class="fragment"><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;{</div>
3452
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="comment">// has external bc</span></div>
3453
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>().size() &gt; 0)</div>
3454
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; {</div>
3455
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> extModuleName = <a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>();</div>
3456
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(extModuleName))</div>
3457
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div>
3458
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</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>
3459
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; abort();</div>
3460
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div>
3461
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3462
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(extModuleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
3463
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3464
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {</div>
3465
+ <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;load external module: &quot;</span> &lt;&lt; extModuleName &lt;&lt; <span class="stringliteral">&quot;failed!!\n\n&quot;</span>;</div>
3466
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3467
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; abort();</div>
3468
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div>
3469
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</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>
3470
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</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>
3471
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</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>
3472
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</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>
3473
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; }</div>
3474
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;}</div>
3459
3475
  </div><!-- fragment -->
3460
3476
  </div>
3461
3477
  </div>
@@ -3483,60 +3499,60 @@ Friends</h2></td></tr>
3483
3499
  </table>
3484
3500
  </div><div class="memdoc">
3485
3501
 
3486
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00468">468</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3487
- <div class="fragment"><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;{</div>
3488
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; </div>
3489
- <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="comment">// We read SVFIR from LLVM IR</span></div>
3490
- <div class="line"><a name="l00472"></a><span class="lineno"> 472</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>
3491
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; {</div>
3492
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span>(moduleNameVec.empty())</div>
3493
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div>
3494
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</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>
3495
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; exit(0);</div>
3496
- <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div>
3497
- <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="comment">//assert(!moduleNameVec.empty() &amp;&amp; &quot;no LLVM bc file is found!&quot;);</span></div>
3498
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; }</div>
3499
- <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div>
3500
- <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">else</span></div>
3501
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</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>
3502
- <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; </div>
3503
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="comment">//</span></div>
3504
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="comment">// To avoid the following type bugs (t1 != t3) when parsing multiple modules,</span></div>
3505
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="comment">// We should use only one LLVMContext object for multiple modules in the same thread.</span></div>
3506
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="comment">// No such problem if only one module is processed by SVF.</span></div>
3507
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3508
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="comment">// LLVMContext ctxa,ctxb;</span></div>
3509
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="comment">// IntegerType * t1 = IntegerType::get(ctxa,32);</span></div>
3510
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="comment">// IntegerType * t2 = IntegerType::get(ctxa,32);</span></div>
3511
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="comment">// assert(t1 == t2);</span></div>
3512
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="comment">// IntegerType * t3 = IntegerType::get(ctxb,32);</span></div>
3513
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="comment">// IntegerType * t4 = IntegerType::get(ctxb,32);</span></div>
3514
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="comment">// assert(t3 == t4);</span></div>
3515
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="comment">// assert(t1 != t3);</span></div>
3516
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3517
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">//</span></div>
3518
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = std::make_unique&lt;LLVMContext&gt;();</div>
3519
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; </div>
3520
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</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>
3521
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div>
3522
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div>
3523
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div>
3524
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</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>
3525
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; abort();</div>
3526
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div>
3527
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; </div>
3528
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3529
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(moduleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
3530
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3531
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; {</div>
3532
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</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>
3533
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3534
- <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; abort();</div>
3535
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; }</div>
3536
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
3537
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</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>
3538
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div>
3539
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;}</div>
3502
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00470">470</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3503
+ <div class="fragment"><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;{</div>
3504
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; </div>
3505
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="comment">// We read SVFIR from LLVM IR</span></div>
3506
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</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>
3507
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div>
3508
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">if</span>(moduleNameVec.empty())</div>
3509
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; {</div>
3510
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</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>
3511
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; exit(0);</div>
3512
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; }</div>
3513
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="comment">//assert(!moduleNameVec.empty() &amp;&amp; &quot;no LLVM bc file is found!&quot;);</span></div>
3514
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div>
3515
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div>
3516
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">else</span></div>
3517
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</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>
3518
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; </div>
3519
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="comment">//</span></div>
3520
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="comment">// To avoid the following type bugs (t1 != t3) when parsing multiple modules,</span></div>
3521
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="comment">// We should use only one LLVMContext object for multiple modules in the same thread.</span></div>
3522
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="comment">// No such problem if only one module is processed by SVF.</span></div>
3523
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3524
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="comment">// LLVMContext ctxa,ctxb;</span></div>
3525
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="comment">// IntegerType * t1 = IntegerType::get(ctxa,32);</span></div>
3526
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="comment">// IntegerType * t2 = IntegerType::get(ctxa,32);</span></div>
3527
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="comment">// assert(t1 == t2);</span></div>
3528
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="comment">// IntegerType * t3 = IntegerType::get(ctxb,32);</span></div>
3529
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="comment">// IntegerType * t4 = IntegerType::get(ctxb,32);</span></div>
3530
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">// assert(t3 == t4);</span></div>
3531
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// assert(t1 != t3);</span></div>
3532
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3533
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">//</span></div>
3534
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = std::make_unique&lt;LLVMContext&gt;();</div>
3535
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; </div>
3536
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</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>
3537
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div>
3538
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div>
3539
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div>
3540
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</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>
3541
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; abort();</div>
3542
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div>
3543
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; </div>
3544
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3545
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(moduleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
3546
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3547
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; {</div>
3548
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</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>
3549
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3550
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; abort();</div>
3551
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div>
3552
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
3553
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</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>
3554
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div>
3555
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;}</div>
3540
3556
  </div><!-- fragment -->
3541
3557
  </div>
3542
3558
  </div>
@@ -3568,27 +3584,27 @@ Friends</h2></td></tr>
3568
3584
  <p><a class="el" href="classSVF_1_1BreakConstantGEPs.html">BreakConstantGEPs</a> Pass</p>
3569
3585
  <p><a class="el" href="classSVF_1_1MergeFunctionRets.html">MergeFunctionRets</a> Pass</p>
3570
3586
 
3571
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00423">423</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3572
- <div class="fragment"><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;{</div>
3573
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; std::unique_ptr&lt;BreakConstantGEPs&gt; p1 = std::make_unique&lt;BreakConstantGEPs&gt;();</div>
3574
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</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>
3575
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; {</div>
3576
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; p1-&gt;runOnModule(M);</div>
3577
- <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div>
3578
- <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; </div>
3579
- <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; std::unique_ptr&lt;UnifyFunctionExitNodes&gt; p2 =</div>
3580
- <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; std::make_unique&lt;UnifyFunctionExitNodes&gt;();</div>
3581
- <div class="line"><a name="l00435"></a><span class="lineno"> 435</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>
3582
- <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; {</div>
3583
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</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>
3584
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div>
3585
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &amp;fun = *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>;</div>
3586
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
3587
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">continue</span>;</div>
3588
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; p2-&gt;runOnFunction(fun);</div>
3589
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div>
3590
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div>
3591
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;}</div>
3587
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00425">425</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3588
+ <div class="fragment"><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;{</div>
3589
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; std::unique_ptr&lt;BreakConstantGEPs&gt; p1 = std::make_unique&lt;BreakConstantGEPs&gt;();</div>
3590
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</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>
3591
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div>
3592
+ <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; p1-&gt;runOnModule(M);</div>
3593
+ <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div>
3594
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; </div>
3595
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; std::unique_ptr&lt;UnifyFunctionExitNodes&gt; p2 =</div>
3596
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; std::make_unique&lt;UnifyFunctionExitNodes&gt;();</div>
3597
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</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>
3598
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div>
3599
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</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>
3600
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div>
3601
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &amp;fun = *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>;</div>
3602
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
3603
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">continue</span>;</div>
3604
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; p2-&gt;runOnFunction(fun);</div>
3605
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div>
3606
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div>
3607
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;}</div>
3592
3608
  </div><!-- fragment -->
3593
3609
  </div>
3594
3610
  </div>
@@ -3616,26 +3632,26 @@ Friends</h2></td></tr>
3616
3632
  </table>
3617
3633
  </div><div class="memdoc">
3618
3634
 
3619
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00447">447</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3620
- <div class="fragment"><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;{</div>
3621
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</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>
3622
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div>
3623
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">loadExtAPIModules</a>();</div>
3624
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
3625
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; </div>
3626
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> preProcessSuffix = <span class="stringliteral">&quot;.pre.bc&quot;</span>;</div>
3627
- <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="comment">// Get the existing module names, remove old extension, add preProcessSuffix</span></div>
3628
- <div class="line"><a name="l00456"></a><span class="lineno"> 456</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>
3629
- <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; {</div>
3630
- <div class="line"><a name="l00458"></a><span class="lineno"> 458</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>
3631
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> rawName = moduleNameVec[i].substr(0, lastIndex);</div>
3632
- <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; moduleNameVec[i] = (rawName + preProcessSuffix);</div>
3633
- <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div>
3634
- <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; </div>
3635
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">dumpModulesToFile</a>(preProcessSuffix);</div>
3636
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a> = <span class="keyword">true</span>;</div>
3637
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">releaseLLVMModuleSet</a>();</div>
3638
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;}</div>
3635
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00449">449</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3636
+ <div class="fragment"><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;{</div>
3637
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</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>
3638
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div>
3639
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">loadExtAPIModules</a>();</div>
3640
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
3641
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; </div>
3642
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> preProcessSuffix = <span class="stringliteral">&quot;.pre.bc&quot;</span>;</div>
3643
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="comment">// Get the existing module names, remove old extension, add preProcessSuffix</span></div>
3644
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</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>
3645
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; {</div>
3646
+ <div class="line"><a name="l00460"></a><span class="lineno"> 460</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>
3647
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> rawName = moduleNameVec[i].substr(0, lastIndex);</div>
3648
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; moduleNameVec[i] = (rawName + preProcessSuffix);</div>
3649
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div>
3650
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
3651
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">dumpModulesToFile</a>(preProcessSuffix);</div>
3652
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a> = <span class="keyword">true</span>;</div>
3653
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">releaseLLVMModuleSet</a>();</div>
3654
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;}</div>
3639
3655
  </div><!-- fragment -->
3640
3656
  </div>
3641
3657
  </div>
@@ -3704,31 +3720,31 @@ Friends</h2></td></tr>
3704
3720
  </table>
3705
3721
  </div><div class="memdoc">
3706
3722
 
3707
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01033">1033</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3708
- <div class="fragment"><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;{</div>
3709
- <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>[svfvalue] = val;</div>
3710
- <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; </div>
3711
- <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div>
3712
- <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; svfvalue-&gt;setPtrInUncalledFunction();</div>
3713
- <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
3714
- <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; svfvalue-&gt;setConstDataOrAggData();</div>
3715
- <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; </div>
3716
- <div class="line"><a name="l01042"></a><span class="lineno"> 1042</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>
3717
- <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; {</div>
3718
- <div class="line"><a name="l01044"></a><span class="lineno"> 1044</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>
3719
- <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; assert(SVFUtil::isa&lt;GlobalValue&gt;(llvmVal) &amp;&amp; <span class="stringliteral">&quot;not a GlobalValue?&quot;</span>);</div>
3720
- <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; glob-&gt;setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast&lt;GlobalValue&gt;(llvmVal)));</div>
3721
- <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; }</div>
3722
- <div class="line"><a name="l01048"></a><span class="lineno"> 1048</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>
3723
- <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; {</div>
3724
- <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast&lt;Function&gt;(val);</div>
3725
- <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; svffun-&gt;setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div>
3726
- <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; svffun-&gt;setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div>
3727
- <div class="line"><a name="l01053"></a><span class="lineno"> 1053</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>
3728
- <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; }</div>
3729
- <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; </div>
3730
- <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; svfvalue-&gt;setSourceLoc(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(val));</div>
3731
- <div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;}</div>
3723
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01037">1037</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3724
+ <div class="fragment"><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;{</div>
3725
+ <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>[svfvalue] = val;</div>
3726
+ <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; </div>
3727
+ <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div>
3728
+ <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; svfvalue-&gt;setPtrInUncalledFunction();</div>
3729
+ <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
3730
+ <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; svfvalue-&gt;setConstDataOrAggData();</div>
3731
+ <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; </div>
3732
+ <div class="line"><a name="l01046"></a><span class="lineno"> 1046</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>
3733
+ <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; {</div>
3734
+ <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* llvmVal = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val);</div>
3735
+ <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; assert(SVFUtil::isa&lt;GlobalValue&gt;(llvmVal) &amp;&amp; <span class="stringliteral">&quot;not a GlobalValue?&quot;</span>);</div>
3736
+ <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; glob-&gt;setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast&lt;GlobalValue&gt;(llvmVal)));</div>
3737
+ <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; }</div>
3738
+ <div class="line"><a name="l01052"></a><span class="lineno"> 1052</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>
3739
+ <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; {</div>
3740
+ <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast&lt;Function&gt;(val);</div>
3741
+ <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; svffun-&gt;setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div>
3742
+ <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; svffun-&gt;setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div>
3743
+ <div class="line"><a name="l01057"></a><span class="lineno"> 1057</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>
3744
+ <div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; }</div>
3745
+ <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; </div>
3746
+ <div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; svfvalue-&gt;setSourceLoc(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(val));</div>
3747
+ <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;}</div>
3732
3748
  </div><!-- fragment -->
3733
3749
  </div>
3734
3750
  </div>
@@ -4259,7 +4275,7 @@ Friends</h2></td></tr>
4259
4275
  <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>
4260
4276
  <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>
4261
4277
  <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#l00124">LLVMModule.h:124</a></div></div>
4262
- <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#l00965">LLVMModule.cpp:965</a></div></div>
4278
+ <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#l00969">LLVMModule.cpp:969</a></div></div>
4263
4279
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00592">LLVMUtil.cpp:592</a></div></div>
4264
4280
  <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>
4265
4281
  <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#l00302">SVFType.h:302</a></div></div>
@@ -4268,7 +4284,7 @@ Friends</h2></td></tr>
4268
4284
  <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>
4269
4285
  <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>
4270
4286
  <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>
4271
- <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#l01230">LLVMModule.cpp:1230</a></div></div>
4287
+ <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#l01234">LLVMModule.cpp:1234</a></div></div>
4272
4288
  <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#l00508">SVFValue.h:508</a></div></div>
4273
4289
  <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#l00129">LLVMModule.h:129</a></div></div>
4274
4290
  <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>
@@ -4278,17 +4294,17 @@ Friends</h2></td></tr>
4278
4294
  <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#l00168">LLVMModule.h:168</a></div></div>
4279
4295
  <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>
4280
4296
  <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#l00139">LLVMModule.h:139</a></div></div>
4281
- <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#l00795">LLVMModule.cpp:795</a></div></div>
4297
+ <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#l00797">LLVMModule.cpp:797</a></div></div>
4282
4298
  <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#l00679">SVFValue.h:679</a></div></div>
4283
4299
  <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>
4284
4300
  <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#l00332">SVFType.h:332</a></div></div>
4285
4301
  <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>
4286
4302
  <div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
4287
4303
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae2a1fa0b908cf372c50af90e62c4bf2b"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">SVF::LLVMModuleSet::GlobalDefToRepMap</a></div><div class="ttdeci">GlobalDefToRepMapTy GlobalDefToRepMap</div><div class="ttdoc">Global definition to a rep definition map.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00081">LLVMModule.h:81</a></div></div>
4288
- <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#l00280">LLVMModule.h:280</a></div></div>
4304
+ <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#l00292">LLVMModule.h:292</a></div></div>
4289
4305
  <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>
4290
4306
  <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>
4291
- <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#l01008">LLVMModule.cpp:1008</a></div></div>
4307
+ <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#l01012">LLVMModule.cpp:1012</a></div></div>
4292
4308
  <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#l00219">LLVMModule.h:219</a></div></div>
4293
4309
  <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#l00220">SVFValue.h:220</a></div></div>
4294
4310
  <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>
@@ -4300,17 +4316,17 @@ Friends</h2></td></tr>
4300
4316
  <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>
4301
4317
  <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#l00571">SVFType.h:571</a></div></div>
4302
4318
  <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#l00153">LLVMModule.h:153</a></div></div>
4303
- <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#l01122">LLVMModule.cpp:1122</a></div></div>
4319
+ <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#l01126">LLVMModule.cpp:1126</a></div></div>
4304
4320
  <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>
4305
4321
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller?</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00144">LLVMUtil.cpp:144</a></div></div>
4306
4322
  <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#l00899">SVFValue.h:899</a></div></div>
4307
- <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#l01178">LLVMModule.cpp:1178</a></div></div>
4323
+ <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#l01182">LLVMModule.cpp:1182</a></div></div>
4308
4324
  <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>
4309
4325
  <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#l01053">SVFValue.h:1053</a></div></div>
4310
4326
  <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>
4311
4327
  <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>
4312
4328
  <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#l00198">LLVMModule.h:198</a></div></div>
4313
- <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#l01342">LLVMModule.cpp:1342</a></div></div>
4329
+ <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#l01346">LLVMModule.cpp:1346</a></div></div>
4314
4330
  <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>
4315
4331
  <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>
4316
4332
  <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#l00134">LLVMModule.h:134</a></div></div>
@@ -4337,7 +4353,7 @@ Friends</h2></td></tr>
4337
4353
  <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#l00205">LLVMModule.h:205</a></div></div>
4338
4354
  <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>
4339
4355
  <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>
4340
- <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#l00549">LLVMModule.cpp:549</a></div></div>
4356
+ <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#l00551">LLVMModule.cpp:551</a></div></div>
4341
4357
  <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>
4342
4358
  <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>
4343
4359
  <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="ttdoc">Greater than IntervalValues.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00581">IntervalValue.h:581</a></div></div>
@@ -4345,8 +4361,7 @@ Friends</h2></td></tr>
4345
4361
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_aa6627399cf4d30d576f76f681d83449d"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa6627399cf4d30d576f76f681d83449d">SVF::SVFModule::addAliasSet</a></div><div class="ttdeci">void addAliasSet(SVFGlobalValue *alias)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00115">SVFModule.h:115</a></div></div>
4346
4362
  <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>
4347
4363
  <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>
4348
- <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#l00332">LLVMModule.h:332</a></div></div>
4349
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa259d688db36387c824ebfa741d4692d"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa259d688db36387c824ebfa741d4692d">SVF::LLVMModuleSet::isUsedExtFunction</a></div><div class="ttdeci">bool isUsedExtFunction(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#l00240">LLVMModule.h:240</a></div></div>
4364
+ <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#l00344">LLVMModule.h:344</a></div></div>
4350
4365
  <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#l00735">SVFValue.h:735</a></div></div>
4351
4366
  <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>
4352
4367
  <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00490">SVFValue.h:490</a></div></div>
@@ -4357,7 +4372,7 @@ Friends</h2></td></tr>
4357
4372
  <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#l00443">SVFType.h:443</a></div></div>
4358
4373
  <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>
4359
4374
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a42439790c217254ce5404622b197b3d0"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a42439790c217254ce5404622b197b3d0">SVF::LLVMModuleSet::LLVMInst2SVFInst</a></div><div class="ttdeci">LLVMInst2SVFInstMap LLVMInst2SVFInst</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00085">LLVMModule.h:85</a></div></div>
4360
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8820d1df9098db6eadf3a9c67e380e55"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">SVF::LLVMModuleSet::loadExtAPIModules</a></div><div class="ttdeci">void loadExtAPIModules()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00523">LLVMModule.cpp:523</a></div></div>
4375
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8820d1df9098db6eadf3a9c67e380e55"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">SVF::LLVMModuleSet::loadExtAPIModules</a></div><div class="ttdeci">void loadExtAPIModules()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00525">LLVMModule.cpp:525</a></div></div>
4361
4376
  <div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00242">SVFType.h:242</a></div></div>
4362
4377
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_a8a0fe93cc13b799fc28540fb312573c6"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a8a0fe93cc13b799fc28540fb312573c6">SVF::SVFModule::addFunctionSet</a></div><div class="ttdeci">void addFunctionSet(SVFFunction *svfFunc)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00106">SVFModule.h:106</a></div></div>
4363
4378
  <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>
@@ -4373,31 +4388,31 @@ Friends</h2></td></tr>
4373
4388
  <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#l01033">SVFValue.h:1033</a></div></div>
4374
4389
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &amp;filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00402">LLVMUtil.cpp:402</a></div></div>
4375
4390
  <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>
4376
- <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#l00327">LLVMModule.h:327</a></div></div>
4391
+ <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#l00339">LLVMModule.h:339</a></div></div>
4377
4392
  <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#l00928">SVFValue.h:928</a></div></div>
4378
4393
  <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#l00962">SVFValue.h:962</a></div></div>
4379
- <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#l00468">LLVMModule.cpp:468</a></div></div>
4380
- <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#l00273">LLVMModule.h:273</a></div></div>
4394
+ <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#l00470">LLVMModule.cpp:470</a></div></div>
4395
+ <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#l00285">LLVMModule.h:285</a></div></div>
4381
4396
  <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#l00818">SVFValue.h:818</a></div></div>
4382
4397
  <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>
4383
4398
  <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>
4384
- <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#l01399">LLVMModule.cpp:1399</a></div></div>
4399
+ <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#l01403">LLVMModule.cpp:1403</a></div></div>
4385
4400
  <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>
4386
4401
  <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>
4387
4402
  <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>
4388
4403
  <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>
4389
4404
  <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#l00403">LLVMUtil.h:403</a></div></div>
4390
- <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#l00638">LLVMModule.cpp:638</a></div></div>
4391
- <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#l00356">LLVMModule.cpp:356</a></div></div>
4405
+ <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#l00640">LLVMModule.cpp:640</a></div></div>
4406
+ <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#l00358">LLVMModule.cpp:358</a></div></div>
4392
4407
  <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>
4393
4408
  <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#l00855">LLVMUtil.cpp:855</a></div></div>
4394
4409
  <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>
4395
- <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#l00338">LLVMModule.h:338</a></div></div>
4410
+ <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#l00350">LLVMModule.h:350</a></div></div>
4396
4411
  <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>
4397
4412
  <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>
4398
4413
  <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#l00675">SVFValue.h:675</a></div></div>
4399
4414
  <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>
4400
- <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#l01279">LLVMModule.cpp:1279</a></div></div>
4415
+ <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#l01283">LLVMModule.cpp:1283</a></div></div>
4401
4416
  <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#l00152">LLVMModule.cpp:152</a></div></div>
4402
4417
  <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>
4403
4418
  <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#l00655">SVFUtil.h:655</a></div></div>
@@ -4414,16 +4429,17 @@ Friends</h2></td></tr>
4414
4429
  <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>
4415
4430
  <div class="ttc" id="aclassSVF_1_1Options_html_a53f783c80f368bcdca6c7620229d6f8e"><div class="ttname"><a href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">SVF::Options::Graphtxt</a></div><div class="ttdeci">static const Option&lt; std::string &gt; Graphtxt</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00213">Options.h:213</a></div></div>
4416
4431
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab671d5bb9ca5761e2b438a4d4da229cf"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab671d5bb9ca5761e2b438a4d4da229cf">SVF::LLVMModuleSet::addFunctionMap</a></div><div class="ttdeci">void addFunctionMap(const Function *func, SVFFunction *svfFunc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00148">LLVMModule.h:148</a></div></div>
4417
- <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#l00285">LLVMModule.cpp:285</a></div></div>
4432
+ <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#l00287">LLVMModule.cpp:287</a></div></div>
4418
4433
  <div class="ttc" id="anamespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00269">BasicTypes.h:269</a></div></div>
4419
4434
  <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>
4420
- <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#l01059">LLVMModule.cpp:1059</a></div></div>
4435
+ <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#l01063">LLVMModule.cpp:1063</a></div></div>
4421
4436
  <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>
4437
+ <div class="ttc" id="anamespaceSVF_html_afc1b50355821e7299df03b026e36f1df"><div class="ttname"><a href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">SVF::User</a></div><div class="ttdeci">llvm::User User</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00140">BasicTypes.h:140</a></div></div>
4422
4438
  <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#l00357">SVFType.h:357</a></div></div>
4423
4439
  <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>
4424
4440
  <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>
4425
4441
  <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#l00291">SVFType.h:291</a></div></div>
4426
- <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#l01106">LLVMModule.cpp:1106</a></div></div>
4442
+ <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#l01110">LLVMModule.cpp:1110</a></div></div>
4427
4443
  <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>
4428
4444
  <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#l00299">SVFValue.h:299</a></div></div>
4429
4445
  <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#l00212">LLVMModule.h:212</a></div></div>
@@ -4431,26 +4447,27 @@ Friends</h2></td></tr>
4431
4447
  <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>
4432
4448
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5badf03aeb1ebda02bc186bbb58a892a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">SVF::LLVMModuleSet::addOtherConstantMap</a></div><div class="ttdeci">void addOtherConstantMap(const Constant *cons, SVFConstant *svfcons)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00178">LLVMModule.h:178</a></div></div>
4433
4449
  <div class="ttc" id="anamespaceSVF_html_abf85e29310b2e4df8925d00a5c081314"><div class="ttname"><a href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">SVF::Loop</a></div><div class="ttdeci">llvm::Loop Loop</div><div class="ttdoc">LLVM Loop.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00138">BasicTypes.h:138</a></div></div>
4450
+ <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#l00240">LLVMModule.h:240</a></div></div>
4434
4451
  <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#l00071">LLVMUtil.cpp:71</a></div></div>
4435
4452
  <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#l00518">SVFValue.h:518</a></div></div>
4436
4453
  <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#l00105">SVFValue.h:105</a></div></div>
4437
- <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#l01033">LLVMModule.cpp:1033</a></div></div>
4454
+ <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#l01037">LLVMModule.cpp:1037</a></div></div>
4438
4455
  <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>
4439
4456
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00306">LLVMUtil.cpp:306</a></div></div>
4440
4457
  <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>
4441
4458
  <div class="ttc" id="aclassSVF_1_1StInfo_html_aae0736a5e99b11571af52e28500a6f9c"><div class="ttname"><a href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const SVFType *type, u32_t elemIdx)</div><div class="ttdoc">Add field index and element index and their corresponding type.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00008">SVFValue.cpp:8</a></div></div>
4442
- <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#l01141">LLVMModule.cpp:1141</a></div></div>
4443
- <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#l01198">LLVMModule.cpp:1198</a></div></div>
4459
+ <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#l01145">LLVMModule.cpp:1145</a></div></div>
4460
+ <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#l01202">LLVMModule.cpp:1202</a></div></div>
4444
4461
  <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>
4445
4462
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00192">LLVMUtil.cpp:192</a></div></div>
4446
- <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#l00423">LLVMModule.cpp:423</a></div></div>
4463
+ <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#l00425">LLVMModule.cpp:425</a></div></div>
4447
4464
  <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#l00859">SVFValue.h:859</a></div></div>
4448
4465
  <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>
4449
4466
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afbd60d5443c7fa1448813d00bb5d0fa7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the next instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00277">LLVMUtil.cpp:277</a></div></div>
4450
4467
  <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#l00183">LLVMModule.h:183</a></div></div>
4451
4468
  <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#l00476">SVFType.h:476</a></div></div>
4452
4469
  <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#l00543">SVFType.h:543</a></div></div>
4453
- <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#l00220">LLVMModule.cpp:220</a></div></div>
4470
+ <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#l00222">LLVMModule.cpp:222</a></div></div>
4454
4471
  <div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00593">SVFValue.h:593</a></div></div>
4455
4472
  <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>
4456
4473
  <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#l00136">SVFValue.h:136</a></div></div>
@@ -4472,7 +4489,7 @@ Friends</h2></td></tr>
4472
4489
  <div class="ttc" id="anamespaceSVF_html_aacffd97ab4cb45aeae2e67ec479889aa"><div class="ttname"><a href="namespaceSVF.html#aacffd97ab4cb45aeae2e67ec479889aa">SVF::GlobalIFunc</a></div><div class="ttdeci">llvm::GlobalIFunc GlobalIFunc</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00127">BasicTypes.h:127</a></div></div>
4473
4490
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_acaba1ff38ed1fdd8a9a1251a1b36be92"><div class="ttname"><a href="classSVF_1_1SVFModule.html#acaba1ff38ed1fdd8a9a1251a1b36be92">SVF::SVFModule::setModuleIdentifier</a></div><div class="ttdeci">void setModuleIdentifier(const std::string &amp;moduleIdentifier)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00088">SVFModule.h:88</a></div></div>
4474
4491
  <div class="ttc" id="aLLVMModule_8cpp_html_aa18802f2f60ef8030c66a42f20f285af"><div class="ttname"><a href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a></div><div class="ttdeci">#define SVF_GLOBAL_CTORS</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00068">LLVMModule.cpp:68</a></div></div>
4475
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a20162d2894d6a12ba29410311fba4002"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">SVF::LLVMModuleSet::initSVFBasicBlock</a></div><div class="ttdeci">void initSVFBasicBlock(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00303">LLVMModule.cpp:303</a></div></div>
4492
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a20162d2894d6a12ba29410311fba4002"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">SVF::LLVMModuleSet::initSVFBasicBlock</a></div><div class="ttdeci">void initSVFBasicBlock(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00305">LLVMModule.cpp:305</a></div></div>
4476
4493
  <!-- start footer part -->
4477
4494
  <hr class="footer"/><address class="footer"><small>
4478
4495
  Generated by &#160;<a href="http://www.doxygen.org/index.html">