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
@@ -40,21 +40,21 @@ double SVFStat::timeOfBuildingSymbolTable = 0;
40
40
 
41
41
  SVFStat::SVFStat() : startTime(0), endTime(0)
42
42
  {
43
- assert((Options::ClockType == ClockType::Wall || Options::ClockType == ClockType::CPU)
43
+ assert((Options::ClockType() == ClockType::Wall || Options::ClockType() == ClockType::CPU)
44
44
  && "PTAStat: unknown clock type!");
45
45
  }
46
46
 
47
47
  double SVFStat::getClk(bool mark)
48
48
  {
49
- if (Options::MarkedClocksOnly && !mark) return 0.0;
49
+ if (Options::MarkedClocksOnly() && !mark) return 0.0;
50
50
 
51
- if (Options::ClockType == ClockType::Wall)
51
+ if (Options::ClockType() == ClockType::Wall)
52
52
  {
53
53
  struct timespec time;
54
54
  clock_gettime(CLOCK_MONOTONIC, &time);
55
55
  return (double)(time.tv_nsec + time.tv_sec * 1000000000) / 1000000.0;
56
56
  }
57
- else if (Options::ClockType == ClockType::CPU)
57
+ else if (Options::ClockType() == ClockType::CPU)
58
58
  {
59
59
  return CLOCK_IN_MS();
60
60
  }
@@ -255,4 +255,4 @@ void PTAStat::bitcastInstStat()
255
255
 
256
256
  generalNumMap["BitCastNumber"] = numberOfBitCast;
257
257
  }
258
- */
258
+ */
@@ -65,7 +65,7 @@ std::string SVFUtil::wrnMsg(std::string msg)
65
65
 
66
66
  void SVFUtil::writeWrnMsg(std::string msg)
67
67
  {
68
- if(Options::DisableWarn) return;
68
+ if(Options::DisableWarn()) return;
69
69
  outs() << wrnMsg(msg) << "\n";
70
70
  }
71
71
 
@@ -107,7 +107,7 @@ Z3Expr Z3Expr::AND(const Z3Expr &lhs, const Z3Expr &rhs)
107
107
  {
108
108
  Z3Expr expr = lhs && rhs;
109
109
  // check subexpression size and option limit
110
- if (Z3Expr::getExprSize(expr) > Options::MaxZ3Size)
110
+ if (Z3Expr::getExprSize(expr) > Options::MaxZ3Size())
111
111
  {
112
112
  getSolver().push();
113
113
  getSolver().add(expr.getExpr());
@@ -145,7 +145,7 @@ Z3Expr Z3Expr::OR(const Z3Expr &lhs, const Z3Expr &rhs)
145
145
  {
146
146
  Z3Expr expr = lhs || rhs;
147
147
  // check subexpression size and option limit
148
- if (Z3Expr::getExprSize(expr) > Options::MaxZ3Size)
148
+ if (Z3Expr::getExprSize(expr) > Options::MaxZ3Size())
149
149
  {
150
150
  getSolver().push();
151
151
  getSolver().add(expr.getExpr());
@@ -79,7 +79,7 @@ void AndersenBase::initialize()
79
79
  setGraph(consCG);
80
80
  /// Create statistic class
81
81
  stat = new AndersenStat(this);
82
- if (Options::ConsCGDotGraph)
82
+ if (Options::ConsCGDotGraph())
83
83
  consCG->dump("consCG_initial");
84
84
  }
85
85
 
@@ -89,10 +89,10 @@ void AndersenBase::initialize()
89
89
  void AndersenBase::finalize()
90
90
  {
91
91
  /// dump constraint graph if PAGDotGraph flag is enabled
92
- if (Options::ConsCGDotGraph)
92
+ if (Options::ConsCGDotGraph())
93
93
  consCG->dump("consCG_final");
94
94
 
95
- if (Options::PrintCGGraph)
95
+ if (Options::PrintCGGraph())
96
96
  consCG->print();
97
97
  BVDataPTAImpl::finalize();
98
98
  }
@@ -106,22 +106,22 @@ void AndersenBase::analyze()
106
106
  initialize();
107
107
 
108
108
  bool readResultsFromFile = false;
109
- if(!Options::ReadAnder.empty())
109
+ if(!Options::ReadAnder().empty())
110
110
  {
111
- readResultsFromFile = this->readFromFile(Options::ReadAnder);
111
+ readResultsFromFile = this->readFromFile(Options::ReadAnder());
112
112
  // Finalize the analysis
113
113
  PointerAnalysis::finalize();
114
114
  }
115
115
 
116
- if (!Options::WriteAnder.empty())
117
- this->writeObjVarToFile(Options::WriteAnder);
116
+ if (!Options::WriteAnder().empty())
117
+ this->writeObjVarToFile(Options::WriteAnder());
118
118
 
119
119
  if(!readResultsFromFile)
120
120
  {
121
121
  // Start solving constraints
122
122
  DBOUT(DGENERAL, outs() << SVFUtil::pasMsg("Start Solving Constraints\n"));
123
123
 
124
- bool limitTimerSet = SVFUtil::startAnalysisLimitTimer(Options::AnderTimeLimit);
124
+ bool limitTimerSet = SVFUtil::startAnalysisLimitTimer(Options::AnderTimeLimit());
125
125
 
126
126
  initWorklist();
127
127
  do
@@ -147,9 +147,9 @@ void AndersenBase::analyze()
147
147
 
148
148
  }
149
149
 
150
- if (!Options::WriteAnder.empty())
150
+ if (!Options::WriteAnder().empty())
151
151
  {
152
- this->writeToFile(Options::WriteAnder);
152
+ this->writeToFile(Options::WriteAnder());
153
153
  }
154
154
 
155
155
  if (!readResultsFromFile)
@@ -196,7 +196,7 @@ void Andersen::initialize()
196
196
  resetData();
197
197
  AndersenBase::initialize();
198
198
 
199
- if (Options::ClusterAnder) cluster();
199
+ if (Options::ClusterAnder()) cluster();
200
200
 
201
201
  /// Initialize worklist
202
202
  processAllAddr();
@@ -209,7 +209,7 @@ void Andersen::finalize()
209
209
  {
210
210
  // TODO: check -stat too.
211
211
  // TODO: broken
212
- if (Options::ClusterAnder)
212
+ if (Options::ClusterAnder())
213
213
  {
214
214
  Map<std::string, std::string> stats;
215
215
  const PTDataTy *ptd = getPTDataTy();
@@ -844,7 +844,7 @@ void Andersen::updateNodeRepAndSubs(NodeID nodeId, NodeID newRepId)
844
844
 
845
845
  void Andersen::cluster(void) const
846
846
  {
847
- assert(Options::MaxFieldLimit == 0 && "Andersen::cluster: clustering for Andersen's is currently only supported in field-insesnsitive analysis");
847
+ assert(Options::MaxFieldLimit() == 0 && "Andersen::cluster: clustering for Andersen's is currently only supported in field-insesnsitive analysis");
848
848
  Steensgaard *steens = Steensgaard::createSteensgaard(pag);
849
849
  std::vector<std::pair<unsigned, unsigned>> keys;
850
850
  for (SVFIR::iterator pit = pag->begin(); pit != pag->end(); ++pit)
@@ -108,7 +108,7 @@ NodeStack& AndersenSCD::SCCDetect()
108
108
  double mergeEnd = stat->getClk();
109
109
  timeOfSCCMerges += (mergeEnd - mergeStart)/TIMEINTERVAL;
110
110
 
111
- if (Options::DetectPWC)
111
+ if (Options::DetectPWC())
112
112
  {
113
113
  sccStart = stat->getClk();
114
114
  PWCDetect();
@@ -133,7 +133,7 @@ void AndersenSCD::PWCDetect()
133
133
  tmpSccCandidates.clear();
134
134
 
135
135
  // set scc edge type as direct edge
136
- bool pwcFlag = Options::DetectPWC;
136
+ bool pwcFlag = Options::DetectPWC();
137
137
  setDetectPWC(true);
138
138
 
139
139
  getSCCDetector()->find(sccCandidates);
@@ -150,7 +150,7 @@ void AndersenSCD::handleCopyGep(ConstraintNode* node)
150
150
  {
151
151
  NodeID nodeId = node->getId();
152
152
 
153
- if (!Options::DetectPWC && getSCCDetector()->subNodes(nodeId).count() > 1)
153
+ if (!Options::DetectPWC() && getSCCDetector()->subNodes(nodeId).count() > 1)
154
154
  processPWC(node);
155
155
  else if(isInWorklist(nodeId))
156
156
  Andersen::handleCopyGep(node);
@@ -49,20 +49,20 @@ void FlowSensitive::initialize()
49
49
  stat = new FlowSensitiveStat(this);
50
50
 
51
51
  // TODO: support clustered aux. Andersen's.
52
- assert(!Options::ClusterAnder && "FlowSensitive::initialize: clustering auxiliary Andersen's unsupported.");
52
+ assert(!Options::ClusterAnder() && "FlowSensitive::initialize: clustering auxiliary Andersen's unsupported.");
53
53
  ander = AndersenWaveDiff::createAndersenWaveDiff(getPAG());
54
54
 
55
55
  // If cluster option is not set, it will give us a no-mapping points-to set.
56
- assert(!(Options::ClusterFs && Options::PlainMappingFs)
56
+ assert(!(Options::ClusterFs() && Options::PlainMappingFs())
57
57
  && "FS::init: plain-mapping and cluster-fs are mutually exclusive.");
58
- if (Options::ClusterFs)
58
+ if (Options::ClusterFs())
59
59
  {
60
60
  cluster();
61
61
  // Reset the points-to cache although empty so the new mapping could
62
62
  // be applied to the inserted empty set.
63
63
  getPtCache().reset();
64
64
  }
65
- else if (Options::PlainMappingFs)
65
+ else if (Options::PlainMappingFs())
66
66
  {
67
67
  plainMap();
68
68
  // As above.
@@ -80,7 +80,7 @@ void FlowSensitive::initialize()
80
80
  */
81
81
  void FlowSensitive::analyze()
82
82
  {
83
- bool limitTimerSet = SVFUtil::startAnalysisLimitTimer(Options::FsTimeLimit);
83
+ bool limitTimerSet = SVFUtil::startAnalysisLimitTimer(Options::FsTimeLimit());
84
84
 
85
85
  /// Initialization for the Solver
86
86
  initialize();
@@ -120,7 +120,7 @@ void FlowSensitive::analyze()
120
120
  */
121
121
  void FlowSensitive::finalize()
122
122
  {
123
- if(Options::DumpVFG)
123
+ if(Options::DumpVFG())
124
124
  svfg->dump("fs_solved", true);
125
125
 
126
126
  NodeStack& nodeStack = WPASolver<SVFG*>::SCCDetect();
@@ -139,7 +139,7 @@ void FlowSensitive::finalize()
139
139
  }
140
140
 
141
141
  // TODO: check -stat too.
142
- if (Options::ClusterFs)
142
+ if (Options::ClusterFs())
143
143
  {
144
144
  Map<std::string, std::string> stats;
145
145
  const PTDataTy *ptd = getPTDataTy();
@@ -791,7 +791,7 @@ void FlowSensitive::cluster(void)
791
791
 
792
792
  void FlowSensitive::plainMap(void) const
793
793
  {
794
- assert(Options::NodeAllocStrat == NodeIDAllocator::Strategy::DENSE
794
+ assert(Options::NodeAllocStrat() == NodeIDAllocator::Strategy::DENSE
795
795
  && "FS::cluster: plain mapping requires dense allocation strategy.");
796
796
 
797
797
  const size_t numObjects = NodeIDAllocator::get()->getNumObjects();
@@ -44,7 +44,7 @@ using namespace std;
44
44
  void TypeAnalysis::initialize()
45
45
  {
46
46
  AndersenBase::initialize();
47
- if (Options::DumpICFG)
47
+ if (Options::DumpICFG())
48
48
  {
49
49
  icfg = SVFIR::getPAG()->getICFG();
50
50
  icfg->dump("icfg_initial");
@@ -39,7 +39,7 @@ VersionedFlowSensitive::VersionedFlowSensitive(SVFIR *_pag, PTATY type)
39
39
  if (SVFUtil::isa<ObjVar>(it->second)) equivalentObject[it->first] = it->first;
40
40
  }
41
41
 
42
- assert(!Options::OPTSVFG && "VFS: -opt-svfg not currently supported with VFS.");
42
+ assert(!Options::OPTSVFG() && "VFS: -opt-svfg not currently supported with VFS.");
43
43
  }
44
44
 
45
45
  void VersionedFlowSensitive::initialize()
@@ -121,7 +121,7 @@ void VersionedFlowSensitive::meldLabel(void)
121
121
  {
122
122
  double start = stat->getClk(true);
123
123
 
124
- assert(Options::VersioningThreads > 0 && "VFS::meldLabel: number of versioning threads must be > 0!");
124
+ assert(Options::VersioningThreads() > 0 && "VFS::meldLabel: number of versioning threads must be > 0!");
125
125
 
126
126
  // Nodes which have at least one object on them given a prelabel + the Andersen's points-to
127
127
  // set of interest so we don't keep calling getPts. For Store nodes, we'll fill that in, for
@@ -414,7 +414,7 @@ void VersionedFlowSensitive::meldLabel(void)
414
414
  };
415
415
 
416
416
  std::vector<std::thread> workers;
417
- for (unsigned i = 0; i < Options::VersioningThreads; ++i) workers.push_back(std::thread(meldVersionWorker, i));
417
+ for (unsigned i = 0; i < Options::VersioningThreads(); ++i) workers.push_back(std::thread(meldVersionWorker, i));
418
418
  for (std::thread &worker : workers) worker.join();
419
419
 
420
420
  delete[] versionMutexes;
@@ -777,7 +777,7 @@ void VersionedFlowSensitive::cluster(void)
777
777
  {
778
778
  unsigned occ = 1;
779
779
  unsigned v = pit->first;
780
- if (Options::PredictPtOcc && pag->getObject(v) != nullptr) occ = stmtReliance[v].size() + 1;
780
+ if (Options::PredictPtOcc() && pag->getObject(v) != nullptr) occ = stmtReliance[v].size() + 1;
781
781
  assert(occ != 0);
782
782
  keys.push_back(std::make_pair(v, occ));
783
783
  }
@@ -70,7 +70,8 @@ void WPAPass::runOnModule(SVFIR* pag)
70
70
  {
71
71
  for (u32_t i = 0; i<= PointerAnalysis::Default_PTA; i++)
72
72
  {
73
- if (Options::PASelected.isSet(i))
73
+ PointerAnalysis::PTATY iPtaTy = static_cast<PointerAnalysis::PTATY>(i);
74
+ if (Options::PASelected(iPtaTy))
74
75
  runPointerAnalysis(pag, i);
75
76
  }
76
77
  assert(!ptaVector.empty() && "No pointer analysis is specified.\n");
@@ -115,17 +116,17 @@ void WPAPass::runPointerAnalysis(SVFIR* pag, u32_t kind)
115
116
 
116
117
  ptaVector.push_back(_pta);
117
118
  _pta->analyze();
118
- if (Options::AnderSVFG)
119
+ if (Options::AnderSVFG())
119
120
  {
120
121
  SVFGBuilder memSSA(true);
121
122
  assert(SVFUtil::isa<AndersenBase>(_pta) && "supports only andersen/steensgaard for pre-computed SVFG");
122
123
  SVFG *svfg = memSSA.buildFullSVFG((BVDataPTAImpl*)_pta);
123
124
  /// support mod-ref queries only for -ander
124
- if (Options::PASelected.isSet(PointerAnalysis::AndersenWaveDiff_WPA))
125
+ if (Options::PASelected(PointerAnalysis::AndersenWaveDiff_WPA))
125
126
  _svfg = svfg;
126
127
  }
127
128
 
128
- if (Options::PrintAliases)
129
+ if (Options::PrintAliases())
129
130
  PrintAliasPairs(_pta);
130
131
  }
131
132
 
@@ -172,7 +173,7 @@ AliasResult WPAPass::alias(const SVFValue* V1, const SVFValue* V2)
172
173
  if (pag->hasValueNode(V1) && pag->hasValueNode(V2))
173
174
  {
174
175
  /// Veto is used by default
175
- if (Options::AliasRule.getBits() == 0 || Options::AliasRule.isSet(Veto))
176
+ if (Options::AliasRule.nothingSet() || Options::AliasRule(Veto))
176
177
  {
177
178
  /// Return NoAlias if any PTA gives NoAlias result
178
179
  result = AliasResult::MayAlias;
@@ -184,7 +185,7 @@ AliasResult WPAPass::alias(const SVFValue* V1, const SVFValue* V2)
184
185
  result = AliasResult::NoAlias;
185
186
  }
186
187
  }
187
- else if (Options::AliasRule.isSet(Conservative))
188
+ else if (Options::AliasRule(Conservative))
188
189
  {
189
190
  /// Return MayAlias if any PTA gives MayAlias result
190
191
  result = AliasResult::NoAlias;
@@ -206,7 +207,7 @@ AliasResult WPAPass::alias(const SVFValue* V1, const SVFValue* V2)
206
207
  */
207
208
  ModRefInfo WPAPass::getModRefInfo(const CallSite callInst)
208
209
  {
209
- assert(Options::PASelected.isSet(PointerAnalysis::AndersenWaveDiff_WPA) && Options::AnderSVFG && "mod-ref query is only support with -ander and -svfg turned on");
210
+ assert(Options::PASelected(PointerAnalysis::AndersenWaveDiff_WPA) && Options::AnderSVFG() && "mod-ref query is only support with -ander and -svfg turned on");
210
211
  ICFG* icfg = _svfg->getPAG()->getICFG();
211
212
  const CallICFGNode* cbn = icfg->getCallICFGNode(callInst.getInstruction());
212
213
  return _svfg->getMSSA()->getMRGenerator()->getModRefInfo(cbn);
@@ -217,7 +218,7 @@ ModRefInfo WPAPass::getModRefInfo(const CallSite callInst)
217
218
  */
218
219
  ModRefInfo WPAPass::getModRefInfo(const CallSite callInst, const SVFValue* V)
219
220
  {
220
- assert(Options::PASelected.isSet(PointerAnalysis::AndersenWaveDiff_WPA) && Options::AnderSVFG && "mod-ref query is only support with -ander and -svfg turned on");
221
+ assert(Options::PASelected(PointerAnalysis::AndersenWaveDiff_WPA) && Options::AnderSVFG() && "mod-ref query is only support with -ander and -svfg turned on");
221
222
  ICFG* icfg = _svfg->getPAG()->getICFG();
222
223
  const CallICFGNode* cbn = icfg->getCallICFGNode(callInst.getInstruction());
223
224
  return _svfg->getMSSA()->getMRGenerator()->getModRefInfo(cbn, V);
@@ -228,7 +229,7 @@ ModRefInfo WPAPass::getModRefInfo(const CallSite callInst, const SVFValue* V)
228
229
  */
229
230
  ModRefInfo WPAPass::getModRefInfo(const CallSite callInst1, const CallSite callInst2)
230
231
  {
231
- assert(Options::PASelected.isSet(PointerAnalysis::AndersenWaveDiff_WPA) && Options::AnderSVFG && "mod-ref query is only support with -ander and -svfg turned on");
232
+ assert(Options::PASelected(PointerAnalysis::AndersenWaveDiff_WPA) && Options::AnderSVFG() && "mod-ref query is only support with -ander and -svfg turned on");
232
233
  ICFG* icfg = _svfg->getPAG()->getICFG();
233
234
  const CallICFGNode* cbn1 = icfg->getCallICFGNode(callInst1.getInstruction());
234
235
  const CallICFGNode* cbn2 = icfg->getCallICFGNode(callInst2.getInstruction());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.619",
3
+ "version": "1.0.621",
4
4
  "description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/tools/CFL/cfl.cpp CHANGED
@@ -35,29 +35,21 @@
35
35
  using namespace llvm;
36
36
  using namespace SVF;
37
37
 
38
- static cl::opt<bool>
39
- StandardCompileOpts("std-compile-opts",
40
- cl::desc("Include the standard compile time optimizations"));
41
-
42
- static llvm::cl::opt<std::string> InputFilename(llvm::cl::Positional,
43
- llvm::cl::desc("<input bitcode>"), llvm::cl::init("-"));
44
-
45
38
  int main(int argc, char ** argv)
46
39
  {
47
- int arg_num = 0;
48
40
  char **arg_value = new char*[argc];
49
41
  std::vector<std::string> moduleNameVec;
50
- LLVMUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
51
- cl::ParseCommandLineOptions(arg_num, arg_value,
52
- "CFL Reachability Analysis\n");
42
+ moduleNameVec = OptionBase::parseOptions(
43
+ argc, argv, "CFL Reachability Analysis", "[options] <input-bitcode...>"
44
+ );
53
45
 
54
- if (Options::WriteAnder == "ir_annotator")
46
+ if (Options::WriteAnder() == "ir_annotator")
55
47
  {
56
48
  LLVMModuleSet::getLLVMModuleSet()->preProcessBCs(moduleNameVec);
57
49
  }
58
50
 
59
51
  SVFIR* svfir = nullptr;
60
- if (Options::CFLGraph.empty())
52
+ if (Options::CFLGraph().empty())
61
53
  {
62
54
  SVFModule* svfModule = LLVMModuleSet::getLLVMModuleSet()->buildSVFModule(moduleNameVec);
63
55
  SVFIRBuilder builder(svfModule);
@@ -65,8 +57,10 @@ int main(int argc, char ** argv)
65
57
  } // if no dot form CFLGraph is specified, we use svfir from .bc.
66
58
 
67
59
  std::unique_ptr<CFLBase> cfl;
68
- if (Options::CFLSVFG)
60
+ if (Options::CFLSVFG())
69
61
  cfl = std::make_unique<CFLVF>(svfir);
62
+ else if (Options::POCRAlias())
63
+ cfl = std::make_unique<POCRAlias>(svfir);
70
64
  else
71
65
  cfl = std::make_unique<CFLAlias>(svfir); // if no svfg is specified, we use CFLAlias as the default one.
72
66
  cfl->analyze();
package/tools/DDA/dda.cpp CHANGED
@@ -14,45 +14,55 @@
14
14
  using namespace llvm;
15
15
  using namespace SVF;
16
16
 
17
- static cl::opt<bool>
18
- StandardCompileOpts("std-compile-opts",
19
- cl::desc("Include the standard compile time optimizations"));
20
-
21
- static llvm::cl::opt<std::string> InputFilename(llvm::cl::Positional,
22
- llvm::cl::desc("<input bitcode>"), llvm::cl::init("-"));
23
-
24
17
  //static cl::list<const PassInfo*, bool, PassNameParser>
25
18
  //PassList(cl::desc("Optimizations available:"));
26
19
 
27
- static cl::opt<bool> DAA("daa", cl::init(false),
28
- cl::desc("Demand-Driven Alias Analysis Pass"));
29
-
30
- static cl::opt<bool> REGPT("dreg", cl::init(false),
31
- cl::desc("Demand-driven regular points-to analysis"));
32
-
33
- static cl::opt<bool> RFINEPT("dref", cl::init(false),
34
- cl::desc("Demand-driven refinement points-to analysis"));
35
-
36
- static cl::opt<bool> ENABLEFIELD("fdaa", cl::init(false),
37
- cl::desc("enable field-sensitivity for demand-driven analysis"));
38
-
39
- static cl::opt<bool> ENABLECONTEXT("cdaa", cl::init(false),
40
- cl::desc("enable context-sensitivity for demand-driven analysis"));
41
-
42
- static cl::opt<bool> ENABLEFLOW("ldaa", cl::init(false),
43
- cl::desc("enable flow-sensitivity for demand-driven analysis"));
20
+ static Option<bool> DAA(
21
+ "daa",
22
+ "Demand-Driven Alias Analysis Pass",
23
+ false
24
+ );
25
+
26
+ static Option<bool> REGPT(
27
+ "dreg",
28
+ "Demand-driven regular points-to analysis",
29
+ false
30
+ );
31
+
32
+ static Option<bool> RFINEPT(
33
+ "dref",
34
+ "Demand-driven refinement points-to analysis",
35
+ false
36
+ );
37
+
38
+ static Option<bool> ENABLEFIELD(
39
+ "fdaa",
40
+ "enable field-sensitivity for demand-driven analysis",
41
+ false
42
+ );
43
+
44
+ static Option<bool> ENABLECONTEXT(
45
+ "cdaa",
46
+ "enable context-sensitivity for demand-driven analysis",
47
+ false
48
+ );
49
+
50
+ static Option<bool> ENABLEFLOW(
51
+ "ldaa",
52
+ "enable flow-sensitivity for demand-driven analysis",
53
+ false
54
+ );
44
55
 
45
56
  int main(int argc, char ** argv)
46
57
  {
47
58
 
48
- int arg_num = 0;
49
59
  char **arg_value = new char*[argc];
50
60
  std::vector<std::string> moduleNameVec;
51
- LLVMUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
52
- cl::ParseCommandLineOptions(arg_num, arg_value,
53
- "Demand-Driven Points-to Analysis\n");
61
+ moduleNameVec = OptionBase::parseOptions(
62
+ argc, argv, "Demand-Driven Points-to Analysis", "[options] <input-bitcode...>"
63
+ );
54
64
 
55
- if (Options::WriteAnder == "ir_annotator")
65
+ if (Options::WriteAnder() == "ir_annotator")
56
66
  {
57
67
  LLVMModuleSet::getLLVMModuleSet()->preProcessBCs(moduleNameVec);
58
68
  }
@@ -30,15 +30,13 @@
30
30
  #include "Graphs/SVFG.h"
31
31
  #include "WPA/Andersen.h"
32
32
  #include "SVF-LLVM/SVFIRBuilder.h"
33
+ #include "Util/CommandLine.h"
33
34
  #include "Util/Options.h"
34
35
 
35
36
  using namespace llvm;
36
37
  using namespace std;
37
38
  using namespace SVF;
38
39
 
39
- static llvm::cl::opt<std::string> InputFilename(llvm::cl::Positional,
40
- llvm::cl::desc("<input bitcode>"), llvm::cl::init("-"));
41
-
42
40
  /*!
43
41
  * An example to query alias results of two LLVM values
44
42
  */
@@ -145,14 +143,13 @@ void traverseOnVFG(const SVFG* vfg, SVFValue* val)
145
143
  int main(int argc, char ** argv)
146
144
  {
147
145
 
148
- int arg_num = 0;
149
146
  char **arg_value = new char*[argc];
150
147
  std::vector<std::string> moduleNameVec;
151
- LLVMUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
152
- cl::ParseCommandLineOptions(arg_num, arg_value,
153
- "Whole Program Points-to Analysis\n");
148
+ moduleNameVec = OptionBase::parseOptions(
149
+ argc, argv, "Whole Program Points-to Analysis", "[options] <input-bitcode...>"
150
+ );
154
151
 
155
- if (Options::WriteAnder == "ir_annotator")
152
+ if (Options::WriteAnder() == "ir_annotator")
156
153
  {
157
154
  LLVMModuleSet::getLLVMModuleSet()->preProcessBCs(moduleNameVec);
158
155
  }
@@ -155,7 +155,7 @@ LockResultValidator::LOCK_FLAG LockResultValidator::validateStmtInLock()
155
155
  CxtLockSetStr LS = instToCxtLockSet[inst];
156
156
  if(LS.size() != (*it).second.size())
157
157
  {
158
- if (Options::PrintValidRes)
158
+ if (Options::PrintValidRes())
159
159
  {
160
160
  outs() << errMsg("\nValidate Stmt's Lock : Wrong at: ") << inst->toString() << "\n";
161
161
  outs() << "Reason: The number of lock on current stmt is wrong\n";
@@ -185,7 +185,7 @@ LockResultValidator::LOCK_FLAG LockResultValidator::validateStmtInLock()
185
185
  std::string lockName = SVFUtil::getSVFCallSite(call).getArgOperand(0)->getName();
186
186
  if(!match(lockName, LS))
187
187
  {
188
- if(Options::PrintValidRes)
188
+ if(Options::PrintValidRes())
189
189
  {
190
190
  outs() << "\nValidate Stmt's Lock : Wrong at (" << inst->toString() << ")\n";
191
191
  outs() << "Reason: The number of lock on current stmt is wrong\n";
@@ -108,14 +108,14 @@ void MTAAnnotator::initialize(MHP* m, LockAnalysis* la)
108
108
  {
109
109
  mhp = m;
110
110
  lsa = la;
111
- if (!Options::AnnoFlag)
111
+ if (!Options::AnnoFlag())
112
112
  return;
113
113
  collectLoadStoreInst(mhp->getTCT()->getPTA()->getModule());
114
114
  }
115
115
 
116
116
  void MTAAnnotator::pruneThreadLocal(PointerAnalysis* pta)
117
117
  {
118
- bool AnnoLocal = Options::AnnoFlag & ANNO_LOCAL;
118
+ bool AnnoLocal = Options::AnnoFlag() & ANNO_LOCAL;
119
119
  if (!AnnoLocal)
120
120
  return;
121
121
 
@@ -202,8 +202,8 @@ void MTAAnnotator::pruneThreadLocal(PointerAnalysis* pta)
202
202
  void MTAAnnotator::pruneAliasMHP(PointerAnalysis* pta)
203
203
  {
204
204
 
205
- bool AnnoMHP = Options::AnnoFlag & ANNO_MHP;
206
- bool AnnoAlias = Options::AnnoFlag & ANNO_ALIAS;
205
+ bool AnnoMHP = Options::AnnoFlag() & ANNO_MHP;
206
+ bool AnnoAlias = Options::AnnoFlag() & ANNO_ALIAS;
207
207
 
208
208
  if (!AnnoMHP && !AnnoAlias)
209
209
  return;
@@ -280,7 +280,7 @@ void MTAAnnotator::pruneAliasMHP(PointerAnalysis* pta)
280
280
  }
281
281
  void MTAAnnotator::performAnnotate()
282
282
  {
283
- if (!Options::AnnoFlag)
283
+ if (!Options::AnnoFlag())
284
284
  return;
285
285
  for (InstSet::iterator it = storeset.begin(), eit = storeset.end(); it != eit; ++it)
286
286
  {