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
@@ -5,12 +5,12 @@
5
5
 
6
6
  #include <sstream>
7
7
  #include "FastCluster/fastcluster.h"
8
+ #include "Util/CommandLine.h"
8
9
  #include "Util/PTAStat.h"
9
10
  #include "MemoryModel/PointerAnalysisImpl.h"
10
11
  #include "Util/NodeIDAllocator.h"
11
12
  #include "MSSA/MemSSA.h"
12
13
  #include "WPA/WPAPass.h"
13
- #include <llvm/Support/CommandLine.h> // for command line options
14
14
 
15
15
  namespace SVF
16
16
  {
@@ -21,244 +21,245 @@ class Options
21
21
  public:
22
22
  Options(void) = delete;
23
23
 
24
- static const llvm::cl::opt<enum PTAStat::ClockType> ClockType;
24
+ static const OptionMap<enum PTAStat::ClockType> ClockType;
25
25
 
26
26
  /// If set, only return the clock when getClk is called as getClk(true).
27
27
  /// Retrieving the clock is slow but it should be fine for a few calls.
28
28
  /// This is good for benchmarking when we don't need to know how long processLoad
29
29
  /// takes, for example (many calls), but want to know things like total solve time.
30
30
  /// Should be used only to affect getClk, not CLOCK_IN_MS.
31
- static const llvm::cl::opt<bool> MarkedClocksOnly;
31
+ static const Option<bool> MarkedClocksOnly;
32
32
 
33
33
  /// Allocation strategy to be used by the node ID allocator.
34
34
  /// Currently dense, seq, or debug.
35
- static const llvm::cl::opt<SVF::NodeIDAllocator::Strategy> NodeAllocStrat;
35
+ static const OptionMap<SVF::NodeIDAllocator::Strategy> NodeAllocStrat;
36
36
 
37
37
  /// Maximum number of field derivations for an object.
38
- static const llvm::cl::opt<unsigned> MaxFieldLimit;
38
+ static const Option<u32_t> MaxFieldLimit;
39
39
 
40
40
  /// Whether to stage Andersen's with Steensgaard and cluster based on that data.
41
- static const llvm::cl::opt<bool> ClusterAnder;
41
+ static const Option<bool> ClusterAnder;
42
42
 
43
43
  /// Whether to cluster FS or VFS with the auxiliary Andersen's.
44
- static const llvm::cl::opt<bool> ClusterFs;
44
+ static const Option<bool> ClusterFs;
45
45
 
46
46
  /// Use an explicitly plain mapping with flow-sensitive (not null).
47
- static const llvm::cl::opt<bool> PlainMappingFs;
47
+ static const Option<bool> PlainMappingFs;
48
48
 
49
49
  /// Type of points-to set to use for all analyses.
50
- static const llvm::cl::opt<PointsTo::Type> PtType;
50
+ static const OptionMap<PointsTo::Type> PtType;
51
51
 
52
52
  /// Clustering method for ClusterFs/ClusterAnder.
53
53
  /// TODO: we can separate it into two options, and make Clusterer::cluster take in a method
54
54
  /// argument rather than plugging Options::ClusterMethod *inside* Clusterer::cluster
55
55
  /// directly, but it seems we will always want single anyway, and this is for testing.
56
- static const llvm::cl::opt<enum hclust_fast_methods> ClusterMethod;
56
+ static const OptionMap<enum hclust_fast_methods> ClusterMethod;
57
57
 
58
58
  /// Cluster partitions separately.
59
- static const llvm::cl::opt<bool> RegionedClustering;
59
+ static const Option<bool> RegionedClustering;
60
60
 
61
61
  /// Align identifiers in each region to a word.
62
- static const llvm::cl::opt<bool> RegionAlign;
62
+ static const Option<bool> RegionAlign;
63
63
 
64
64
  /// Predict occurences of points-to sets in the staged points-to set to
65
65
  /// weigh more common points-to sets as more important.
66
- static const llvm::cl::opt<bool> PredictPtOcc;
66
+ static const Option<bool> PredictPtOcc;
67
67
 
68
68
  /// PTData type.
69
- static const llvm::cl::opt<BVDataPTAImpl::PTBackingType> ptDataBacking;
69
+ static const OptionMap<BVDataPTAImpl::PTBackingType> ptDataBacking;
70
70
 
71
71
  /// Time limit for the main phase (i.e., the actual solving) of FS analyses.
72
- static const llvm::cl::opt<unsigned> FsTimeLimit;
72
+ static const Option<u32_t> FsTimeLimit;
73
73
 
74
74
  /// Time limit for the Andersen's analyses.
75
- static const llvm::cl::opt<unsigned> AnderTimeLimit;
75
+ static const Option<u32_t> AnderTimeLimit;
76
76
 
77
77
  /// Number of threads for the versioning phase.
78
- static const llvm::cl::opt<unsigned> VersioningThreads;
78
+ static const Option<u32_t> VersioningThreads;
79
79
 
80
80
  // ContextDDA.cpp
81
- static const llvm::cl::opt<unsigned long long> CxtBudget;
81
+ static const Option<u32_t> CxtBudget;
82
82
 
83
83
  // DDAClient.cpp
84
- static const llvm::cl::opt<bool> SingleLoad;
85
- static const llvm::cl::opt<bool> DumpFree;
86
- static const llvm::cl::opt<bool> DumpUninitVar;
87
- static const llvm::cl::opt<bool> DumpUninitPtr;
88
- static const llvm::cl::opt<bool> DumpSUPts;
89
- static const llvm::cl::opt<bool> DumpSUStore;
90
- static const llvm::cl::opt<bool> MallocOnly;
91
- static const llvm::cl::opt<bool> TaintUninitHeap;
92
- static const llvm::cl::opt<bool> TaintUninitStack;
84
+ static const Option<bool> SingleLoad;
85
+ static const Option<bool> DumpFree;
86
+ static const Option<bool> DumpUninitVar;
87
+ static const Option<bool> DumpUninitPtr;
88
+ static const Option<bool> DumpSUPts;
89
+ static const Option<bool> DumpSUStore;
90
+ static const Option<bool> MallocOnly;
91
+ static const Option<bool> TaintUninitHeap;
92
+ static const Option<bool> TaintUninitStack;
93
93
 
94
94
  // DDAPass.cpp
95
- static const llvm::cl::opt<unsigned> MaxPathLen;
96
- static const llvm::cl::opt<unsigned> MaxContextLen;
97
- static const llvm::cl::opt<unsigned> MaxStepInWrapper;
98
- static const llvm::cl::opt<std :: string> UserInputQuery;
99
- static const llvm::cl::opt<bool> InsenRecur;
100
- static const llvm::cl::opt<bool> InsenCycle;
101
- static const llvm::cl::opt<bool> PrintCPts;
102
- static const llvm::cl::opt<bool> PrintQueryPts;
103
- static const llvm::cl::opt<bool> WPANum;
104
- static llvm::cl::bits<PointerAnalysis::PTATY> DDASelected;
95
+ static const Option<u32_t> MaxPathLen;
96
+ static const Option<u32_t> MaxContextLen;
97
+ static const Option<u32_t> MaxStepInWrapper;
98
+ static const Option<std::string> UserInputQuery;
99
+ static const Option<bool> InsenRecur;
100
+ static const Option<bool> InsenCycle;
101
+ static const Option<bool> PrintCPts;
102
+ static const Option<bool> PrintQueryPts;
103
+ static const Option<bool> WPANum;
104
+ static OptionMultiple<PointerAnalysis::PTATY> DDASelected;
105
105
 
106
106
  // FlowDDA.cpp
107
- static const llvm::cl::opt<unsigned long long> FlowBudget;
107
+ static const Option<u32_t> FlowBudget;
108
108
 
109
109
  // Offline constraint graph (OfflineConsG.cpp)
110
- static const llvm::cl::opt<bool> OCGDotGraph;
110
+ static const Option<bool> OCGDotGraph;
111
111
 
112
112
  // Program Assignment Graph for pointer analysis (SVFIR.cpp)
113
- static llvm::cl::opt<bool> HandBlackHole;
114
- static const llvm::cl::opt<bool> FirstFieldEqBase;
113
+ static Option<bool> HandBlackHole;
114
+ static const Option<bool> FirstFieldEqBase;
115
115
 
116
116
  // SVFG optimizer (SVFGOPT.cpp)
117
- static const llvm::cl::opt<bool> ContextInsensitive;
118
- static const llvm::cl::opt<bool> KeepAOFI;
119
- static const llvm::cl::opt<std::string> SelfCycle;
117
+ static const Option<bool> ContextInsensitive;
118
+ static const Option<bool> KeepAOFI;
119
+ static const Option<std::string> SelfCycle;
120
120
 
121
121
  // Sparse value-flow graph (VFG.cpp)
122
- static const llvm::cl::opt<bool> DumpVFG;
122
+ static const Option<bool> DumpVFG;
123
123
 
124
124
  // Location set for modeling abstract memory object (LocationSet.cpp)
125
- static const llvm::cl::opt<bool> SingleStride;
125
+ static const Option<bool> SingleStride;
126
126
 
127
127
  // Base class of pointer analyses (PointerAnalysis.cpp)
128
- static const llvm::cl::opt<bool> TypePrint;
129
- static const llvm::cl::opt<bool> FuncPointerPrint;
130
- static const llvm::cl::opt<bool> PTSPrint;
131
- static const llvm::cl::opt<bool> PTSAllPrint;
132
- static const llvm::cl::opt<bool> PStat;
133
- static const llvm::cl::opt<unsigned> StatBudget;
134
- static const llvm::cl::opt<bool> PAGDotGraph;
135
- static const llvm::cl::opt<bool> ShowSVFIRValue;
136
- static const llvm::cl::opt<bool> DumpICFG;
137
- static const llvm::cl::opt<bool> CallGraphDotGraph;
138
- static const llvm::cl::opt<bool> PAGPrint;
139
- static const llvm::cl::opt<unsigned> IndirectCallLimit;
140
- static const llvm::cl::opt<bool> UsePreCompFieldSensitive;
141
- static const llvm::cl::opt<bool> EnableAliasCheck;
142
- static const llvm::cl::opt<bool> EnableThreadCallGraph;
143
- static const llvm::cl::opt<bool> ConnectVCallOnCHA;
128
+ static const Option<bool> TypePrint;
129
+ static const Option<bool> FuncPointerPrint;
130
+ static const Option<bool> PTSPrint;
131
+ static const Option<bool> PTSAllPrint;
132
+ static const Option<bool> PStat;
133
+ static const Option<u32_t> StatBudget;
134
+ static const Option<bool> PAGDotGraph;
135
+ static const Option<bool> ShowSVFIRValue;
136
+ static const Option<bool> DumpICFG;
137
+ static const Option<bool> CallGraphDotGraph;
138
+ static const Option<bool> PAGPrint;
139
+ static const Option<u32_t> IndirectCallLimit;
140
+ static const Option<bool> UsePreCompFieldSensitive;
141
+ static const Option<bool> EnableAliasCheck;
142
+ static const Option<bool> EnableThreadCallGraph;
143
+ static const Option<bool> ConnectVCallOnCHA;
144
144
 
145
145
  // PointerAnalysisImpl.cpp
146
- static const llvm::cl::opt<bool> INCDFPTData;
146
+ static const Option<bool> INCDFPTData;
147
147
 
148
148
  // Memory region (MemRegion.cpp)
149
- static const llvm::cl::opt<bool> IgnoreDeadFun;
149
+ static const Option<bool> IgnoreDeadFun;
150
150
 
151
151
  // Base class of pointer analyses (MemSSA.cpp)
152
- static const llvm::cl::opt<bool> DumpMSSA;
153
- static const llvm::cl::opt<std :: string> MSSAFun;
152
+ static const Option<bool> DumpMSSA;
153
+ static const Option<std::string> MSSAFun;
154
154
  // static const llvm::cl::opt<string> MSSAFun;
155
- static const llvm::cl::opt<MemSSA::MemPartition> MemPar;
155
+ static const OptionMap<MemSSA::MemPartition> MemPar;
156
156
 
157
157
  // SVFG builder (SVFGBuilder.cpp)
158
- static const llvm::cl::opt<bool> SVFGWithIndirectCall;
159
- static llvm::cl::opt<bool> OPTSVFG;
158
+ static const Option<bool> SVFGWithIndirectCall;
159
+ static Option<bool> OPTSVFG;
160
160
 
161
- static const llvm::cl::opt<std :: string> WriteSVFG;
162
- static const llvm::cl::opt<std :: string> ReadSVFG;
161
+ static const Option<std::string> WriteSVFG;
162
+ static const Option<std::string> ReadSVFG;
163
163
 
164
164
  // FSMPTA.cpp
165
- static const llvm::cl::opt<bool> UsePCG;
166
- static const llvm::cl::opt<bool> IntraLock;
167
- static const llvm::cl::opt<bool> ReadPrecisionTDEdge;
168
- static const llvm::cl::opt<u32_t> AddModelFlag;
165
+ static const Option<bool> UsePCG;
166
+ static const Option<bool> IntraLock;
167
+ static const Option<bool> ReadPrecisionTDEdge;
168
+ static const Option<u32_t> AddModelFlag;
169
169
 
170
170
  // LockAnalysis.cpp
171
- static const llvm::cl::opt<bool> PrintLockSpan;
171
+ static const Option<bool> PrintLockSpan;
172
172
 
173
173
  // MHP.cpp
174
- static const llvm::cl::opt<bool> PrintInterLev;
175
- static const llvm::cl::opt<bool> DoLockAnalysis;
174
+ static const Option<bool> PrintInterLev;
175
+ static const Option<bool> DoLockAnalysis;
176
176
 
177
177
  // MTA.cpp
178
- static const llvm::cl::opt<bool> AndersenAnno;
179
- static const llvm::cl::opt<bool> FSAnno;
178
+ static const Option<bool> AndersenAnno;
179
+ static const Option<bool> FSAnno;
180
180
 
181
181
  // MTAAnnotator.cpp
182
- static const llvm::cl::opt<u32_t> AnnoFlag;
182
+ static const Option<u32_t> AnnoFlag;
183
183
 
184
184
  // MTAResultValidator.cpp
185
- static const llvm::cl::opt<bool> PrintValidRes;
185
+ static const Option<bool> PrintValidRes;
186
186
 
187
- static const llvm::cl::opt<bool> LockValid;
187
+ static const Option<bool> LockValid;
188
188
  //MTAStat.cpp
189
- static const llvm::cl::opt<bool> AllPairMHP;
189
+ static const Option<bool> AllPairMHP;
190
190
 
191
191
  // PCG.cpp
192
- //const llvm::cl::opt<bool> TDPrint
192
+ //const Option<bool> TDPrint
193
193
 
194
194
  // TCT.cpp
195
- static const llvm::cl::opt<bool> TCTDotGraph;
195
+ static const Option<bool> TCTDotGraph;
196
196
 
197
197
  // LeakChecker.cpp
198
- static const llvm::cl::opt<bool> ValidateTests;
198
+ static const Option<bool> ValidateTests;
199
199
 
200
200
  // Source-sink analyzer (SrcSnkDDA.cpp)
201
- static const llvm::cl::opt<bool> DumpSlice;
202
- static const llvm::cl::opt<unsigned> CxtLimit;
201
+ static const Option<bool> DumpSlice;
202
+ static const Option<u32_t> CxtLimit;
203
203
 
204
204
  // CHG.cpp
205
- static const llvm::cl::opt<bool> DumpCHA;
205
+ static const Option<bool> DumpCHA;
206
206
 
207
207
  // DCHG.cpp
208
- static const llvm::cl::opt<bool> PrintDCHG;
208
+ static const Option<bool> PrintDCHG;
209
209
 
210
210
  // LLVMModule.cpp
211
- static const llvm::cl::opt<std::string> Graphtxt;
212
- static const llvm::cl::opt<bool> SVFMain;
211
+ static const Option<std::string> Graphtxt;
212
+ static const Option<bool> SVFMain;
213
213
 
214
214
  // SymbolTableInfo.cpp
215
- static const llvm::cl::opt<bool> LocMemModel;
216
- static const llvm::cl::opt<bool> ModelConsts;
217
- static const llvm::cl::opt<bool> ModelArrays;
218
- static const llvm::cl::opt<bool> SymTabPrint;
215
+ static const Option<bool> LocMemModel;
216
+ static const Option<bool> ModelConsts;
217
+ static const Option<bool> ModelArrays;
218
+ static const Option<bool> SymTabPrint;
219
219
 
220
220
  // Conditions.cpp
221
- static const llvm::cl::opt<unsigned> MaxZ3Size;
221
+ static const Option<u32_t> MaxZ3Size;
222
222
 
223
223
  // SaberCondAllocator.cpp
224
- static const llvm::cl::opt<bool> PrintPathCond;
224
+ static const Option<bool> PrintPathCond;
225
225
 
226
226
  // SVFUtil.cpp
227
- static const llvm::cl::opt<bool> DisableWarn;
227
+ static const Option<bool> DisableWarn;
228
228
 
229
229
  // Andersen.cpp
230
- static const llvm::cl::opt<bool> ConsCGDotGraph;
231
- static const llvm::cl::opt<bool> BriefConsCGDotGraph;
232
- static const llvm::cl::opt<bool> PrintCGGraph;
233
- // static const llvm::cl::opt<string> WriteAnder;
234
- static const llvm::cl::opt<std :: string> WriteAnder;
235
- // static const llvm::cl::opt<string> ReadAnder;
236
- static const llvm::cl::opt<std :: string> ReadAnder;
237
- static const llvm::cl::opt<bool> DiffPts;
238
- static llvm::cl::opt<bool> DetectPWC;
239
- static const llvm::cl::opt<bool> VtableInSVFIR;
230
+ static const Option<bool> ConsCGDotGraph;
231
+ static const Option<bool> BriefConsCGDotGraph;
232
+ static const Option<bool> PrintCGGraph;
233
+ // static const Option<string> WriteAnder;
234
+ static const Option<std::string> WriteAnder;
235
+ // static const Option<string> ReadAnder;
236
+ static const Option<std::string> ReadAnder;
237
+ static const Option<bool> DiffPts;
238
+ static Option<bool> DetectPWC;
239
+ static const Option<bool> VtableInSVFIR;
240
240
 
241
241
  // WPAPass.cpp
242
- static const llvm::cl::opt<bool> AnderSVFG;
243
- static const llvm::cl::opt<bool> SABERFULLSVFG;
244
- static const llvm::cl::opt<bool> PrintAliases;
245
- static llvm::cl::bits<PointerAnalysis::PTATY> PASelected;
246
- static llvm::cl::bits<WPAPass::AliasCheckRule> AliasRule;
242
+ static const Option<bool> AnderSVFG;
243
+ static const Option<bool> SABERFULLSVFG;
244
+ static const Option<bool> PrintAliases;
245
+ static OptionMultiple<PointerAnalysis::PTATY> PASelected;
246
+ static OptionMultiple<WPAPass::AliasCheckRule> AliasRule;
247
247
 
248
248
  // DOTGraphTraits
249
- static const llvm::cl::opt<bool> ShowHiddenNode;
249
+ static const Option<bool> ShowHiddenNode;
250
250
 
251
251
  // CFL option
252
- static const llvm::cl::opt<std::string> GrammarFilename;
253
- static const llvm::cl::opt<std::string> CFLGraph;
254
- static const llvm::cl::opt<bool> PrintCFL;
255
- static const llvm::cl::opt<bool> FlexSymMap;
256
- static const llvm::cl::opt<bool> PEGTransfer;
257
- static const llvm::cl::opt<bool> CFLSVFG;
252
+ static const Option<std::string> GrammarFilename;
253
+ static const Option<std::string> CFLGraph;
254
+ static const Option<bool> PrintCFL;
255
+ static const Option<bool> FlexSymMap;
256
+ static const Option<bool> PEGTransfer;
257
+ static const Option<bool> CFLSVFG;
258
+ static const Option<bool> POCRAlias;
258
259
 
259
260
  // Loop Analysis
260
- static const llvm::cl::opt<bool> LoopAnalysis;
261
- static const llvm::cl::opt<unsigned> LoopBound;
261
+ static const Option<bool> LoopAnalysis;
262
+ static const Option<u32_t> LoopBound;
262
263
  };
263
264
  } // namespace SVF
264
265
 
@@ -231,7 +231,7 @@ public:
231
231
 
232
232
  void setDetectPWC(bool flag)
233
233
  {
234
- Options::DetectPWC = flag;
234
+ Options::DetectPWC.setValue(flag);
235
235
  }
236
236
 
237
237
  protected:
@@ -242,7 +242,7 @@ protected:
242
242
  /// Handle diff points-to set.
243
243
  virtual inline void computeDiffPts(NodeID id)
244
244
  {
245
- if (Options::DiffPts)
245
+ if (Options::DiffPts())
246
246
  {
247
247
  NodeID rep = sccRepNode(id);
248
248
  getDiffPTDataTy()->computeDiffPts(rep, getDiffPTDataTy()->getPts(rep));
@@ -251,7 +251,7 @@ protected:
251
251
  virtual inline const PointsTo& getDiffPts(NodeID id)
252
252
  {
253
253
  NodeID rep = sccRepNode(id);
254
- if (Options::DiffPts)
254
+ if (Options::DiffPts())
255
255
  return getDiffPTDataTy()->getDiffPts(rep);
256
256
  else
257
257
  return getPTDataTy()->getPts(rep);
@@ -260,7 +260,7 @@ protected:
260
260
  /// Handle propagated points-to set.
261
261
  inline void updatePropaPts(NodeID dstId, NodeID srcId)
262
262
  {
263
- if (!Options::DiffPts)
263
+ if (!Options::DiffPts())
264
264
  return;
265
265
  NodeID srcRep = sccRepNode(srcId);
266
266
  NodeID dstRep = sccRepNode(dstId);
@@ -268,7 +268,7 @@ protected:
268
268
  }
269
269
  inline void clearPropaPts(NodeID src)
270
270
  {
271
- if (Options::DiffPts)
271
+ if (Options::DiffPts())
272
272
  {
273
273
  NodeID rep = sccRepNode(src);
274
274
  getDiffPTDataTy()->clearPropaPts(rep);
@@ -659,9 +659,9 @@ void SVFIR2ItvExeState::translateGep(const GepStmt *gep)
659
659
  {
660
660
  VAddrs gepAddrs;
661
661
  s32_t ub = offsetPair.second;
662
- if (offsetPair.second - offsetPair.first > (s32_t)Options::MaxFieldLimit - 1)
662
+ if (offsetPair.second - offsetPair.first > (s32_t)Options::MaxFieldLimit() - 1)
663
663
  {
664
- ub = offsetPair.first + (s32_t)Options::MaxFieldLimit - 1;
664
+ ub = offsetPair.first + (s32_t)Options::MaxFieldLimit() - 1;
665
665
  }
666
666
  for (s32_t i = offsetPair.first; i <= ub; i++)
667
667
  {
@@ -208,14 +208,14 @@ void CFLAlias::finalize()
208
208
  {
209
209
  numOfChecks = solver->numOfChecks;
210
210
 
211
- if(Options::PrintCFL == true)
211
+ if(Options::PrintCFL() == true)
212
212
  {
213
- if (Options::CFLGraph.empty())
213
+ if (Options::CFLGraph().empty())
214
214
  svfir->dump("IR");
215
215
  grammar->dump("Grammar");
216
216
  graph->dump("CFLGraph");
217
217
  }
218
- if (Options::CFLGraph.empty())
218
+ if (Options::CFLGraph().empty())
219
219
  PointerAnalysis::finalize();
220
220
  }
221
221
 
@@ -225,7 +225,7 @@ void CFLAlias::solve()
225
225
  double start = stat->getClk(true);
226
226
 
227
227
  solver->solve();
228
- if (Options::CFLGraph.empty())
228
+ if (Options::CFLGraph().empty())
229
229
  {
230
230
  while (updateCallGraph(svfir->getIndirectCallsites()))
231
231
  {
@@ -236,4 +236,40 @@ void CFLAlias::solve()
236
236
 
237
237
  double end = stat->getClk(true);
238
238
  timeOfSolving += (end - start) / TIMEINTERVAL;
239
+ }
240
+
241
+ double POCRAlias::timeOfBuildCFLData = 0; // Time of building CFLData from CFLGraph
242
+
243
+ void POCRAlias::initialize()
244
+ {
245
+ stat = new CFLStat(this);
246
+
247
+ // Build CFL Grammar
248
+ buildCFLGrammar();
249
+
250
+ // Build CFL Graph
251
+ buildCFLGraph();
252
+
253
+ // Build CFL Data
254
+ buildCFLData();
255
+
256
+ // Normalize CFL Grammar
257
+ normalizeCFLGrammar();
258
+
259
+ // Initialize sovler
260
+ solver = new CFLSolver(graph, grammar);
261
+ }
262
+
263
+
264
+ void POCRAlias::buildCFLData()
265
+ {
266
+ // Start building CFLGraph
267
+ double start = stat->getClk(true);
268
+
269
+ CFLDataBuilder cflDataBuilder = CFLDataBuilder(graph);
270
+ _cflData = cflDataBuilder.build();
271
+
272
+ // Get time of build graph
273
+ double end = stat->getClk(true);
274
+ timeOfBuildCFLData += (end - start) / TIMEINTERVAL;
239
275
  }
@@ -51,7 +51,7 @@ void CFLBase::buildCFLGrammar()
51
51
  // Start building grammar
52
52
  double start = stat->getClk(true);
53
53
 
54
- GrammarBuilder grammarBuilder = GrammarBuilder(Options::GrammarFilename);
54
+ GrammarBuilder grammarBuilder = GrammarBuilder(Options::GrammarFilename());
55
55
  grammarBase = grammarBuilder.build();
56
56
 
57
57
  // Get time of build grammar
@@ -65,18 +65,18 @@ void CFLBase::buildCFLGraph()
65
65
  double start = stat->getClk(true);
66
66
 
67
67
  AliasCFLGraphBuilder cflGraphBuilder = AliasCFLGraphBuilder();
68
- if (Options::CFLGraph.empty()) // built from svfir
68
+ if (Options::CFLGraph().empty()) // built from svfir
69
69
  {
70
70
  PointerAnalysis::initialize();
71
71
  ConstraintGraph *consCG = new ConstraintGraph(svfir);
72
- if (Options::PEGTransfer)
72
+ if (Options::PEGTransfer())
73
73
  graph = cflGraphBuilder.buildBiPEGgraph(consCG, grammarBase->getStartKind(), grammarBase, svfir);
74
74
  else
75
75
  graph = cflGraphBuilder.buildBigraph(consCG, grammarBase->getStartKind(), grammarBase);
76
76
  delete consCG;
77
77
  }
78
78
  else
79
- graph = cflGraphBuilder.buildFromDot(Options::CFLGraph, grammarBase);
79
+ graph = cflGraphBuilder.buildFromDot(Options::CFLGraph(), grammarBase);
80
80
 
81
81
  // Check CFL Graph and Grammar are accordance with grammar
82
82
  CFLGramGraphChecker cflChecker = CFLGramGraphChecker();
@@ -139,7 +139,7 @@ CFLGraph * CFLGraphBuilder::buildFromDot(std::string fileName, GrammarBase *gram
139
139
  }
140
140
  else
141
141
  {
142
- if(Options::FlexSymMap == true)
142
+ if(Options::FlexSymMap() == true)
143
143
  {
144
144
  label2KindMap.insert({matches.str(3), current++});
145
145
  cflGraph->addCFLEdge(src, dst, label2KindMap[matches.str(3)]);
@@ -517,4 +517,4 @@ CFLGraph* VFCFLGraphBuilder::buildBiPEGgraph(ConstraintGraph *graph, Kind startK
517
517
  }
518
518
 
519
519
 
520
- } // end of SVF namespace
520
+ } // end of SVF namespace
package/lib/CFL/CFLVF.cpp CHANGED
@@ -37,7 +37,7 @@ void CFLVF::buildCFLGraph()
37
37
  {
38
38
  // Build CFL Graph
39
39
  VFCFLGraphBuilder cflGraphBuilder = VFCFLGraphBuilder();
40
- if (Options::CFLGraph.empty()) // built from svfir
40
+ if (Options::CFLGraph().empty()) // built from svfir
41
41
  {
42
42
  PointerAnalysis::initialize();
43
43
  AndersenWaveDiff* ander = AndersenWaveDiff::createAndersenWaveDiff(pag);
@@ -45,7 +45,7 @@ void CFLVF::buildCFLGraph()
45
45
  graph = cflGraphBuilder.buildBigraph(svfg, grammarBase->getStartKind(), grammarBase);
46
46
  }
47
47
  else
48
- graph = cflGraphBuilder.buildFromDot(Options::CFLGraph, grammarBase);
48
+ graph = cflGraphBuilder.buildFromDot(Options::CFLGraph(), grammarBase);
49
49
 
50
50
  // Check CFL Graph and Grammar are accordance with grammar
51
51
  CFLGramGraphChecker cflChecker = CFLGramGraphChecker();
@@ -69,11 +69,11 @@ void CFLVF::initialize()
69
69
 
70
70
  void CFLVF::finalize()
71
71
  {
72
- if(Options::PrintCFL == true)
72
+ if(Options::PrintCFL())
73
73
  {
74
- if (Options::CFLGraph.empty())
74
+ if (Options::CFLGraph().empty())
75
75
  svfir->dump("IR");
76
76
  grammar->dump("Grammar");
77
77
  graph->dump("CFLGraph");
78
78
  }
79
- }
79
+ }
@@ -76,7 +76,7 @@ const CxtPtSet& ContextDDA::computeDDAPts(const CxtVar& var)
76
76
  {
77
77
 
78
78
  resetQuery();
79
- LocDPItem::setMaxBudget(Options::CxtBudget);
79
+ LocDPItem::setMaxBudget(Options::CxtBudget());
80
80
 
81
81
  NodeID id = var.get_id();
82
82
  PAGNode* node = getPAG()->getGNode(id);