svf-tools 1.0.404 → 1.0.407

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +4 -4
  2. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
  3. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/CHG_8h_source.html +5 -6
  5. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +3 -3
  6. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/CSC_8cpp_source.html +4 -4
  8. package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
  9. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +1 -2
  10. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +4 -4
  11. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  12. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +3 -3
  13. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +6 -6
  14. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  16. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
  17. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
  19. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +5 -5
  20. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  21. package/SVF-doxygen/html/html/ICFG_8h_source.html +3 -3
  22. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
  23. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/IRGraph_8h_source.html +16 -16
  25. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +16 -13
  26. package/SVF-doxygen/html/html/LLVMUtil_8h.html +3 -0
  27. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +20 -19
  28. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +8 -8
  29. package/SVF-doxygen/html/html/LocationSet_8h_source.html +7 -7
  30. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  31. package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +6 -6
  33. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  35. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +3 -3
  36. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +16 -16
  37. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  39. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +6 -6
  40. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
  41. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +25 -25
  42. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +5 -5
  43. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +11 -11
  44. package/SVF-doxygen/html/html/SVFIR_8h_source.html +13 -13
  45. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +2 -2
  47. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +6 -6
  48. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +11 -11
  49. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +48 -52
  51. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +16 -17
  52. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +89 -90
  53. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +118 -120
  54. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
  55. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  56. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +6 -6
  57. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
  58. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  59. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  60. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
  61. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +12 -12
  62. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  63. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +2 -2
  64. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +20 -20
  65. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +2 -2
  66. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +5 -5
  67. package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +4 -4
  68. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +24 -24
  69. package/SVF-doxygen/html/html/classSVF_1_1CSC-members.html +1 -1
  70. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +11 -11
  71. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +1 -1
  72. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +3 -3
  73. package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +1 -2
  74. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
  75. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  76. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  77. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
  78. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  79. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +2 -2
  80. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +1 -1
  81. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +15 -15
  82. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +2 -2
  83. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +15 -15
  84. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +11 -11
  86. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
  87. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +7 -7
  88. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
  89. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +4 -4
  91. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +2 -2
  92. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +17 -17
  93. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +3 -3
  94. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +23 -23
  95. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +5 -5
  96. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +52 -52
  97. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +7 -7
  98. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +85 -89
  99. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +1 -1
  101. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +8 -8
  102. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +13 -10
  103. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +190 -92
  104. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile-members.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +8 -8
  107. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +17 -17
  108. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +6 -6
  109. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +9 -9
  110. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
  111. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +36 -36
  112. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +2 -2
  113. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +60 -60
  114. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  115. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +10 -13
  118. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +40 -137
  119. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +6 -7
  120. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +99 -132
  121. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +35 -36
  122. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +184 -213
  123. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  124. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  125. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +7 -7
  126. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  127. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  128. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  129. package/SVF-doxygen/html/html/functions_a.html +6 -6
  130. package/SVF-doxygen/html/html/functions_b.html +1 -1
  131. package/SVF-doxygen/html/html/functions_e.html +3 -0
  132. package/SVF-doxygen/html/html/functions_f.html +2 -2
  133. package/SVF-doxygen/html/html/functions_func.html +6 -6
  134. package/SVF-doxygen/html/html/functions_func_f.html +1 -1
  135. package/SVF-doxygen/html/html/functions_func_g.html +18 -21
  136. package/SVF-doxygen/html/html/functions_func_i.html +1 -1
  137. package/SVF-doxygen/html/html/functions_func_s.html +5 -5
  138. package/SVF-doxygen/html/html/functions_func_v.html +1 -1
  139. package/SVF-doxygen/html/html/functions_g.html +16 -19
  140. package/SVF-doxygen/html/html/functions_i.html +5 -5
  141. package/SVF-doxygen/html/html/functions_l.html +6 -6
  142. package/SVF-doxygen/html/html/functions_m.html +1 -5
  143. package/SVF-doxygen/html/html/functions_n.html +1 -1
  144. package/SVF-doxygen/html/html/functions_o.html +9 -9
  145. package/SVF-doxygen/html/html/functions_p.html +9 -9
  146. package/SVF-doxygen/html/html/functions_r.html +1 -1
  147. package/SVF-doxygen/html/html/functions_s.html +16 -18
  148. package/SVF-doxygen/html/html/functions_t.html +7 -7
  149. package/SVF-doxygen/html/html/functions_type_n.html +1 -1
  150. package/SVF-doxygen/html/html/functions_type_s.html +1 -1
  151. package/SVF-doxygen/html/html/functions_v.html +3 -3
  152. package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
  153. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  154. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  155. package/SVF-doxygen/html/html/functions_vars_m.html +0 -4
  156. package/SVF-doxygen/html/html/functions_vars_v.html +2 -2
  157. package/SVF-doxygen/html/html/functions_w.html +9 -5
  158. package/SVF-doxygen/html/html/globals_r.html +3 -3
  159. package/SVF-doxygen/html/html/globals_s.html +5 -7
  160. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  161. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  162. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +73 -41
  163. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +2 -2
  164. package/SVF-doxygen/html/html/namespacemembers_func.html +4 -1
  165. package/SVF-doxygen/html/html/namespacemembers_g.html +3 -0
  166. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  167. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  168. package/SVF-doxygen/html/html/search/all_1.js +4 -4
  169. package/SVF-doxygen/html/html/search/all_10.js +7 -7
  170. package/SVF-doxygen/html/html/search/all_12.js +2 -2
  171. package/SVF-doxygen/html/html/search/all_13.js +12 -12
  172. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  173. package/SVF-doxygen/html/html/search/all_16.js +3 -3
  174. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  175. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  176. package/SVF-doxygen/html/html/search/all_5.js +1 -0
  177. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  178. package/SVF-doxygen/html/html/search/all_7.js +7 -7
  179. package/SVF-doxygen/html/html/search/all_9.js +3 -3
  180. package/SVF-doxygen/html/html/search/all_c.js +4 -4
  181. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  182. package/SVF-doxygen/html/html/search/all_e.js +5 -5
  183. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  184. package/SVF-doxygen/html/html/search/functions_0.js +4 -4
  185. package/SVF-doxygen/html/html/search/functions_10.js +4 -4
  186. package/SVF-doxygen/html/html/search/functions_13.js +1 -1
  187. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  188. package/SVF-doxygen/html/html/search/functions_6.js +7 -7
  189. package/SVF-doxygen/html/html/search/functions_8.js +2 -2
  190. package/SVF-doxygen/html/html/search/functions_a.js +1 -1
  191. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  192. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  193. package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
  194. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  195. package/SVF-doxygen/html/html/search/variables_16.js +2 -2
  196. package/SVF-doxygen/html/html/search/variables_2.js +1 -1
  197. package/SVF-doxygen/html/html/search/variables_5.js +1 -0
  198. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  199. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  200. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  201. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +2 -2
  202. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  203. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  204. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  205. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  206. package/include/Graphs/CHG.h +6 -6
  207. package/include/Graphs/ConsGEdge.h +1 -1
  208. package/include/Graphs/ICFG.h +1 -1
  209. package/include/Graphs/ICFGEdge.h +3 -3
  210. package/include/MemoryModel/LocationSet.h +5 -5
  211. package/include/MemoryModel/PAGBuilderFromFile.h +1 -1
  212. package/include/MemoryModel/SVFIR.h +1 -1
  213. package/include/MemoryModel/SVFStatements.h +4 -4
  214. package/include/MemoryModel/SVFVariables.h +2 -2
  215. package/include/MemoryModel/SymbolTableInfo.h +16 -15
  216. package/include/SVF-FE/LLVMUtil.h +3 -0
  217. package/include/SVF-FE/SVFIRBuilder.h +2 -2
  218. package/include/SVF-FE/SymbolTableBuilder.h +0 -2
  219. package/include/Util/IRAnnotator.h +2 -2
  220. package/include/WPA/AndersenSFR.h +1 -1
  221. package/include/WPA/CSC.h +1 -1
  222. package/lib/Graphs/ICFG.cpp +1 -1
  223. package/lib/MTA/MHP.cpp +2 -2
  224. package/lib/MemoryModel/LocationSet.cpp +3 -3
  225. package/lib/MemoryModel/PAGBuilderFromFile.cpp +2 -2
  226. package/lib/MemoryModel/SVFIR.cpp +2 -2
  227. package/lib/MemoryModel/SymbolTableInfo.cpp +7 -18
  228. package/lib/SVF-FE/CPPUtil.cpp +4 -4
  229. package/lib/SVF-FE/ICFGBuilder.cpp +1 -1
  230. package/lib/SVF-FE/LLVMUtil.cpp +22 -5
  231. package/lib/SVF-FE/SVFIRBuilder.cpp +9 -9
  232. package/lib/SVF-FE/SymbolTableBuilder.cpp +3 -22
  233. package/lib/Util/Conditions.cpp +1 -1
  234. package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
  235. package/lib/WPA/AndersenSFR.cpp +6 -6
  236. package/lib/WPA/CSC.cpp +5 -5
  237. package/lib/WPA/TypeAnalysis.cpp +3 -3
  238. package/package.json +1 -1
@@ -14,6 +14,7 @@ var searchData=
14
14
  ['elder',['elder',['../structMtrNode.html#a7c8ed9787ec60487fad7b2fede53df98',1,'MtrNode']]],
15
15
  ['elements',['elements',['../classSVF_1_1CondStdSet.html#a1caece9a66b6617b89037fd8211f2934',1,'SVF::CondStdSet']]],
16
16
  ['elemidxvec',['elemIdxVec',['../classSVF_1_1StInfo.html#a807ae5cb4d277c79f8b2c9ecde5f12ea',1,'SVF::StInfo']]],
17
+ ['elemnum',['elemNum',['../classSVF_1_1ObjTypeInfo.html#a5fdcd5f3b7550e7bdc30c8c030c6226d',1,'SVF::ObjTypeInfo']]],
17
18
  ['empty',['empty',['../cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e',1,'cuddInt.c']]],
18
19
  ['enablealiascheck',['EnableAliasCheck',['../classSVF_1_1Options.html#a4da18281b973b9ffb5068dd53060524c',1,'SVF::Options']]],
19
20
  ['enablethreadcallgraph',['EnableThreadCallGraph',['../classSVF_1_1Options.html#a153d42a480ef1763ad59fd7258ac3ac5',1,'SVF::Options']]],
@@ -15,7 +15,7 @@ var searchData=
15
15
  ['fkjntoptascevmap',['fkjnToPTASCEVMap',['../classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f',1,'SVF::ForkJoinAnalysis']]],
16
16
  ['flags',['flags',['../structMove.html#a279868fb9de35a14b9b4a066487a5e68',1,'Move::flags()'],['../structMtrNode.html#a729ce47dfa70a8e041a89d478c6565f5',1,'MtrNode::flags()'],['../classSVF_1_1CHNode.html#a6844c89f715979709dc52d4854373e72',1,'SVF::CHNode::flags()'],['../classSVF_1_1ObjTypeInfo.html#abf6bbcccf73bfcd5b950803d349c4eb1',1,'SVF::ObjTypeInfo::flags()'],['../classSVF_1_1RaceResultValidator_1_1AccessPair.html#aafb0a0cd068e1632f0d643233cad8ad9',1,'SVF::RaceResultValidator::AccessPair::flags()'],['../classSVF_1_1DCHNode.html#a0b2c21429fd28c50965737a0baa2e90b',1,'SVF::DCHNode::flags()']]],
17
17
  ['flattenelementtypes',['flattenElementTypes',['../classSVF_1_1StInfo.html#a8b24c6a35701a719cd5f1deef62421cd',1,'SVF::StInfo']]],
18
- ['fldidx',['fldIdx',['../classSVF_1_1LocationSet.html#a1937e1b9513135cb46c7f3f02fbe7d03',1,'SVF::LocationSet']]],
18
+ ['fldidx',['fldIdx',['../classSVF_1_1LocationSet.html#a5c2c1baa17a70b997824002e4c159cbd',1,'SVF::LocationSet']]],
19
19
  ['fldidx2typemap',['fldIdx2TypeMap',['../classSVF_1_1StInfo.html#a3da859dcf2a5fe7078b1257dd5f1e479',1,'SVF::StInfo']]],
20
20
  ['fldidxvec',['fldIdxVec',['../classSVF_1_1StInfo.html#a77c94c0ab75b2d5af2132ff8e082cefe',1,'SVF::StInfo']]],
21
21
  ['flowbudget',['FlowBudget',['../classSVF_1_1Options.html#a53b1a1ec4e5bbd9696ed9b680aa0c3c7',1,'SVF::Options']]],
@@ -17,7 +17,7 @@ var searchData=
17
17
  ['maxcachehard',['maxCacheHard',['../structDdManager.html#a1b53bee9cf86fc1131c420c2aef7e473',1,'DdManager']]],
18
18
  ['maxcontextlen',['MaxContextLen',['../classSVF_1_1Options.html#a2e53156bd075d7802d390672f129c6a8',1,'SVF::Options']]],
19
19
  ['maxcxtsize',['MaxCxtSize',['../classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb',1,'SVF::TCT']]],
20
- ['maxfieldlimit',['MaxFieldLimit',['../classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc',1,'SVF::Options::MaxFieldLimit()'],['../classSVF_1_1SymbolTableInfo.html#a9b8b7ecb217c7395025231b04e7b4c26',1,'SVF::SymbolTableInfo::maxFieldLimit()'],['../classSVF_1_1StInfo.html#a4cd926bd095254dd287f1cf26e02483e',1,'SVF::StInfo::maxFieldLimit()']]],
20
+ ['maxfieldlimit',['MaxFieldLimit',['../classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc',1,'SVF::Options']]],
21
21
  ['maxgrowth',['maxGrowth',['../structDdManager.html#a8a6a4238d1bc8a87eabd2c3eabd233d7',1,'DdManager']]],
22
22
  ['maxgrowthalt',['maxGrowthAlt',['../structDdManager.html#a2926e48e488cec20a61e9b0dc6b91795',1,'DdManager']]],
23
23
  ['maximumbudget',['maximumBudget',['../classSVF_1_1DPItem.html#a5dbb0e6010b38c5b937ff06cb40cd0ef',1,'SVF::DPItem']]],
@@ -71,7 +71,7 @@ var searchData=
71
71
  ['numofentrychi',['NumOfEntryChi',['../classSVF_1_1MemSSAStat.html#ad96437d0c28f8088c711a718d2f2730e',1,'SVF::MemSSAStat']]],
72
72
  ['numofentrynodes',['numOfEntryNodes',['../classSVF_1_1ICFGStat.html#ad37793e64fe58a8faba201c18d876685',1,'SVF::ICFGStat']]],
73
73
  ['numofexitnodes',['numOfExitNodes',['../classSVF_1_1ICFGStat.html#ad7e00680fb8ca31afbd166f9a4adc5ec',1,'SVF::ICFGStat']]],
74
- ['numoffieldexpand',['NumOfFieldExpand',['../classSVF_1_1PTAStat.html#a1745e5c3c026a130a70954da9c0074b1',1,'SVF::PTAStat::NumOfFieldExpand()'],['../classSVF_1_1AndersenBase.html#a9f453ec1b4236b8194ae590981217259',1,'SVF::AndersenBase::numOfFieldExpand()']]],
74
+ ['numoffieldexpand',['numOfFieldExpand',['../classSVF_1_1AndersenBase.html#a9f453ec1b4236b8194ae590981217259',1,'SVF::AndersenBase::numOfFieldExpand()'],['../classSVF_1_1PTAStat.html#a1745e5c3c026a130a70954da9c0074b1',1,'SVF::PTAStat::NumOfFieldExpand()']]],
75
75
  ['numofflattenelements',['numOfFlattenElements',['../classSVF_1_1StInfo.html#a7aa5b5018b4dec4913eb6aecf25568a4',1,'SVF::StInfo']]],
76
76
  ['numofflattenfields',['numOfFlattenFields',['../classSVF_1_1StInfo.html#aa9b4e659f4a4421aadf736a3de24ca50',1,'SVF::StInfo']]],
77
77
  ['numofformalin',['numOfFormalIn',['../classSVF_1_1SVFGStat.html#abc5e079242666bb55ec7dbc7f258b3db',1,'SVF::SVFGStat']]],
@@ -104,7 +104,7 @@ var searchData=
104
104
  ['numofmhpld',['numOfMHPLd',['../classSVF_1_1MTAAnnotator.html#a29e0123620ab072fddc45331c6aa46e8',1,'SVF::MTAAnnotator']]],
105
105
  ['numofmhpqueries',['numOfMHPQueries',['../classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106',1,'SVF::MHP']]],
106
106
  ['numofmhpst',['numOfMHPSt',['../classSVF_1_1MTAAnnotator.html#a3a53e90b4f361d1298983bc89795b3d2',1,'SVF::MTAAnnotator']]],
107
- ['numofmssaphi',['numOfMSSAPhi',['../classSVF_1_1SVFGStat.html#a9fc87025af3b7e54442e78f46ebe0360',1,'SVF::SVFGStat::numOfMSSAPhi()'],['../classSVF_1_1MemSSAStat.html#a4b598cb1d06c4c0963787036862b1c3d',1,'SVF::MemSSAStat::NumOfMSSAPhi()']]],
107
+ ['numofmssaphi',['NumOfMSSAPhi',['../classSVF_1_1MemSSAStat.html#a4b598cb1d06c4c0963787036862b1c3d',1,'SVF::MemSSAStat::NumOfMSSAPhi()'],['../classSVF_1_1SVFGStat.html#a9fc87025af3b7e54442e78f46ebe0360',1,'SVF::SVFGStat::numOfMSSAPhi()']]],
108
108
  ['numofnewsvfgedges',['numOfNewSVFGEdges',['../classSVF_1_1MTASVFGBuilder.html#a019a4597074fdad6e51d936ed4ead0d9',1,'SVF::MTASVFGBuilder']]],
109
109
  ['numofnodes',['numOfNodes',['../classSVF_1_1ICFGStat.html#a8e71a19c266aacd7acb1fee6bb339788',1,'SVF::ICFGStat::numOfNodes()'],['../classSVF_1_1SVFGStat.html#ab499c24856a990dd4adb366107eb3302',1,'SVF::SVFGStat::numOfNodes()']]],
110
110
  ['numofnodesincycles',['NumOfNodesInCycles',['../classSVF_1_1PTAStat.html#aea3e95097b3b9d326bef0d36f17e51a5',1,'SVF::PTAStat']]],
@@ -142,7 +142,7 @@ var searchData=
142
142
  ['numofretnodes',['numOfRetNodes',['../classSVF_1_1ICFGStat.html#ac9bfce40c058ed7ab178fe1f1818e9de',1,'SVF::ICFGStat']]],
143
143
  ['numofreturns',['NumOfReturns',['../classSVF_1_1PTAStat.html#a0a552611fcd20e1310290bdae404a514',1,'SVF::PTAStat']]],
144
144
  ['numofscc',['numOfSCC',['../classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3',1,'SVF::FlowSensitive']]],
145
- ['numofsccdetection',['numOfSCCDetection',['../classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968',1,'SVF::AndersenBase::numOfSCCDetection()'],['../classSVF_1_1PTAStat.html#ad1731b88c24bb79728f62cd3e9c55699',1,'SVF::PTAStat::NumOfSCCDetection()']]],
145
+ ['numofsccdetection',['NumOfSCCDetection',['../classSVF_1_1PTAStat.html#ad1731b88c24bb79728f62cd3e9c55699',1,'SVF::PTAStat::NumOfSCCDetection()'],['../classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968',1,'SVF::AndersenBase::numOfSCCDetection()']]],
146
146
  ['numofsfr',['NumOfSfr',['../classSVF_1_1PTAStat.html#a07a1db62ddba50bda787b2985ef8d135',1,'SVF::PTAStat']]],
147
147
  ['numofsfrs',['numOfSfrs',['../classSVF_1_1AndersenBase.html#a25b00d9ca71cbdd27530fc5d0dc84ee5',1,'SVF::AndersenBase']]],
148
148
  ['numofstackobjs',['NumOfStackObjs',['../classSVF_1_1PTAStat.html#ae05503909688a17dc1f282d1d029d24e',1,'SVF::PTAStat']]],
@@ -109,8 +109,8 @@ struct std::hash&lt; SVF::LocationSet &gt;</h3>
109
109
  </div><div class="memdoc">
110
110
 
111
111
  <p class="definition">Definition at line <a class="el" href="LocationSet_8h_source.html#l00139">139</a> of file <a class="el" href="LocationSet_8h_source.html">LocationSet.h</a>.</p>
112
- <div class="fragment"><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;SVF::NodeID, SVF::NodeID&gt;</a>&gt; h;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; std::hash&lt;SVF::LocationSet::OffsetValueVec&gt; v;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(ls.<a class="code" href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">accumulateConstantFieldIdx</a>(), v(ls.<a class="code" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">getOffsetValueVec</a>())));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="ttc" id="classSVF_1_1LocationSet_html_ab987c41ffdae931d941f89d03ed09146"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">SVF::LocationSet::accumulateConstantFieldIdx</a></div><div class="ttdeci">s64_t accumulateConstantFieldIdx() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00090">LocationSet.h:90</a></div></div>
113
- <div class="ttc" id="structSVF_1_1Hash_html"><div class="ttname"><a href="structSVF_1_1Hash.html">SVF::Hash</a></div><div class="ttdoc">provide extra hash function for std::pair handling </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00052">SVFBasicTypes.h:52</a></div></div>
112
+ <div class="fragment"><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;SVF::NodeID, SVF::NodeID&gt;</a>&gt; h;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; std::hash&lt;SVF::LocationSet::OffsetValueVec&gt; v;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>(), v(ls.<a class="code" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">getOffsetValueVec</a>())));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="ttc" id="structSVF_1_1Hash_html"><div class="ttname"><a href="structSVF_1_1Hash.html">SVF::Hash</a></div><div class="ttdoc">provide extra hash function for std::pair handling </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00052">SVFBasicTypes.h:52</a></div></div>
113
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a63c5c8e03b35e0d0cea94137d309c853"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">SVF::LocationSet::accumulateConstantFieldIdx</a></div><div class="ttdeci">s32_t accumulateConstantFieldIdx() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00090">LocationSet.h:90</a></div></div>
114
114
  <div class="ttc" id="classSVF_1_1LocationSet_html_a5a5ca0b81da0b34ab426bc6a28ed346c"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">SVF::LocationSet::getOffsetValueVec</a></div><div class="ttdeci">const OffsetValueVec &amp; getOffsetValueVec() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00098">LocationSet.h:98</a></div></div>
115
115
  </div><!-- fragment -->
116
116
  </div>
@@ -211,7 +211,7 @@ Functions</h2></td></tr>
211
211
  <p class="definition">Definition at line <a class="el" href="svf-ex_8cpp_source.html#l00145">145</a> of file <a class="el" href="svf-ex_8cpp_source.html">svf-ex.cpp</a>.</p>
212
212
  <div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordtype">int</span> arg_num = 0;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">SVFUtil::processArguments</a>(argc, argv, arg_num, arg_value, moduleNameVec);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; cl::ParseCommandLineOptions(arg_num, arg_value,</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="stringliteral">&quot;Whole Program Points-to Analysis\n&quot;</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (Options::WriteAnder == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">buildSymbolTableInfo</a>();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = builder.<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">build</a>(svfModule);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>* ander = AndersenWaveDiff::createAndersenWaveDiff(pag);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* callgraph = ander-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* icfg = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="classSVF_1_1VFG.html">VFG</a>* vfg = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VFG.html">VFG</a>(callgraph);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html">SVFGBuilder</a> svfBuilder(<span class="keyword">true</span>);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* svfg = svfBuilder.buildFullSVFG(ander);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// clean up memory</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keyword">delete</span> vfg;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keyword">delete</span> svfg;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; AndersenWaveDiff::releaseAndersenWaveDiff();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; SVFIR::releaseSVFIR();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;dumpModulesToFile(<span class="stringliteral">&quot;.svf.bc&quot;</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a>();</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; llvm::llvm_shutdown();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;}</div><div class="ttc" id="classSVF_1_1VFG_html"><div class="ttname"><a href="classSVF_1_1VFG.html">SVF::VFG</a></div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00050">VFG.h:50</a></div></div>
213
213
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa6d56f9580f76fd09d25ce6cf7541e98"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">SVF::SVFIRBuilder::build</a></div><div class="ttdeci">virtual SVFIR * build(SVFModule *svfModule)</div><div class="ttdoc">Start building SVFIR here. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00048">SVFIRBuilder.cpp:48</a></div></div>
214
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a62ca9a79ce7b6960e3fc42d8b183bd50"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">SVF::SVFUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00370">LLVMUtil.cpp:370</a></div></div>
214
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a62ca9a79ce7b6960e3fc42d8b183bd50"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">SVF::SVFUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00387">LLVMUtil.cpp:387</a></div></div>
215
215
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
216
216
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00178">PointerAnalysis.h:178</a></div></div>
217
217
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html">SVF::SVFIRBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00045">SVFIRBuilder.h:45</a></div></div>
@@ -83,7 +83,7 @@ $(function() {
83
83
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
84
84
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_abd9da46106d820721a24201caaa164e1"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">SVF::PointerAnalysis::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &amp;LocA, const MemoryLocation &amp;LocB)=0</div><div class="ttdoc">Interface exposed to users of our pointer analysis, given Location infos. </div></div>
85
85
  <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
86
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a62ca9a79ce7b6960e3fc42d8b183bd50"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">SVF::SVFUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00370">LLVMUtil.cpp:370</a></div></div>
86
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a62ca9a79ce7b6960e3fc42d8b183bd50"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">SVF::SVFUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00387">LLVMUtil.cpp:387</a></div></div>
87
87
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
88
88
  <div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">SVF::AliasResult</a></div><div class="ttdeci">AliasResult</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00192">SVFBasicTypes.h:192</a></div></div>
89
89
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
@@ -151,7 +151,7 @@ Functions</h2></td></tr>
151
151
  </div><div class="memdoc">
152
152
 
153
153
  <p class="definition">Definition at line <a class="el" href="wpa_8cpp_source.html#l00041">41</a> of file <a class="el" href="wpa_8cpp_source.html">wpa.cpp</a>.</p>
154
- <div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">int</span> arg_num = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">SVFUtil::processArguments</a>(argc, argv, arg_num, arg_value, moduleNameVec);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; cl::ParseCommandLineOptions(arg_num, arg_value,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="stringliteral">&quot;Whole Program Points-to Analysis\n&quot;</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (Options::WriteAnder == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">buildSymbolTableInfo</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html">WPAPass</a> *wpa = <span class="keyword">new</span> <a class="code" href="classSVF_1_1WPAPass.html">WPAPass</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; wpa-&gt;<a class="code" href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">runOnModule</a>(svfModule);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a62ca9a79ce7b6960e3fc42d8b183bd50"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">SVF::SVFUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00370">LLVMUtil.cpp:370</a></div></div>
154
+ <div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">int</span> arg_num = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">SVFUtil::processArguments</a>(argc, argv, arg_num, arg_value, moduleNameVec);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; cl::ParseCommandLineOptions(arg_num, arg_value,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="stringliteral">&quot;Whole Program Points-to Analysis\n&quot;</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (Options::WriteAnder == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">buildSymbolTableInfo</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html">WPAPass</a> *wpa = <span class="keyword">new</span> <a class="code" href="classSVF_1_1WPAPass.html">WPAPass</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; wpa-&gt;<a class="code" href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">runOnModule</a>(svfModule);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a62ca9a79ce7b6960e3fc42d8b183bd50"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">SVF::SVFUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00387">LLVMUtil.cpp:387</a></div></div>
155
155
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
156
156
  <div class="ttc" id="classSVF_1_1WPAPass_html"><div class="ttname"><a href="classSVF_1_1WPAPass.html">SVF::WPAPass</a></div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8h_source.html#l00054">WPAPass.h:54</a></div></div>
157
157
  <div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00030">SVFModule.cpp:30</a></div></div>
@@ -68,7 +68,7 @@ $(function() {
68
68
  <div class="contents">
69
69
  <a href="wpa_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- wpa.cpp -- Whole program analysis -------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===-----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> // Whole Program Pointer Analysis</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> //</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> // Author: Yulei Sui,</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-FE/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WPAPass_8h.html">WPA/WPAPass.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacellvm.html">llvm</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">static</span> llvm::cl::opt&lt;std::string&gt; <a class="code" href="wpa_8cpp.html#a2d332c504284f0bc181289ee67479845">InputFilename</a>(cl::Positional,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; llvm::cl::desc(<span class="stringliteral">&quot;&lt;input bitcode&gt;&quot;</span>), llvm::cl::init(<span class="stringliteral">&quot;-&quot;</span>));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="wpa_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627"> 41</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="wpa_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> ** argv)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">int</span> arg_num = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">SVFUtil::processArguments</a>(argc, argv, arg_num, arg_value, moduleNameVec);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; cl::ParseCommandLineOptions(arg_num, arg_value,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="stringliteral">&quot;Whole Program Points-to Analysis\n&quot;</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (Options::WriteAnder == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">buildSymbolTableInfo</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html">WPAPass</a> *wpa = <span class="keyword">new</span> <a class="code" href="classSVF_1_1WPAPass.html">WPAPass</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; wpa-&gt;<a class="code" href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">runOnModule</a>(svfModule);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div><div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00328">CHG.h:328</a></div></div>
70
70
  <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
71
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a62ca9a79ce7b6960e3fc42d8b183bd50"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">SVF::SVFUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00370">LLVMUtil.cpp:370</a></div></div>
71
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a62ca9a79ce7b6960e3fc42d8b183bd50"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a62ca9a79ce7b6960e3fc42d8b183bd50">SVF::SVFUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00387">LLVMUtil.cpp:387</a></div></div>
72
72
  <div class="ttc" id="wpa_8cpp_html_a3c04138a5bfe5d72780bb7e82a18e627"><div class="ttname"><a href="wpa_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a></div><div class="ttdeci">int main(int argc, char **argv)</div><div class="ttdef"><b>Definition:</b> <a href="wpa_8cpp_source.html#l00041">wpa.cpp:41</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1WPAPass_html"><div class="ttname"><a href="classSVF_1_1WPAPass.html">SVF::WPAPass</a></div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8h_source.html#l00054">WPAPass.h:54</a></div></div>
@@ -238,18 +238,18 @@ public:
238
238
  void view();
239
239
  void printCH();
240
240
 
241
- inline s64_t getVirtualFunctionID(const SVFFunction* vfn) const
241
+ inline u32_t getVirtualFunctionID(const SVFFunction* vfn) const
242
242
  {
243
- Map<const SVFFunction*, s64_t>::const_iterator it =
243
+ Map<const SVFFunction*, u32_t>::const_iterator it =
244
244
  virtualFunctionToIDMap.find(vfn);
245
245
  if (it != virtualFunctionToIDMap.end())
246
246
  return it->second;
247
247
  else
248
248
  return -1;
249
249
  }
250
- inline const SVFFunction* getVirtualFunctionBasedonID(s64_t id) const
250
+ inline const SVFFunction* getVirtualFunctionBasedonID(u32_t id) const
251
251
  {
252
- Map<const SVFFunction*, s64_t>::const_iterator it, eit;
252
+ Map<const SVFFunction*, u32_t>::const_iterator it, eit;
253
253
  for (it = virtualFunctionToIDMap.begin(), eit =
254
254
  virtualFunctionToIDMap.end(); it != eit; ++it)
255
255
  {
@@ -309,7 +309,7 @@ public:
309
309
  private:
310
310
  SVFModule* svfMod;
311
311
  u32_t classNum;
312
- s64_t vfID;
312
+ u32_t vfID;
313
313
  double buildingCHGTime;
314
314
  Map<std::string, CHNode *> classNameToNodeMap;
315
315
  NameToCHNodesMap classNameToDescendantsMap;
@@ -318,7 +318,7 @@ private:
318
318
  NameToCHNodesMap templateNameToInstancesMap;
319
319
  CallSiteToCHNodesMap csToClassesMap;
320
320
 
321
- Map<const SVFFunction*, s64_t> virtualFunctionToIDMap;
321
+ Map<const SVFFunction*, u32_t> virtualFunctionToIDMap;
322
322
  CallSiteToVTableSetMap csToCHAVtblsMap;
323
323
  CallSiteToVFunSetMap csToCHAVFnsMap;
324
324
  };
@@ -304,7 +304,7 @@ public:
304
304
  }
305
305
 
306
306
  /// Get location set of the gep edge
307
- inline s64_t getConstantFieldIdx() const
307
+ inline s32_t getConstantFieldIdx() const
308
308
  {
309
309
  return ls.accumulateConstantFieldIdx();
310
310
  }
@@ -128,7 +128,7 @@ protected:
128
128
  /// Add control-flow edges for top level pointers
129
129
  //@{
130
130
  ICFGEdge* addIntraEdge(ICFGNode* srcNode, ICFGNode* dstNode);
131
- ICFGEdge* addConditionalIntraEdge(ICFGNode* srcNode, ICFGNode* dstNode, const Value* condition, s64_t branchCondVal);
131
+ ICFGEdge* addConditionalIntraEdge(ICFGNode* srcNode, ICFGNode* dstNode, const Value* condition, s32_t branchCondVal);
132
132
  ICFGEdge* addCallEdge(ICFGNode* srcNode, ICFGNode* dstNode, const Instruction* cs);
133
133
  ICFGEdge* addRetEdge(ICFGNode* srcNode, ICFGNode* dstNode, const Instruction* cs);
134
134
  //@}
@@ -138,12 +138,12 @@ public:
138
138
  return conditionVar;
139
139
  }
140
140
 
141
- const s64_t getSuccessorCondValue() const{
141
+ const s32_t getSuccessorCondValue() const{
142
142
  assert(getCondition() && "this is not a conditional branch edge");
143
143
  return branchCondVal;
144
144
  }
145
145
 
146
- void setBranchCondition(const Value* c, s64_t bVal){
146
+ void setBranchCondition(const Value* c, s32_t bVal){
147
147
  conditionVar = c;
148
148
  branchCondVal = bVal;
149
149
  }
@@ -156,7 +156,7 @@ private:
156
156
  /// e.g., Inst1: br %cmp label 0, label 1, Inst2 is label 0 and Inst 3 is label 1;
157
157
  /// for edge between Inst1 and Inst 2, the first element is %cmp and second element is 0
158
158
  const Value* conditionVar;
159
- s64_t branchCondVal;
159
+ s32_t branchCondVal;
160
160
  };
161
161
 
162
162
  /*!
@@ -57,7 +57,7 @@ public:
57
57
  typedef std::vector<std::pair<const Value*, const Type*> > OffsetValueVec;
58
58
 
59
59
  /// Constructor
60
- LocationSet(s64_t o = 0) : fldIdx(o)
60
+ LocationSet(s32_t o = 0) : fldIdx(o)
61
61
  {}
62
62
 
63
63
  /// Copy Constructor
@@ -87,11 +87,11 @@ public:
87
87
 
88
88
  /// Get methods
89
89
  //@{
90
- inline s64_t accumulateConstantFieldIdx() const
90
+ inline s32_t accumulateConstantFieldIdx() const
91
91
  {
92
92
  return fldIdx;
93
93
  }
94
- inline void setFldIdx(s64_t idx)
94
+ inline void setFldIdx(s32_t idx)
95
95
  {
96
96
  fldIdx = idx;
97
97
  }
@@ -102,7 +102,7 @@ public:
102
102
  //@}
103
103
 
104
104
  /// Return accumulated constant offset given OffsetValueVec
105
- s64_t accumulateConstantOffset() const;
105
+ s32_t accumulateConstantOffset() const;
106
106
 
107
107
  /// Return element number of a type.
108
108
  u32_t getElementNum(const Type* type) const;
@@ -129,7 +129,7 @@ private:
129
129
  /// Compute all possible locations according to offset and number-stride pairs.
130
130
  NodeBS computeAllLocations() const;
131
131
 
132
- s64_t fldIdx; ///< Accumulated Constant Offsets
132
+ s32_t fldIdx; ///< Accumulated Constant Offsets
133
133
  OffsetValueVec offsetValues; ///< a vector of actual offset in the form of Values
134
134
  };
135
135
 
@@ -71,7 +71,7 @@ public:
71
71
  SVFIR* build();
72
72
 
73
73
  // Add edges
74
- void addEdge(NodeID nodeSrc, NodeID nodeDst, s64_t offset,
74
+ void addEdge(NodeID nodeSrc, NodeID nodeDst, s32_t offset,
75
75
  std::string edge);
76
76
  };
77
77
 
@@ -63,7 +63,7 @@ public:
63
63
  typedef Map<const SVFFunction*,SVFStmtSet> FunToPAGEdgeSetMap;
64
64
  typedef Map<const ICFGNode*,SVFStmtList> ICFGNode2SVFStmtsMap;
65
65
  typedef Map<NodeID, NodeID> NodeToNodeMap;
66
- typedef std::pair<NodeID, s64_t> NodeOffset;
66
+ typedef std::pair<NodeID, s32_t> NodeOffset;
67
67
  typedef std::pair<NodeID, LocationSet> NodeLocationSet;
68
68
  typedef Map<NodeOffset,NodeID> NodeOffsetMap;
69
69
  typedef Map<NodeLocationSet,NodeID> NodeLocationSetMap;
@@ -445,12 +445,12 @@ public:
445
445
  return getLocationSet().isConstantOffset();
446
446
  }
447
447
  /// Return accumulated constant offset (when accessing array or struct) if this offset is a constant.
448
- inline s64_t accumulateConstantOffset() const
448
+ inline s32_t accumulateConstantOffset() const
449
449
  {
450
450
  return getLocationSet().accumulateConstantOffset();
451
451
  }
452
452
  /// Field index of the gep statement if it access the field of a struct
453
- inline s64_t getConstantFieldIdx() const
453
+ inline s32_t getConstantFieldIdx() const
454
454
  {
455
455
  assert(isVariantFieldGep()==false && "Can't retrieve the LocationSet if using a variable field index (pointer arithmetic) for struct field access ");
456
456
  return getLocationSet().accumulateConstantFieldIdx();
@@ -921,7 +921,7 @@ public:
921
921
  class BranchStmt: public SVFStmt
922
922
  {
923
923
  public:
924
- typedef std::vector<std::pair<const ICFGNode*, s64_t> > SuccAndCondPairVec;
924
+ typedef std::vector<std::pair<const ICFGNode*, s32_t> > SuccAndCondPairVec;
925
925
  private:
926
926
  BranchStmt(); ///< place holder
927
927
  BranchStmt(const BranchStmt &); ///< place holder
@@ -987,7 +987,7 @@ public:
987
987
  const ICFGNode* getSuccessor (u32_t i) const{
988
988
  return successors.at(i).first;
989
989
  }
990
- s64_t getSuccessorCondValue (u32_t i) const{
990
+ s32_t getSuccessorCondValue (u32_t i) const{
991
991
  return successors.at(i).second;
992
992
  }
993
993
  //@}
@@ -413,7 +413,7 @@ public:
413
413
  }
414
414
 
415
415
  /// offset of the base value variable
416
- inline s64_t getConstantFieldIdx() const
416
+ inline s32_t getConstantFieldIdx() const
417
417
  {
418
418
  return ls.accumulateConstantFieldIdx();
419
419
  }
@@ -483,7 +483,7 @@ public:
483
483
  }
484
484
 
485
485
  /// offset of the mem object
486
- inline s64_t getConstantFieldIdx() const
486
+ inline s32_t getConstantFieldIdx() const
487
487
  {
488
488
  return ls.accumulateConstantFieldIdx();
489
489
  }
@@ -98,9 +98,6 @@ private:
98
98
  /// Module
99
99
  SVFModule* mod;
100
100
 
101
- /// Max field limit
102
- static u32_t maxFieldLimit;
103
-
104
101
  /// Clean up memory
105
102
  void destroy();
106
103
 
@@ -350,7 +347,7 @@ public:
350
347
  /// Number of flattenned elements of an array or struct
351
348
  u32_t getNumOfFlattenElements(const Type *T);
352
349
  /// Flatterned element idx of an array or struct by considering stride
353
- u32_t getFlattenedElemIdx(const Type *T, s64_t origId);
350
+ u32_t getFlattenedElemIdx(const Type *T, u32_t origId);
354
351
 
355
352
  /// struct A { int id; int salary; }; struct B { char name[20]; struct A a;} B b;
356
353
  /// OriginalElemType of b with field_idx 1 : Struct A
@@ -513,7 +510,6 @@ private:
513
510
  /// Type vector of fields
514
511
  std::vector<const Type*> flattenElementTypes;
515
512
  /// Max field limit
516
- static u32_t maxFieldLimit;
517
513
 
518
514
  StInfo(); ///< place holder
519
515
  StInfo(const StInfo& st); ///< place holder
@@ -529,16 +525,6 @@ public:
529
525
  {
530
526
  }
531
527
 
532
- static inline void setMaxFieldLimit(u32_t limit)
533
- {
534
- maxFieldLimit = limit;
535
- }
536
-
537
- static inline u32_t getMaxFieldLimit()
538
- {
539
- return maxFieldLimit;
540
- }
541
-
542
528
  /// struct A { int id; int salary; }; struct B { char name[20]; struct A a;} B b;
543
529
  /// OriginalFieldType of b with field_idx 1 : Struct A
544
530
  /// FlatternedFieldType of b with field_idx 1 : int
@@ -620,6 +606,8 @@ private:
620
606
  /// maximum number of field object can be created
621
607
  /// minimum number is 0 (field insensitive analysis)
622
608
  u32_t maxOffsetLimit;
609
+ /// Size of the object or number of elements
610
+ u32_t elemNum;
623
611
 
624
612
  void resetTypeForHeapStaticObj(const Type* type);
625
613
  public:
@@ -650,6 +638,19 @@ public:
650
638
  maxOffsetLimit = limit;
651
639
  }
652
640
 
641
+ /// Set the number of elements of this object
642
+ inline void setNumOfElements(u32_t num)
643
+ {
644
+ elemNum = num;
645
+ setMaxFieldOffsetLimit(num);
646
+ }
647
+
648
+ /// Get the number of elements of this object
649
+ inline u32_t getNumOfElements()
650
+ {
651
+ return elemNum;
652
+ }
653
+
653
654
  /// Flag for this object type
654
655
  //@{
655
656
  inline void setFlag(MEMTYPE mask)
@@ -517,6 +517,9 @@ const Value *stripAllCasts(const Value *val) ;
517
517
  /// Get the type of the heap allocation
518
518
  const Type *getTypeOfHeapAlloc(const llvm::Instruction *inst) ;
519
519
 
520
+ /// Return the bitcast instruction which is val's only use site, otherwise return nullptr
521
+ const Value* getUniqueUseViaCastInst(const Value* val);
522
+
520
523
  /// Return corresponding constant expression, otherwise return nullptr
521
524
  //@{
522
525
  inline const ConstantExpr *isGepConstantExpr(const Value *val)
@@ -74,7 +74,7 @@ public:
74
74
  //@{
75
75
  void initialiseNodes();
76
76
  void addEdge(NodeID src, NodeID dst, SVFStmt::PEDGEK kind,
77
- s64_t offset = 0, Instruction* cs = nullptr);
77
+ s32_t offset = 0, Instruction* cs = nullptr);
78
78
  // @}
79
79
 
80
80
  /// Sanity check for SVFIR
@@ -220,7 +220,7 @@ protected:
220
220
  void processCE(const Value *val);
221
221
 
222
222
  /// Infer field index from byteoffset.
223
- u32_t inferFieldIdxFromByteOffset(const llvm::GEPOperator* gepOp, DataLayout *dl, LocationSet& ls, s64_t idx);
223
+ u32_t inferFieldIdxFromByteOffset(const llvm::GEPOperator* gepOp, DataLayout *dl, LocationSet& ls, s32_t idx);
224
224
 
225
225
  /// Compute offset of a gep instruction or gep constant expression
226
226
  bool computeGepOffset(const User *V, LocationSet& ls);
@@ -84,8 +84,6 @@ public:
84
84
  void analyzeHeapObjType(ObjTypeInfo* typeinfo, const Value* val);
85
85
  /// Analyse types of heap and static objects
86
86
  void analyzeStaticObjType(ObjTypeInfo* typeinfo, const Value* val);
87
- /// Return the bitcast instruction which is val's only use site, otherwise return nullptr
88
- const Value* getUniqueUseViaCastInst(const Value* val);
89
87
 
90
88
  /// Return size of this object based on LLVM value
91
89
  u32_t getObjSize(const Value* val);
@@ -85,7 +85,7 @@ private:
85
85
  {
86
86
  std::string label = it->getName().str();
87
87
  std::string toErase = "gepnode-";
88
- SVF::s64_t pos = label.find(toErase);
88
+ SVF::s32_t pos = label.find(toErase);
89
89
  if (pos == std::string::npos)
90
90
  {
91
91
  continue;
@@ -96,7 +96,7 @@ private:
96
96
  auto mdNode = it->getOperand(0);
97
97
 
98
98
  SVF::NodeID baseNodeId = std::stoi(llvm::cast<llvm::MDString>(mdNode->getOperand(0))->getString().str());
99
- SVF::s64_t locationSetOffset = std::stoi(llvm::cast<llvm::MDString>(mdNode->getOperand(1))->getString().str());
99
+ SVF::s32_t locationSetOffset = std::stoi(llvm::cast<llvm::MDString>(mdNode->getOperand(1))->getString().str());
100
100
 
101
101
  LocationSet locationSet = LocationSet(locationSetOffset);
102
102
  SVF::NodeID gepnodeId = pag->getGepObjVar(baseNodeId, locationSet);
@@ -149,7 +149,7 @@ public:
149
149
  protected:
150
150
  void initialize();
151
151
  void PWCDetect();
152
- void fieldExpand(NodeSet& initials, s64_t offset, NodeBS& strides, PointsTo& expandPts);
152
+ void fieldExpand(NodeSet& initials, s32_t offset, NodeBS& strides, PointsTo& expandPts);
153
153
  bool processGepPts(PointsTo& pts, const GepCGEdge* edge);
154
154
  bool mergeSrcToTgt(NodeID nodeId, NodeID newRepId);
155
155
 
package/include/WPA/CSC.h CHANGED
@@ -69,7 +69,7 @@ public:
69
69
  : _consG(g), _scc(c), _I(0) {}
70
70
 
71
71
  void find(NodeStack& candidates);
72
- void visit(NodeID nodeId, s64_t _w);
72
+ void visit(NodeID nodeId, s32_t _w);
73
73
  void clear();
74
74
 
75
75
  bool isVisited(NodeID nId)
@@ -352,7 +352,7 @@ ICFGEdge* ICFG::addIntraEdge(ICFGNode* srcNode, ICFGNode* dstNode)
352
352
  /*!
353
353
  * Add conditional intraprocedural edges between two nodes
354
354
  */
355
- ICFGEdge* ICFG::addConditionalIntraEdge(ICFGNode* srcNode, ICFGNode* dstNode, const Value* condition, s64_t branchCondVal){
355
+ ICFGEdge* ICFG::addConditionalIntraEdge(ICFGNode* srcNode, ICFGNode* dstNode, const Value* condition, s32_t branchCondVal){
356
356
 
357
357
  checkIntraEdgeParents(srcNode, dstNode);
358
358
  if(ICFGEdge* edge = hasIntraICFGEdge(srcNode,dstNode, ICFGEdge::IntraCF))