svf-tools 1.0.619 → 1.0.621

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 (454) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
  3. package/SVF-doxygen/html/html/Andersen_8h_source.html +4 -3
  4. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +9 -4
  5. package/SVF-doxygen/html/html/CFLAlias_8h.html +4 -0
  6. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +19 -10
  7. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +5 -5
  8. package/SVF-doxygen/html/html/CFLBase_8h_source.html +1 -1
  9. package/SVF-doxygen/html/html/CFLDataBuilder_8h.html +96 -0
  10. package/SVF-doxygen/html/html/CFLDataBuilder_8h_source.html +99 -0
  11. package/SVF-doxygen/html/html/CFLData_8h.html +106 -0
  12. package/SVF-doxygen/html/html/CFLData_8h_source.html +136 -0
  13. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +2 -2
  14. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +7 -7
  15. package/SVF-doxygen/html/html/CFLSolver_8h.html +4 -0
  16. package/SVF-doxygen/html/html/CFLSolver_8h_source.html +22 -16
  17. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +4 -4
  18. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -2
  19. package/SVF-doxygen/html/html/CommandLine_8h.html +129 -0
  20. package/SVF-doxygen/html/html/CommandLine_8h_source.html +132 -0
  21. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  22. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -4
  23. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
  24. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +20 -19
  26. package/SVF-doxygen/html/html/DDAPass_8h_source.html +9 -9
  27. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  28. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +6 -6
  29. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
  31. package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +2 -1
  32. package/SVF-doxygen/html/html/GraphWriter_8h_source.html +2 -1
  33. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  35. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  36. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +2 -2
  37. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +21 -20
  38. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +17 -17
  39. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  40. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
  42. package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
  43. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -3
  44. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
  45. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
  46. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +2 -2
  48. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  49. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
  50. package/SVF-doxygen/html/html/Options_8cpp.html +1 -0
  51. package/SVF-doxygen/html/html/Options_8cpp_source.html +124 -119
  52. package/SVF-doxygen/html/html/Options_8h.html +1 -1
  53. package/SVF-doxygen/html/html/Options_8h_source.html +125 -120
  54. package/SVF-doxygen/html/html/PCG_8cpp.html +2 -1
  55. package/SVF-doxygen/html/html/PCG_8cpp_source.html +13 -12
  56. package/SVF-doxygen/html/html/PCG_8h_source.html +12 -12
  57. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +4 -4
  58. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +13 -13
  59. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  61. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +5 -5
  62. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
  63. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +2 -2
  64. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +4 -3
  65. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
  66. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +5 -4
  67. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +3 -3
  68. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +2 -2
  69. package/SVF-doxygen/html/html/SVFType_8h.html +2 -2
  70. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +2 -2
  71. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  72. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +2 -2
  73. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +5 -5
  74. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
  75. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
  76. package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
  77. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  78. package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
  79. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  80. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +10 -9
  81. package/SVF-doxygen/html/html/WPAPass_8h_source.html +4 -4
  82. package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +2 -2
  83. package/SVF-doxygen/html/html/annotated.html +363 -353
  84. package/SVF-doxygen/html/html/cfl_8cpp.html +3 -85
  85. package/SVF-doxygen/html/html/cfl_8cpp_source.html +3 -5
  86. package/SVF-doxygen/html/html/classOption-members.html +99 -0
  87. package/SVF-doxygen/html/html/classOption.html +567 -0
  88. package/SVF-doxygen/html/html/classOption.png +0 -0
  89. package/SVF-doxygen/html/html/classOptionBase-members.html +95 -0
  90. package/SVF-doxygen/html/html/classOptionBase.html +823 -0
  91. package/SVF-doxygen/html/html/classOptionBase.png +0 -0
  92. package/SVF-doxygen/html/html/classOptionMap-members.html +97 -0
  93. package/SVF-doxygen/html/html/classOptionMap.html +428 -0
  94. package/SVF-doxygen/html/html/classOptionMap.png +0 -0
  95. package/SVF-doxygen/html/html/classOptionMultiple-members.html +97 -0
  96. package/SVF-doxygen/html/html/classOptionMultiple.html +460 -0
  97. package/SVF-doxygen/html/html/classOptionMultiple.png +0 -0
  98. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +2 -2
  99. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +16 -15
  100. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +9 -9
  101. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +6 -6
  102. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -6
  103. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
  104. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +2 -2
  105. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  106. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +33 -30
  107. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
  108. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +9 -8
  109. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.png +0 -0
  110. package/SVF-doxygen/html/html/classSVF_1_1CFLData-members.html +110 -0
  111. package/SVF-doxygen/html/html/classSVF_1_1CFLData.html +1126 -0
  112. package/SVF-doxygen/html/html/classSVF_1_1CFLDataBuilder-members.html +88 -0
  113. package/SVF-doxygen/html/html/classSVF_1_1CFLDataBuilder.html +380 -0
  114. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +2 -2
  115. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +4 -4
  116. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +48 -39
  117. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.png +0 -0
  118. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +6 -6
  119. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +2 -2
  120. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +2 -2
  121. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +2 -2
  122. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +2 -2
  123. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  124. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +72 -72
  125. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
  126. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +2 -2
  127. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +8 -8
  128. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
  129. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +36 -35
  130. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
  131. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +4 -4
  132. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +2 -2
  133. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  134. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +11 -11
  135. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +22 -8
  136. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  137. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
  138. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
  139. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +2 -2
  140. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter.html +3 -2
  141. package/SVF-doxygen/html/html/classSVF_1_1HybridData-members.html +89 -0
  142. package/SVF-doxygen/html/html/classSVF_1_1HybridData.html +449 -0
  143. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  144. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +8 -8
  146. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +2 -2
  147. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +73 -72
  148. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
  149. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +2 -2
  150. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
  151. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
  154. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +10 -10
  155. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +6 -6
  156. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +12 -12
  157. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
  158. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +4 -4
  159. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +2 -2
  160. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +8 -8
  161. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
  162. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +2 -2
  163. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +121 -120
  164. package/SVF-doxygen/html/html/classSVF_1_1Options.html +641 -615
  165. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +28 -28
  166. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias-members.html +281 -0
  167. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.html +828 -0
  168. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.png +0 -0
  169. package/SVF-doxygen/html/html/classSVF_1_1POCRSolver-members.html +98 -0
  170. package/SVF-doxygen/html/html/classSVF_1_1POCRSolver.html +245 -0
  171. package/SVF-doxygen/html/html/classSVF_1_1POCRSolver.png +0 -0
  172. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  173. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +20 -19
  174. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
  175. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +2 -2
  176. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  177. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +2 -2
  178. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +3 -3
  179. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +7 -7
  180. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +9 -9
  181. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +9 -8
  182. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +2 -2
  183. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +18 -18
  184. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +6 -6
  185. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +1 -1
  186. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +3 -3
  187. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +2 -2
  188. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +9 -9
  189. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +2 -2
  190. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +11 -11
  191. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +10 -10
  192. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +4 -4
  193. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +2 -2
  194. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +2 -2
  195. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  196. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +2 -2
  197. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +8 -8
  198. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +2 -2
  199. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +6 -6
  200. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +27 -26
  201. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +6 -6
  202. package/SVF-doxygen/html/html/classes.html +110 -108
  203. package/SVF-doxygen/html/html/dda_8cpp.html +51 -248
  204. package/SVF-doxygen/html/html/dda_8cpp_source.html +9 -10
  205. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
  206. package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +4 -0
  207. package/SVF-doxygen/html/html/files.html +27 -24
  208. package/SVF-doxygen/html/html/functions.html +7 -1
  209. package/SVF-doxygen/html/html/functions_0x7e.html +18 -0
  210. package/SVF-doxygen/html/html/functions_a.html +45 -21
  211. package/SVF-doxygen/html/html/functions_b.html +15 -7
  212. package/SVF-doxygen/html/html/functions_c.html +72 -49
  213. package/SVF-doxygen/html/html/functions_d.html +25 -16
  214. package/SVF-doxygen/html/html/functions_e.html +11 -4
  215. package/SVF-doxygen/html/html/functions_f.html +19 -16
  216. package/SVF-doxygen/html/html/functions_func.html +35 -11
  217. package/SVF-doxygen/html/html/functions_func_0x7e.html +18 -0
  218. package/SVF-doxygen/html/html/functions_func_b.html +11 -3
  219. package/SVF-doxygen/html/html/functions_func_c.html +55 -34
  220. package/SVF-doxygen/html/html/functions_func_e.html +5 -1
  221. package/SVF-doxygen/html/html/functions_func_f.html +4 -1
  222. package/SVF-doxygen/html/html/functions_func_g.html +26 -7
  223. package/SVF-doxygen/html/html/functions_func_h.html +10 -3
  224. package/SVF-doxygen/html/html/functions_func_i.html +25 -10
  225. package/SVF-doxygen/html/html/functions_func_m.html +3 -2
  226. package/SVF-doxygen/html/html/functions_func_n.html +4 -1
  227. package/SVF-doxygen/html/html/functions_func_o.html +23 -6
  228. package/SVF-doxygen/html/html/functions_func_p.html +15 -3
  229. package/SVF-doxygen/html/html/functions_func_s.html +20 -19
  230. package/SVF-doxygen/html/html/functions_func_t.html +3 -0
  231. package/SVF-doxygen/html/html/functions_func_u.html +3 -0
  232. package/SVF-doxygen/html/html/functions_g.html +28 -9
  233. package/SVF-doxygen/html/html/functions_h.html +13 -6
  234. package/SVF-doxygen/html/html/functions_i.html +44 -20
  235. package/SVF-doxygen/html/html/functions_k.html +1 -1
  236. package/SVF-doxygen/html/html/functions_l.html +4 -4
  237. package/SVF-doxygen/html/html/functions_m.html +14 -13
  238. package/SVF-doxygen/html/html/functions_n.html +9 -5
  239. package/SVF-doxygen/html/html/functions_o.html +48 -25
  240. package/SVF-doxygen/html/html/functions_p.html +65 -34
  241. package/SVF-doxygen/html/html/functions_r.html +7 -9
  242. package/SVF-doxygen/html/html/functions_s.html +34 -32
  243. package/SVF-doxygen/html/html/functions_t.html +17 -8
  244. package/SVF-doxygen/html/html/functions_type_c.html +2 -1
  245. package/SVF-doxygen/html/html/functions_type_d.html +3 -0
  246. package/SVF-doxygen/html/html/functions_type_i.html +2 -1
  247. package/SVF-doxygen/html/html/functions_type_o.html +7 -0
  248. package/SVF-doxygen/html/html/functions_type_p.html +6 -0
  249. package/SVF-doxygen/html/html/functions_type_t.html +3 -0
  250. package/SVF-doxygen/html/html/functions_u.html +6 -3
  251. package/SVF-doxygen/html/html/functions_v.html +7 -5
  252. package/SVF-doxygen/html/html/functions_vars.html +7 -1
  253. package/SVF-doxygen/html/html/functions_vars_a.html +7 -7
  254. package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
  255. package/SVF-doxygen/html/html/functions_vars_c.html +15 -12
  256. package/SVF-doxygen/html/html/functions_vars_d.html +21 -15
  257. package/SVF-doxygen/html/html/functions_vars_e.html +5 -2
  258. package/SVF-doxygen/html/html/functions_vars_f.html +6 -6
  259. package/SVF-doxygen/html/html/functions_vars_g.html +2 -2
  260. package/SVF-doxygen/html/html/functions_vars_h.html +1 -1
  261. package/SVF-doxygen/html/html/functions_vars_i.html +14 -6
  262. package/SVF-doxygen/html/html/functions_vars_k.html +1 -1
  263. package/SVF-doxygen/html/html/functions_vars_l.html +4 -4
  264. package/SVF-doxygen/html/html/functions_vars_m.html +11 -11
  265. package/SVF-doxygen/html/html/functions_vars_n.html +3 -2
  266. package/SVF-doxygen/html/html/functions_vars_o.html +5 -2
  267. package/SVF-doxygen/html/html/functions_vars_p.html +34 -21
  268. package/SVF-doxygen/html/html/functions_vars_r.html +5 -5
  269. package/SVF-doxygen/html/html/functions_vars_s.html +13 -10
  270. package/SVF-doxygen/html/html/functions_vars_t.html +7 -4
  271. package/SVF-doxygen/html/html/functions_vars_u.html +3 -3
  272. package/SVF-doxygen/html/html/functions_vars_v.html +6 -4
  273. package/SVF-doxygen/html/html/functions_vars_w.html +3 -3
  274. package/SVF-doxygen/html/html/functions_w.html +11 -7
  275. package/SVF-doxygen/html/html/globals_d.html +4 -4
  276. package/SVF-doxygen/html/html/globals_e.html +6 -6
  277. package/SVF-doxygen/html/html/globals_f.html +2 -2
  278. package/SVF-doxygen/html/html/globals_func.html +6 -58
  279. package/SVF-doxygen/html/html/globals_i.html +4 -12
  280. package/SVF-doxygen/html/html/globals_l.html +2 -2
  281. package/SVF-doxygen/html/html/globals_r.html +4 -4
  282. package/SVF-doxygen/html/html/globals_s.html +0 -4
  283. package/SVF-doxygen/html/html/globals_type.html +3 -0
  284. package/SVF-doxygen/html/html/globals_u.html +3 -0
  285. package/SVF-doxygen/html/html/globals_vars.html +43 -12
  286. package/SVF-doxygen/html/html/hierarchy.html +517 -496
  287. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  288. package/SVF-doxygen/html/html/menudata.js +1 -2
  289. package/SVF-doxygen/html/html/mta_8cpp.html +4 -47
  290. package/SVF-doxygen/html/html/mta_8cpp_source.html +4 -4
  291. package/SVF-doxygen/html/html/namespaceSVF.html +29 -0
  292. package/SVF-doxygen/html/html/namespaceSVF_1_1DOT.html +3 -2
  293. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  294. package/SVF-doxygen/html/html/namespacemembers_l.html +3 -0
  295. package/SVF-doxygen/html/html/namespacemembers_type_l.html +3 -0
  296. package/SVF-doxygen/html/html/saber_8cpp.html +38 -136
  297. package/SVF-doxygen/html/html/saber_8cpp_source.html +8 -7
  298. package/SVF-doxygen/html/html/search/all_0.js +2 -1
  299. package/SVF-doxygen/html/html/search/all_1.js +15 -8
  300. package/SVF-doxygen/html/html/search/all_10.js +33 -25
  301. package/SVF-doxygen/html/html/search/all_11.js +9 -9
  302. package/SVF-doxygen/html/html/search/all_12.js +22 -22
  303. package/SVF-doxygen/html/html/search/all_13.js +14 -11
  304. package/SVF-doxygen/html/html/search/all_14.js +5 -4
  305. package/SVF-doxygen/html/html/search/all_15.js +5 -5
  306. package/SVF-doxygen/html/html/search/all_16.js +4 -4
  307. package/SVF-doxygen/html/html/search/all_19.js +6 -0
  308. package/SVF-doxygen/html/html/search/all_2.js +5 -3
  309. package/SVF-doxygen/html/html/search/all_3.js +25 -18
  310. package/SVF-doxygen/html/html/search/all_4.js +20 -18
  311. package/SVF-doxygen/html/html/search/all_5.js +8 -6
  312. package/SVF-doxygen/html/html/search/all_6.js +9 -8
  313. package/SVF-doxygen/html/html/search/all_7.js +9 -3
  314. package/SVF-doxygen/html/html/search/all_8.js +5 -3
  315. package/SVF-doxygen/html/html/search/all_9.js +16 -11
  316. package/SVF-doxygen/html/html/search/all_b.js +2 -2
  317. package/SVF-doxygen/html/html/search/all_c.js +7 -6
  318. package/SVF-doxygen/html/html/search/all_d.js +13 -13
  319. package/SVF-doxygen/html/html/search/all_e.js +4 -3
  320. package/SVF-doxygen/html/html/search/all_f.js +24 -6
  321. package/SVF-doxygen/html/html/search/classes_10.js +1 -0
  322. package/SVF-doxygen/html/html/search/classes_2.js +2 -0
  323. package/SVF-doxygen/html/html/search/classes_7.js +2 -1
  324. package/SVF-doxygen/html/html/search/classes_c.js +15 -0
  325. package/SVF-doxygen/html/html/search/classes_d.js +2 -0
  326. package/SVF-doxygen/html/html/search/files_2.js +3 -0
  327. package/SVF-doxygen/html/html/search/functions_0.js +8 -1
  328. package/SVF-doxygen/html/html/search/functions_1.js +4 -2
  329. package/SVF-doxygen/html/html/search/functions_10.js +0 -2
  330. package/SVF-doxygen/html/html/search/functions_11.js +2 -3
  331. package/SVF-doxygen/html/html/search/functions_12.js +1 -0
  332. package/SVF-doxygen/html/html/search/functions_13.js +1 -0
  333. package/SVF-doxygen/html/html/search/functions_17.js +6 -0
  334. package/SVF-doxygen/html/html/search/functions_2.js +5 -1
  335. package/SVF-doxygen/html/html/search/functions_3.js +0 -2
  336. package/SVF-doxygen/html/html/search/functions_4.js +2 -4
  337. package/SVF-doxygen/html/html/search/functions_5.js +2 -1
  338. package/SVF-doxygen/html/html/search/functions_6.js +7 -1
  339. package/SVF-doxygen/html/html/search/functions_7.js +4 -2
  340. package/SVF-doxygen/html/html/search/functions_8.js +6 -3
  341. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  342. package/SVF-doxygen/html/html/search/functions_c.js +1 -1
  343. package/SVF-doxygen/html/html/search/functions_d.js +1 -0
  344. package/SVF-doxygen/html/html/search/functions_e.js +7 -3
  345. package/SVF-doxygen/html/html/search/functions_f.js +3 -0
  346. package/SVF-doxygen/html/html/search/typedefs_11.js +2 -1
  347. package/SVF-doxygen/html/html/search/typedefs_12.js +1 -1
  348. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  349. package/SVF-doxygen/html/html/search/typedefs_3.js +1 -0
  350. package/SVF-doxygen/html/html/search/typedefs_7.js +1 -1
  351. package/SVF-doxygen/html/html/search/typedefs_a.js +1 -0
  352. package/SVF-doxygen/html/html/search/typedefs_d.js +2 -0
  353. package/SVF-doxygen/html/html/search/typedefs_e.js +2 -0
  354. package/SVF-doxygen/html/html/search/variables_0.js +2 -1
  355. package/SVF-doxygen/html/html/search/variables_1.js +7 -7
  356. package/SVF-doxygen/html/html/search/variables_10.js +25 -21
  357. package/SVF-doxygen/html/html/search/variables_11.js +7 -5
  358. package/SVF-doxygen/html/html/search/variables_12.js +11 -10
  359. package/SVF-doxygen/html/html/search/variables_13.js +9 -8
  360. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  361. package/SVF-doxygen/html/html/search/variables_15.js +4 -4
  362. package/SVF-doxygen/html/html/search/variables_16.js +3 -3
  363. package/SVF-doxygen/html/html/search/variables_2.js +1 -1
  364. package/SVF-doxygen/html/html/search/variables_3.js +13 -12
  365. package/SVF-doxygen/html/html/search/variables_4.js +19 -15
  366. package/SVF-doxygen/html/html/search/variables_5.js +6 -2
  367. package/SVF-doxygen/html/html/search/variables_6.js +7 -6
  368. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  369. package/SVF-doxygen/html/html/search/variables_8.js +1 -1
  370. package/SVF-doxygen/html/html/search/variables_9.js +9 -7
  371. package/SVF-doxygen/html/html/search/variables_b.js +1 -1
  372. package/SVF-doxygen/html/html/search/variables_c.js +5 -4
  373. package/SVF-doxygen/html/html/search/variables_d.js +11 -11
  374. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  375. package/SVF-doxygen/html/html/search/variables_f.js +3 -2
  376. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +4 -4
  377. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  378. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
  379. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +4 -4
  380. package/SVF-doxygen/html/html/structSVF_1_1HybridData_1_1TreeNode-members.html +86 -0
  381. package/SVF-doxygen/html/html/structSVF_1_1HybridData_1_1TreeNode.html +255 -0
  382. package/SVF-doxygen/html/html/svf-ex_8cpp.html +12 -55
  383. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +8 -8
  384. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  385. package/SVF-doxygen/html/html/wpa_8cpp.html +4 -47
  386. package/SVF-doxygen/html/html/wpa_8cpp_source.html +4 -4
  387. package/include/CFL/CFLAlias.h +34 -0
  388. package/include/CFL/CFLData.h +316 -0
  389. package/include/CFL/CFLDataBuilder.h +91 -0
  390. package/include/CFL/CFLSolver.h +21 -0
  391. package/include/Util/CommandLine.h +527 -0
  392. package/include/Util/Options.h +125 -124
  393. package/include/WPA/Andersen.h +5 -5
  394. package/lib/AbstractExecution/SVFIR2ItvExeState.cpp +2 -2
  395. package/lib/CFL/CFLAlias.cpp +40 -4
  396. package/lib/CFL/CFLBase.cpp +4 -4
  397. package/lib/CFL/CFLGraphBuilder.cpp +2 -2
  398. package/lib/CFL/CFLVF.cpp +5 -5
  399. package/lib/DDA/ContextDDA.cpp +1 -1
  400. package/lib/DDA/DDAPass.cpp +14 -13
  401. package/lib/DDA/FlowDDA.cpp +1 -1
  402. package/lib/Graphs/ConsG.cpp +10 -10
  403. package/lib/Graphs/ICFG.cpp +1 -1
  404. package/lib/Graphs/IRGraph.cpp +2 -2
  405. package/lib/Graphs/SVFG.cpp +5 -5
  406. package/lib/Graphs/SVFGOPT.cpp +5 -5
  407. package/lib/Graphs/VFG.cpp +1 -1
  408. package/lib/MSSA/MemRegion.cpp +2 -2
  409. package/lib/MSSA/MemSSA.cpp +4 -4
  410. package/lib/MSSA/SVFGBuilder.cpp +4 -4
  411. package/lib/MTA/FSMPTA.cpp +13 -13
  412. package/lib/MTA/MHP.cpp +1 -1
  413. package/lib/MTA/MTA.cpp +2 -2
  414. package/lib/MTA/MTAStat.cpp +1 -1
  415. package/lib/MTA/PCG.cpp +8 -2
  416. package/lib/MTA/TCT.cpp +2 -2
  417. package/lib/MemoryModel/PointerAnalysis.cpp +13 -13
  418. package/lib/MemoryModel/PointerAnalysisImpl.cpp +13 -13
  419. package/lib/MemoryModel/PointsTo.cpp +1 -1
  420. package/lib/SABER/DoubleFreeChecker.cpp +1 -1
  421. package/lib/SABER/LeakChecker.cpp +1 -1
  422. package/lib/SABER/SaberCondAllocator.cpp +1 -1
  423. package/lib/SABER/SrcSnkDDA.cpp +5 -5
  424. package/lib/SVF-LLVM/CHGBuilder.cpp +1 -1
  425. package/lib/SVF-LLVM/DCHG.cpp +1 -1
  426. package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +2 -2
  427. package/lib/SVF-LLVM/LLVMModule.cpp +10 -4
  428. package/lib/SVF-LLVM/SVFIRBuilder.cpp +8 -8
  429. package/lib/SVF-LLVM/SymbolTableBuilder.cpp +5 -5
  430. package/lib/SVFIR/SVFIR.cpp +4 -4
  431. package/lib/SVFIR/SVFStatements.cpp +16 -16
  432. package/lib/SVFIR/SVFVariables.cpp +5 -5
  433. package/lib/SVFIR/SymbolTableInfo.cpp +6 -6
  434. package/lib/Util/NodeIDAllocator.cpp +9 -9
  435. package/lib/Util/Options.cpp +431 -412
  436. package/lib/Util/SVFStat.cpp +5 -5
  437. package/lib/Util/SVFUtil.cpp +1 -1
  438. package/lib/Util/Z3Expr.cpp +2 -2
  439. package/lib/WPA/Andersen.cpp +13 -13
  440. package/lib/WPA/AndersenSCD.cpp +3 -3
  441. package/lib/WPA/FlowSensitive.cpp +8 -8
  442. package/lib/WPA/TypeAnalysis.cpp +1 -1
  443. package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
  444. package/lib/WPA/WPAPass.cpp +10 -9
  445. package/package.json +1 -1
  446. package/tools/CFL/cfl.cpp +8 -14
  447. package/tools/DDA/dda.cpp +39 -29
  448. package/tools/Example/svf-ex.cpp +5 -8
  449. package/tools/MTA/LockResultValidator.cpp +2 -2
  450. package/tools/MTA/MTAAnnotator.cpp +5 -5
  451. package/tools/MTA/MTAResultValidator.cpp +8 -8
  452. package/tools/MTA/mta.cpp +5 -8
  453. package/tools/SABER/saber.cpp +23 -17
  454. package/tools/WPA/wpa.cpp +6 -9
@@ -62,7 +62,8 @@ void DDAPass::runOnModule(SVFIR* pag)
62
62
  for (u32_t i = PointerAnalysis::FlowS_DDA;
63
63
  i < PointerAnalysis::Default_PTA; i++)
64
64
  {
65
- if (Options::DDASelected.isSet(i))
65
+ PointerAnalysis::PTATY iPtTy = static_cast<PointerAnalysis::PTATY>(i);
66
+ if (Options::DDASelected(iPtTy))
66
67
  runPointerAnalysis(pag, i);
67
68
  }
68
69
  }
@@ -71,14 +72,14 @@ void DDAPass::runOnModule(SVFIR* pag)
71
72
  void DDAPass::selectClient(SVFModule* module)
72
73
  {
73
74
 
74
- if (!Options::UserInputQuery.empty())
75
+ if (!Options::UserInputQuery().empty())
75
76
  {
76
77
  /// solve function pointer
77
- if (Options::UserInputQuery == "funptr")
78
+ if (Options::UserInputQuery() == "funptr")
78
79
  {
79
80
  _client = new FunptrDDAClient(module);
80
81
  }
81
- else if (Options::UserInputQuery == "alias")
82
+ else if (Options::UserInputQuery() == "alias")
82
83
  {
83
84
  _client = new AliasDDAClient(module);
84
85
  }
@@ -86,10 +87,10 @@ void DDAPass::selectClient(SVFModule* module)
86
87
  else
87
88
  {
88
89
  _client = new DDAClient(module);
89
- if (Options::UserInputQuery != "all")
90
+ if (Options::UserInputQuery() != "all")
90
91
  {
91
92
  u32_t buf; // Have a buffer
92
- stringstream ss(Options::UserInputQuery); // Insert the user input string into a stream
93
+ stringstream ss(Options::UserInputQuery()); // Insert the user input string into a stream
93
94
  while (ss >> buf)
94
95
  _client->setQuery(buf);
95
96
  }
@@ -107,8 +108,8 @@ void DDAPass::selectClient(SVFModule* module)
107
108
  void DDAPass::runPointerAnalysis(SVFIR* pag, u32_t kind)
108
109
  {
109
110
 
110
- ContextCond::setMaxPathLen(Options::MaxPathLen);
111
- ContextCond::setMaxCxtLen(Options::MaxContextLen);
111
+ ContextCond::setMaxPathLen(Options::MaxPathLen());
112
+ ContextCond::setMaxCxtLen(Options::MaxContextLen());
112
113
 
113
114
  /// Initialize pointer analysis.
114
115
  switch (kind)
@@ -128,7 +129,7 @@ void DDAPass::runPointerAnalysis(SVFIR* pag, u32_t kind)
128
129
  break;
129
130
  }
130
131
 
131
- if(Options::WPANum)
132
+ if(Options::WPANum())
132
133
  {
133
134
  _client->collectWPANum(pag->getModule());
134
135
  }
@@ -140,13 +141,13 @@ void DDAPass::runPointerAnalysis(SVFIR* pag, u32_t kind)
140
141
  _client->answerQueries(_pta.get());
141
142
  ///finalize
142
143
  _pta->finalize();
143
- if(Options::PrintCPts)
144
+ if(Options::PrintCPts())
144
145
  _pta->dumpCPts();
145
146
 
146
147
  if (_pta->printStat())
147
148
  _client->performStat(_pta.get());
148
149
 
149
- if (Options::PrintQueryPts)
150
+ if (Options::PrintQueryPts())
150
151
  printQueryPTS();
151
152
  }
152
153
  }
@@ -157,9 +158,9 @@ void DDAPass::runPointerAnalysis(SVFIR* pag, u32_t kind)
157
158
  */
158
159
  void DDAPass::initCxtInsensitiveEdges(PointerAnalysis* pta, const SVFG* svfg,const SVFGSCC* svfgSCC, SVFGEdgeSet& insensitveEdges)
159
160
  {
160
- if(Options::InsenRecur)
161
+ if(Options::InsenRecur())
161
162
  collectCxtInsenEdgeForRecur(pta,svfg,insensitveEdges);
162
- else if(Options::InsenCycle)
163
+ else if(Options::InsenCycle())
163
164
  collectCxtInsenEdgeForVFCycle(pta,svfg,svfgSCC,insensitveEdges);
164
165
  }
165
166
 
@@ -43,7 +43,7 @@ using namespace SVFUtil;
43
43
  void FlowDDA::computeDDAPts(NodeID id)
44
44
  {
45
45
  resetQuery();
46
- LocDPItem::setMaxBudget(Options::FlowBudget);
46
+ LocDPItem::setMaxBudget(Options::FlowBudget());
47
47
 
48
48
  PAGNode* node = getPAG()->getGNode(id);
49
49
  LocDPItem dpm = getDPIm(node->getId(),getDefSVFGNode(node));
@@ -632,7 +632,7 @@ void ConstraintGraph::view()
632
632
  //@{
633
633
  ConstraintNode::iterator ConstraintNode::directOutEdgeBegin()
634
634
  {
635
- if (Options::DetectPWC)
635
+ if (Options::DetectPWC())
636
636
  return directOutEdges.begin();
637
637
  else
638
638
  return copyOutEdges.begin();
@@ -640,7 +640,7 @@ ConstraintNode::iterator ConstraintNode::directOutEdgeBegin()
640
640
 
641
641
  ConstraintNode::iterator ConstraintNode::directOutEdgeEnd()
642
642
  {
643
- if (Options::DetectPWC)
643
+ if (Options::DetectPWC())
644
644
  return directOutEdges.end();
645
645
  else
646
646
  return copyOutEdges.end();
@@ -648,7 +648,7 @@ ConstraintNode::iterator ConstraintNode::directOutEdgeEnd()
648
648
 
649
649
  ConstraintNode::iterator ConstraintNode::directInEdgeBegin()
650
650
  {
651
- if (Options::DetectPWC)
651
+ if (Options::DetectPWC())
652
652
  return directInEdges.begin();
653
653
  else
654
654
  return copyInEdges.begin();
@@ -656,7 +656,7 @@ ConstraintNode::iterator ConstraintNode::directInEdgeBegin()
656
656
 
657
657
  ConstraintNode::iterator ConstraintNode::directInEdgeEnd()
658
658
  {
659
- if (Options::DetectPWC)
659
+ if (Options::DetectPWC())
660
660
  return directInEdges.end();
661
661
  else
662
662
  return copyInEdges.end();
@@ -664,7 +664,7 @@ ConstraintNode::iterator ConstraintNode::directInEdgeEnd()
664
664
 
665
665
  ConstraintNode::const_iterator ConstraintNode::directOutEdgeBegin() const
666
666
  {
667
- if (Options::DetectPWC)
667
+ if (Options::DetectPWC())
668
668
  return directOutEdges.begin();
669
669
  else
670
670
  return copyOutEdges.begin();
@@ -672,7 +672,7 @@ ConstraintNode::const_iterator ConstraintNode::directOutEdgeBegin() const
672
672
 
673
673
  ConstraintNode::const_iterator ConstraintNode::directOutEdgeEnd() const
674
674
  {
675
- if (Options::DetectPWC)
675
+ if (Options::DetectPWC())
676
676
  return directOutEdges.end();
677
677
  else
678
678
  return copyOutEdges.end();
@@ -680,7 +680,7 @@ ConstraintNode::const_iterator ConstraintNode::directOutEdgeEnd() const
680
680
 
681
681
  ConstraintNode::const_iterator ConstraintNode::directInEdgeBegin() const
682
682
  {
683
- if (Options::DetectPWC)
683
+ if (Options::DetectPWC())
684
684
  return directInEdges.begin();
685
685
  else
686
686
  return copyInEdges.begin();
@@ -688,7 +688,7 @@ ConstraintNode::const_iterator ConstraintNode::directInEdgeBegin() const
688
688
 
689
689
  ConstraintNode::const_iterator ConstraintNode::directInEdgeEnd() const
690
690
  {
691
- if (Options::DetectPWC)
691
+ if (Options::DetectPWC())
692
692
  return directInEdges.end();
693
693
  else
694
694
  return copyInEdges.end();
@@ -723,7 +723,7 @@ struct DOTGraphTraits<ConstraintGraph*> : public DOTGraphTraits<SVFIR*>
723
723
  static bool isNodeHidden(NodeType *n)
724
724
  {
725
725
  #endif
726
- if (Options::ShowHiddenNode) return false;
726
+ if (Options::ShowHiddenNode()) return false;
727
727
  else return (n->getInEdges().empty() && n->getOutEdges().empty());
728
728
  }
729
729
 
@@ -732,7 +732,7 @@ struct DOTGraphTraits<ConstraintGraph*> : public DOTGraphTraits<SVFIR*>
732
732
  static std::string getNodeLabel(NodeType *n, ConstraintGraph*)
733
733
  {
734
734
  PAGNode* node = SVFIR::getPAG()->getGNode(n->getId());
735
- bool briefDisplay = Options::BriefConsCGDotGraph;
735
+ bool briefDisplay = Options::BriefConsCGDotGraph();
736
736
  bool nameDisplay = true;
737
737
  std::string str;
738
738
  std::stringstream rawstr(str);
@@ -508,7 +508,7 @@ void ICFG::updateCallGraph(PTACallGraph* callgraph)
508
508
  }
509
509
  }
510
510
  // dump ICFG
511
- if (Options::DumpICFG)
511
+ if (Options::DumpICFG())
512
512
  {
513
513
  dump("icfg_final");
514
514
  }
@@ -144,7 +144,7 @@ struct DOTGraphTraits<IRGraph*> : public DefaultDOTGraphTraits
144
144
  static bool isNodeHidden(SVFVar *node)
145
145
  {
146
146
  #endif
147
- if (Options::ShowHiddenNode) return false;
147
+ if (Options::ShowHiddenNode()) return false;
148
148
  else return node->isIsolatedNode();
149
149
  }
150
150
 
@@ -289,4 +289,4 @@ struct DOTGraphTraits<IRGraph*> : public DefaultDOTGraphTraits
289
289
  return "";
290
290
  }
291
291
  };
292
- } // End namespace llvm
292
+ } // End namespace llvm
@@ -226,9 +226,9 @@ void SVFG::buildSVFG()
226
226
  DBOUT(DGENERAL, outs() << pasMsg("Build Sparse Value-Flow Graph \n"));
227
227
 
228
228
  stat->startClk();
229
- if (!Options::ReadSVFG.empty())
229
+ if (!Options::ReadSVFG().empty())
230
230
  {
231
- readFile(Options::ReadSVFG);
231
+ readFile(Options::ReadSVFG());
232
232
  }
233
233
  else
234
234
  {
@@ -240,8 +240,8 @@ void SVFG::buildSVFG()
240
240
  stat->indVFEdgeStart();
241
241
  connectIndirectSVFGEdges();
242
242
  stat->indVFEdgeEnd();
243
- if (!Options::WriteSVFG.empty())
244
- writeToFile(Options::WriteSVFG);
243
+ if (!Options::WriteSVFG().empty())
244
+ writeToFile(Options::WriteSVFG());
245
245
  }
246
246
  }
247
247
 
@@ -788,7 +788,7 @@ struct DOTGraphTraits<SVFG*> : public DOTGraphTraits<SVFIR*>
788
788
  static bool isNodeHidden(SVFGNode *node)
789
789
  {
790
790
  #endif
791
- if (Options::ShowHiddenNode) return false;
791
+ if (Options::ShowHiddenNode()) return false;
792
792
  else return node->getInEdges().empty() && node->getOutEdges().empty();
793
793
  }
794
794
 
@@ -48,12 +48,12 @@ void SVFGOPT::buildSVFG()
48
48
  {
49
49
  SVFG::buildSVFG();
50
50
 
51
- if(Options::DumpVFG)
51
+ if(Options::DumpVFG())
52
52
  dump("SVFG_before_opt");
53
53
 
54
54
  DBOUT(DGENERAL, outs() << SVFUtil::pasMsg("\tSVFG Optimisation\n"));
55
55
 
56
- keepActualOutFormalIn = Options::KeepAOFI;
56
+ keepActualOutFormalIn = Options::KeepAOFI();
57
57
 
58
58
  stat->sfvgOptStart();
59
59
  handleInterValueFlow();
@@ -67,7 +67,7 @@ void SVFGOPT::buildSVFG()
67
67
  */
68
68
  SVFGEdge* SVFGOPT::addCallIndirectSVFGEdge(NodeID srcId, NodeID dstId, CallSiteID csid, const NodeBS& cpts)
69
69
  {
70
- if (Options::ContextInsensitive)
70
+ if (Options::ContextInsensitive())
71
71
  return addIntraIndirectVFEdge(srcId, dstId, cpts);
72
72
  else
73
73
  return addCallIndirectVFEdge(srcId, dstId, cpts, csid);
@@ -78,7 +78,7 @@ SVFGEdge* SVFGOPT::addCallIndirectSVFGEdge(NodeID srcId, NodeID dstId, CallSiteI
78
78
  */
79
79
  SVFGEdge* SVFGOPT::addRetIndirectSVFGEdge(NodeID srcId, NodeID dstId, CallSiteID csid, const NodeBS& cpts)
80
80
  {
81
- if (Options::ContextInsensitive)
81
+ if (Options::ContextInsensitive())
82
82
  return addIntraIndirectVFEdge(srcId, dstId, cpts);
83
83
  else
84
84
  return addRetIndirectVFEdge(srcId, dstId, cpts, csid);
@@ -371,7 +371,7 @@ bool SVFGOPT::canBeRemoved(const SVFGNode * node)
371
371
  */
372
372
  void SVFGOPT::parseSelfCycleHandleOption()
373
373
  {
374
- std::string choice = (Options::SelfCycle.getValue().empty()) ? "" : Options::SelfCycle.getValue();
374
+ std::string choice = (Options::SelfCycle().empty()) ? "" : Options::SelfCycle();
375
375
  if (choice.empty() || choice == KeepAllSelfCycle)
376
376
  keepAllSelfCycle = true;
377
377
  else if (choice == KeepContextSelfCycle)
@@ -835,7 +835,7 @@ void VFG::connectDirectVFGEdges()
835
835
  }
836
836
 
837
837
  /// connect direct value-flow edges (parameter passing) for thread fork/join
838
- if(Options::EnableThreadCallGraph)
838
+ if(Options::EnableThreadCallGraph())
839
839
  {
840
840
  /// add fork edge
841
841
  SVFStmt::SVFStmtSetTy& forks = getPAGEdgeSet(SVFStmt::ThreadFork);
@@ -178,7 +178,7 @@ void MRGenerator::collectModRefForLoadStore()
178
178
  const SVFFunction& fun = **fi;
179
179
 
180
180
  /// if this function does not have any caller, then we do not care its MSSA
181
- if (Options::IgnoreDeadFun && fun.isUncalledFunction())
181
+ if (Options::IgnoreDeadFun() && fun.isUncalledFunction())
182
182
  continue;
183
183
 
184
184
  for (SVFFunction::const_iterator iter = fun.begin(), eiter = fun.end();
@@ -811,4 +811,4 @@ std::ostream& SVF::operator<<(std::ostream &o, const MRVer& mrver)
811
811
  o << "MRVERID: " << mrver.getID() <<" MemRegion: " << mrver.getMR()->dumpStr() << " MRVERSION: " << mrver.getSSAVersion() << " MSSADef: " << mrver.getDef()->getType() << ", "
812
812
  << mrver.getDef()->getMR()->dumpStr() ;
813
813
  return o;
814
- }
814
+ }
@@ -49,11 +49,11 @@ MemSSA::MemSSA(BVDataPTAImpl* p, bool ptrOnlyMSSA)
49
49
  assert((pta->getAnalysisTy()!=PointerAnalysis::Default_PTA)
50
50
  && "please specify a pointer analysis");
51
51
 
52
- if (Options::MemPar == MemPartition::Distinct)
52
+ if (Options::MemPar() == MemPartition::Distinct)
53
53
  mrGen = new DistinctMRG(pta, ptrOnlyMSSA);
54
- else if (Options::MemPar == MemPartition::IntraDisjoint)
54
+ else if (Options::MemPar() == MemPartition::IntraDisjoint)
55
55
  mrGen = new IntraDisjointMRG(pta, ptrOnlyMSSA);
56
- else if (Options::MemPar == MemPartition::InterDisjoint)
56
+ else if (Options::MemPar() == MemPartition::InterDisjoint)
57
57
  mrGen = new InterDisjointMRG(pta, ptrOnlyMSSA);
58
58
  else
59
59
  assert(false && "unrecognised memory partition strategy");
@@ -585,7 +585,7 @@ void MemSSA::dumpMSSA(OutStream& Out)
585
585
  fit != efit; ++fit)
586
586
  {
587
587
  const SVFFunction* fun = *fit;
588
- if(Options::MSSAFun!="" && Options::MSSAFun!=fun->getName())
588
+ if(Options::MSSAFun()!="" && Options::MSSAFun()!=fun->getName())
589
589
  continue;
590
590
 
591
591
  Out << "==========FUNCTION: " << fun->getName() << "==========\n";
@@ -40,7 +40,7 @@ using namespace SVFUtil;
40
40
 
41
41
  SVFG* SVFGBuilder::buildPTROnlySVFG(BVDataPTAImpl* pta)
42
42
  {
43
- if(Options::OPTSVFG)
43
+ if(Options::OPTSVFG())
44
44
  return build(pta, VFG::PTRONLYSVFG_OPT);
45
45
  else
46
46
  return build(pta, VFG::PTRONLYSVFG);
@@ -74,13 +74,13 @@ SVFG* SVFGBuilder::build(BVDataPTAImpl* pta, VFG::VFGK kind)
74
74
  buildSVFG();
75
75
 
76
76
  /// Update call graph using pre-analysis results
77
- if(Options::SVFGWithIndirectCall || SVFGWithIndCall)
77
+ if(Options::SVFGWithIndirectCall() || SVFGWithIndCall)
78
78
  svfg->updateCallGraph(pta);
79
79
 
80
80
  if(svfg->getMSSA()->getPTA()->printStat())
81
81
  svfg->performStat();
82
82
 
83
- if(Options::DumpVFG)
83
+ if(Options::DumpVFG())
84
84
  svfg->dump("svfg_final");
85
85
 
86
86
  return svfg.get();
@@ -114,7 +114,7 @@ std::unique_ptr<MemSSA> SVFGBuilder::buildMSSA(BVDataPTAImpl* pta, bool ptrOnlyM
114
114
  }
115
115
 
116
116
  mssa->performStat();
117
- if (Options::DumpMSSA)
117
+ if (Options::DumpMSSA())
118
118
  {
119
119
  mssa->dumpMSSA();
120
120
  }
@@ -48,7 +48,7 @@ void MTASVFGBuilder::buildSVFG()
48
48
  {
49
49
  MemSSA* mssa = svfg->getMSSA();
50
50
  svfg->buildSVFG();
51
- if (ADDEDGE_NOEDGE != Options::AddModelFlag)
51
+ if (ADDEDGE_NOEDGE != Options::AddModelFlag())
52
52
  {
53
53
  DBOUT(DGENERAL, outs() << SVFUtil::pasMsg("FSMPTA adding edge\n"));
54
54
  DBOUT(DMTA, outs() << SVFUtil::pasMsg("FSMPTA adding edge\n"));
@@ -486,10 +486,10 @@ void MTASVFGBuilder::handleStoreLoad(const StmtSVFGNode* n1,const StmtSVFGNode*
486
486
  const SVFInstruction* i1 = n1->getInst();
487
487
  const SVFInstruction* i2 = n2->getInst();
488
488
  /// MHP
489
- if (ADDEDGE_NOMHP!=Options::AddModelFlag && !mhp->mayHappenInParallel(i1, i2))
489
+ if (ADDEDGE_NOMHP!=Options::AddModelFlag() && !mhp->mayHappenInParallel(i1, i2))
490
490
  return;
491
491
  /// Alias
492
- if (ADDEDGE_NOALIAS!=Options::AddModelFlag && !pta->alias(n1->getPAGDstNodeID(), n2->getPAGSrcNodeID()))
492
+ if (ADDEDGE_NOALIAS!=Options::AddModelFlag() && !pta->alias(n1->getPAGDstNodeID(), n2->getPAGSrcNodeID()))
493
493
  return;
494
494
 
495
495
 
@@ -502,7 +502,7 @@ void MTASVFGBuilder::handleStoreLoad(const StmtSVFGNode* n1,const StmtSVFGNode*
502
502
  /// This constrait is too strong. All cxt lock under different cxt cannot be identified.
503
503
 
504
504
 
505
- if (ADDEDGE_NOLOCK!=Options::AddModelFlag && lockana->isProtectedByCommonLock(i1, i2))
505
+ if (ADDEDGE_NOLOCK!=Options::AddModelFlag() && lockana->isProtectedByCommonLock(i1, i2))
506
506
  {
507
507
  if (isTailofSpan(n1) && isHeadofSpan(n2))
508
508
  addTDEdges(n1->getId(), n2->getId(), pts);
@@ -520,17 +520,17 @@ void MTASVFGBuilder::handleStoreStore(const StmtSVFGNode* n1,const StmtSVFGNode*
520
520
  const SVFInstruction* i1 = n1->getInst();
521
521
  const SVFInstruction* i2 = n2->getInst();
522
522
  /// MHP
523
- if (ADDEDGE_NOMHP!=Options::AddModelFlag && !mhp->mayHappenInParallel(i1, i2))
523
+ if (ADDEDGE_NOMHP!=Options::AddModelFlag() && !mhp->mayHappenInParallel(i1, i2))
524
524
  return;
525
525
  /// Alias
526
- if (ADDEDGE_NOALIAS!=Options::AddModelFlag && !pta->alias(n1->getPAGDstNodeID(), n2->getPAGDstNodeID()))
526
+ if (ADDEDGE_NOALIAS!=Options::AddModelFlag() && !pta->alias(n1->getPAGDstNodeID(), n2->getPAGDstNodeID()))
527
527
  return;
528
528
 
529
529
  PointsTo pts = pta->getPts(n1->getPAGDstNodeID());
530
530
  pts &= pta->getPts(n2->getPAGDstNodeID());
531
531
 
532
532
  /// Lock
533
- if (ADDEDGE_NOLOCK!=Options::AddModelFlag && lockana->isProtectedByCommonLock(i1, i2))
533
+ if (ADDEDGE_NOLOCK!=Options::AddModelFlag() && lockana->isProtectedByCommonLock(i1, i2))
534
534
  {
535
535
  if (isTailofSpan(n1) && isHeadofSpan(n2))
536
536
  addTDEdges(n1->getId(), n2->getId(), pts);
@@ -706,7 +706,7 @@ void MTASVFGBuilder::readPrecision()
706
706
  void MTASVFGBuilder::connectMHPEdges(PointerAnalysis* pta)
707
707
  {
708
708
  PCG* pcg = new PCG(pta);
709
- if ((ADDEDGE_NONSPARSE==Options::AddModelFlag) && Options::UsePCG)
709
+ if ((ADDEDGE_NONSPARSE==Options::AddModelFlag()) && Options::UsePCG())
710
710
  {
711
711
  pcg->analyze();
712
712
  }
@@ -725,9 +725,9 @@ void MTASVFGBuilder::connectMHPEdges(PointerAnalysis* pta)
725
725
  {
726
726
  const StmtSVFGNode* n2 = SVFUtil::cast<StmtSVFGNode>(*it2);
727
727
  const SVFInstruction* i2 = n2->getInst();
728
- if (ADDEDGE_NONSPARSE==Options::AddModelFlag)
728
+ if (ADDEDGE_NONSPARSE==Options::AddModelFlag())
729
729
  {
730
- if (Options::UsePCG)
730
+ if (Options::UsePCG())
731
731
  {
732
732
  if (pcg->mayHappenInParallel(i1, i2) || mhp->mayHappenInParallel(i1, i2))
733
733
  handleStoreLoadNonSparse(n1, n2, pta);
@@ -747,9 +747,9 @@ void MTASVFGBuilder::connectMHPEdges(PointerAnalysis* pta)
747
747
  {
748
748
  const StmtSVFGNode* n2 = SVFUtil::cast<StmtSVFGNode>(*it2);
749
749
  const SVFInstruction* i2 = n2->getInst();
750
- if (ADDEDGE_NONSPARSE == Options::AddModelFlag)
750
+ if (ADDEDGE_NONSPARSE == Options::AddModelFlag())
751
751
  {
752
- if (Options::UsePCG)
752
+ if (Options::UsePCG())
753
753
  {
754
754
  if(pcg->mayHappenInParallel(i1, i2) || mhp->mayHappenInParallel(i1, i2))
755
755
  handleStoreStoreNonSparse(n1, n2, pta);
@@ -766,7 +766,7 @@ void MTASVFGBuilder::connectMHPEdges(PointerAnalysis* pta)
766
766
  }
767
767
  }
768
768
 
769
- if(Options::ReadPrecisionTDEdge && ADDEDGE_NORP!=Options::AddModelFlag)
769
+ if(Options::ReadPrecisionTDEdge() && ADDEDGE_NORP!=Options::AddModelFlag())
770
770
  {
771
771
  DBOUT(DGENERAL,outs()<<"Read precision edge removing \n");
772
772
  DBOUT(DMTA,outs()<<"Read precision edge removing \n");
package/lib/MTA/MHP.cpp CHANGED
@@ -134,7 +134,7 @@ void MHP::analyzeInterleaving()
134
134
  /// update non-candidate functions' interleaving
135
135
  updateNonCandidateFunInterleaving();
136
136
 
137
- if (Options::PrintInterLev)
137
+ if (Options::PrintInterLev())
138
138
  printInterleaving();
139
139
  }
140
140
 
package/lib/MTA/MTA.cpp CHANGED
@@ -67,12 +67,12 @@ bool MTA::runOnModule(SVFIR* pag)
67
67
 
68
68
 
69
69
  /*
70
- if (Options::AndersenAnno) {
70
+ if (Options::AndersenAnno()) {
71
71
  pta = mhp->getTCT()->getPTA();
72
72
  if (pta->printStat())
73
73
  stat->performMHPPairStat(mhp,lsa);
74
74
  AndersenWaveDiff::releaseAndersenWaveDiff();
75
- } else if (Options::FSAnno) {
75
+ } else if (Options::FSAnno()) {
76
76
 
77
77
  reportMemoryUsageKB("Mem before analysis");
78
78
  DBOUT(DGENERAL, outs() << pasMsg("FSMPTA analysis\n"));
@@ -113,7 +113,7 @@ void MTAStat::performMHPPairStat(MHP* mhp, LockAnalysis* lsa)
113
113
  {
114
114
 
115
115
  SVFIR* pag = SVFIR::getPAG();
116
- if(Options::AllPairMHP)
116
+ if(Options::AllPairMHP())
117
117
  {
118
118
  Set<const SVFInstruction*> instSet1;
119
119
  Set<const SVFInstruction*> instSet2;
package/lib/MTA/PCG.cpp CHANGED
@@ -27,6 +27,7 @@
27
27
  * Author: Yulei Sui, Peng Di
28
28
  */
29
29
 
30
+ #include "Util/CommandLine.h"
30
31
  #include "Util/Options.h"
31
32
  #include "MTA/PCG.h"
32
33
  #include "Util/SVFUtil.h"
@@ -39,7 +40,12 @@ using namespace SVFUtil;
39
40
  * Whether two functions may happen in parallel
40
41
  */
41
42
 
42
- //static llvm::cl::opt<bool> TDPrint("print-td", llvm::cl::init(true), llvm::cl::desc("Print Thread Analysis Results"));
43
+ //static Option<bool> TDPrint(
44
+ // "print-td",
45
+ // true,
46
+ // "Print Thread Analysis Results"
47
+ //);
48
+
43
49
  bool PCG::analyze()
44
50
  {
45
51
 
@@ -53,7 +59,7 @@ bool PCG::analyze()
53
59
 
54
60
  //interferenceAnalysis();
55
61
 
56
- //if (Options::TDPrint) {
62
+ //if (Options::TDPrint()) {
57
63
  //printResults();
58
64
  //tdAPI->performAPIStat(mod);
59
65
  //}
package/lib/MTA/TCT.cpp CHANGED
@@ -429,7 +429,7 @@ void TCT::build()
429
429
 
430
430
  collectMultiForkedThreads();
431
431
 
432
- if (Options::TCTDotGraph)
432
+ if (Options::TCTDotGraph())
433
433
  {
434
434
  print();
435
435
  dump("tct");
@@ -511,7 +511,7 @@ void TCT::dumpCxt(CallStrCxt& cxt)
511
511
  */
512
512
  void TCT::dump(const std::string& filename)
513
513
  {
514
- if (Options::TCTDotGraph)
514
+ if (Options::TCTDotGraph())
515
515
  GraphPrinter::WriteGraphToFile(outs(), filename, this);
516
516
  }
517
517
 
@@ -70,10 +70,10 @@ PointerAnalysis::PointerAnalysis(SVFIR* p, PTATY ty, bool alias_check) :
70
70
  svfMod(nullptr),ptaTy(ty),stat(nullptr),ptaCallGraph(nullptr),callGraphSCC(nullptr),icfg(nullptr),chgraph(nullptr),typeSystem(nullptr)
71
71
  {
72
72
  pag = p;
73
- OnTheFlyIterBudgetForStat = Options::StatBudget;
74
- print_stat = Options::PStat;
73
+ OnTheFlyIterBudgetForStat = Options::StatBudget();
74
+ print_stat = Options::PStat();
75
75
  ptaImplTy = BaseImpl;
76
- alias_validation = (alias_check && Options::EnableAliasCheck);
76
+ alias_validation = (alias_check && Options::EnableAliasCheck());
77
77
  }
78
78
 
79
79
  /*!
@@ -110,7 +110,7 @@ void PointerAnalysis::initialize()
110
110
  chgraph = pag->getCHG();
111
111
 
112
112
  /// initialise pta call graph for every pointer analysis instance
113
- if(Options::EnableThreadCallGraph)
113
+ if(Options::EnableThreadCallGraph())
114
114
  {
115
115
  ThreadCallGraph* cg = new ThreadCallGraph();
116
116
  ThreadCallGraphBuilder bd(cg, pag->getICFG());
@@ -125,7 +125,7 @@ void PointerAnalysis::initialize()
125
125
  callGraphSCCDetection();
126
126
 
127
127
  // dump callgraph
128
- if (Options::CallGraphDotGraph)
128
+ if (Options::CallGraphDotGraph())
129
129
  getPTACallGraph()->dump("callgraph_initial");
130
130
  }
131
131
 
@@ -183,31 +183,31 @@ void PointerAnalysis::finalize()
183
183
  dumpStat();
184
184
 
185
185
  /// Dump results
186
- if (Options::PTSPrint)
186
+ if (Options::PTSPrint())
187
187
  {
188
188
  dumpTopLevelPtsTo();
189
189
  //dumpAllPts();
190
190
  //dumpCPts();
191
191
  }
192
192
 
193
- if (Options::TypePrint)
193
+ if (Options::TypePrint())
194
194
  dumpAllTypes();
195
195
 
196
- if(Options::PTSAllPrint)
196
+ if(Options::PTSAllPrint())
197
197
  dumpAllPts();
198
198
 
199
- if (Options::FuncPointerPrint)
199
+ if (Options::FuncPointerPrint())
200
200
  printIndCSTargets();
201
201
 
202
202
  getPTACallGraph()->verifyCallGraph();
203
203
 
204
- if (Options::CallGraphDotGraph)
204
+ if (Options::CallGraphDotGraph())
205
205
  getPTACallGraph()->dump("callgraph_final");
206
206
 
207
207
  if(!pag->isBuiltFromFile() && alias_validation)
208
208
  validateTests();
209
209
 
210
- if (!Options::UsePreCompFieldSensitive)
210
+ if (!Options::UsePreCompFieldSensitive())
211
211
  resetObjFieldSensitive();
212
212
  }
213
213
 
@@ -392,7 +392,7 @@ void PointerAnalysis::resolveIndCalls(const CallICFGNode* cs, const PointsTo& ta
392
392
  ii != ie; ii++)
393
393
  {
394
394
 
395
- if(getNumOfResolvedIndCallEdge() >= Options::IndirectCallLimit)
395
+ if(getNumOfResolvedIndCallEdge() >= Options::IndirectCallLimit())
396
396
  {
397
397
  wrnMsg("Resolved Indirect Call Edges are Out-Of-Budget, please increase the limit");
398
398
  return;
@@ -504,7 +504,7 @@ void PointerAnalysis::resolveCPPIndCalls(const CallICFGNode* cs, const PointsTo&
504
504
  assert(SVFUtil::getSVFCallSite(cs->getCallSite()).isVirtualCall() && "not cpp virtual call");
505
505
 
506
506
  VFunSet vfns;
507
- if (Options::ConnectVCallOnCHA)
507
+ if (Options::ConnectVCallOnCHA())
508
508
  getVFnsFromCHA(cs, vfns);
509
509
  else
510
510
  getVFnsFromPts(cs, target, vfns);