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
@@ -51,37 +51,37 @@ BVDataPTAImpl::BVDataPTAImpl(SVFIR* p, PointerAnalysis::PTATY type, bool alias_c
51
51
  {
52
52
  // Only maintain reverse points-to when the analysis is field-sensitive, as objects turning
53
53
  // field-insensitive is all it is used for.
54
- bool maintainRevPts = Options::MaxFieldLimit != 0;
55
- if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutDiffPTDataTy>(maintainRevPts);
56
- else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersDiffPTDataTy>(getPtCache(), maintainRevPts);
54
+ bool maintainRevPts = Options::MaxFieldLimit() != 0;
55
+ if (Options::ptDataBacking() == PTBackingType::Mutable) ptD = std::make_unique<MutDiffPTDataTy>(maintainRevPts);
56
+ else if (Options::ptDataBacking() == PTBackingType::Persistent) ptD = std::make_unique<PersDiffPTDataTy>(getPtCache(), maintainRevPts);
57
57
  else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
58
58
  }
59
59
  else if (type == Steensgaard_WPA)
60
60
  {
61
61
  // Steensgaard is only field-insensitive (for now?), so no reverse points-to.
62
- if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutDiffPTDataTy>(false);
63
- else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersDiffPTDataTy>(getPtCache(), false);
62
+ if (Options::ptDataBacking() == PTBackingType::Mutable) ptD = std::make_unique<MutDiffPTDataTy>(false);
63
+ else if (Options::ptDataBacking() == PTBackingType::Persistent) ptD = std::make_unique<PersDiffPTDataTy>(getPtCache(), false);
64
64
  else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
65
65
  }
66
66
  else if (type == FSSPARSE_WPA)
67
67
  {
68
- if (Options::INCDFPTData)
68
+ if (Options::INCDFPTData())
69
69
  {
70
- if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutIncDFPTDataTy>(false);
71
- else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersIncDFPTDataTy>(getPtCache(), false);
70
+ if (Options::ptDataBacking() == PTBackingType::Mutable) ptD = std::make_unique<MutIncDFPTDataTy>(false);
71
+ else if (Options::ptDataBacking() == PTBackingType::Persistent) ptD = std::make_unique<PersIncDFPTDataTy>(getPtCache(), false);
72
72
  else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
73
73
  }
74
74
  else
75
75
  {
76
- if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutDFPTDataTy>(false);
77
- else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersDFPTDataTy>(getPtCache(), false);
76
+ if (Options::ptDataBacking() == PTBackingType::Mutable) ptD = std::make_unique<MutDFPTDataTy>(false);
77
+ else if (Options::ptDataBacking() == PTBackingType::Persistent) ptD = std::make_unique<PersDFPTDataTy>(getPtCache(), false);
78
78
  else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
79
79
  }
80
80
  }
81
81
  else if (type == VFS_WPA)
82
82
  {
83
- if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutVersionedPTDataTy>(false);
84
- else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersVersionedPTDataTy>(getPtCache(), false);
83
+ if (Options::ptDataBacking() == PTBackingType::Mutable) ptD = std::make_unique<MutVersionedPTDataTy>(false);
84
+ else if (Options::ptDataBacking() == PTBackingType::Persistent) ptD = std::make_unique<PersVersionedPTDataTy>(getPtCache(), false);
85
85
  else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
86
86
  }
87
87
  else assert(false && "no points-to data available");
@@ -94,7 +94,7 @@ void BVDataPTAImpl::finalize()
94
94
  normalizePointsTo();
95
95
  PointerAnalysis::finalize();
96
96
 
97
- if (Options::ptDataBacking == PTBackingType::Persistent && print_stat)
97
+ if (Options::ptDataBacking() == PTBackingType::Persistent && print_stat)
98
98
  {
99
99
  std::string moduleName(pag->getModule()->getModuleIdentifier());
100
100
  std::vector<std::string> names = SVFUtil::split(moduleName,'/');
@@ -23,7 +23,7 @@ PointsTo::MappingPtr PointsTo::currentBestNodeMapping = nullptr;
23
23
  PointsTo::MappingPtr PointsTo::currentBestReverseNodeMapping = nullptr;
24
24
 
25
25
  PointsTo::PointsTo()
26
- : type(Options::PtType), nodeMapping(currentBestNodeMapping),
26
+ : type(Options::PtType()), nodeMapping(currentBestNodeMapping),
27
27
  reverseNodeMapping(currentBestReverseNodeMapping)
28
28
  {
29
29
  if (type == SBV) new (&sbv) SparseBitVector<>();
@@ -45,7 +45,7 @@ void DoubleFreeChecker::reportBug(ProgSlice* slice)
45
45
  << cs->getCallSite()->getSourceLoc() << ")\n";
46
46
  SVFUtil::errs() << "\t\t double free path: \n" << slice->evalFinalCond() << "\n";
47
47
  }
48
- if(Options::ValidateTests)
48
+ if(Options::ValidateTests())
49
49
  testsValidation(slice);
50
50
  }
51
51
 
@@ -175,7 +175,7 @@ void LeakChecker::reportBug(ProgSlice* slice)
175
175
  SVFUtil::errs() << "\t\t conditional free path: \n" << slice->evalFinalCond() << "\n";
176
176
  }
177
177
 
178
- if(Options::ValidateTests)
178
+ if(Options::ValidateTests())
179
179
  testsValidation(slice);
180
180
  }
181
181
 
@@ -72,7 +72,7 @@ void SaberCondAllocator::allocate(const SVFModule *M)
72
72
  }
73
73
  }
74
74
 
75
- if (Options::PrintPathCond)
75
+ if (Options::PrintPathCond())
76
76
  printPathCond();
77
77
 
78
78
  DBOUT(DGENERAL, outs() << pasMsg("path condition allocation ends\n"));
@@ -43,7 +43,7 @@ void SrcSnkDDA::initialize(SVFModule* module)
43
43
  SVFIR* pag = PAG::getPAG();
44
44
 
45
45
  AndersenWaveDiff* ander = AndersenWaveDiff::createAndersenWaveDiff(pag);
46
- if(Options::SABERFULLSVFG)
46
+ if(Options::SABERFULLSVFG())
47
47
  svfg = memSSA.buildFullSVFG(ander);
48
48
  else
49
49
  svfg = memSSA.buildPTROnlySVFG(ander);
@@ -62,7 +62,7 @@ void SrcSnkDDA::analyze(SVFModule* module)
62
62
 
63
63
  initialize(module);
64
64
 
65
- ContextCond::setMaxCxtLen(Options::CxtLimit);
65
+ ContextCond::setMaxCxtLen(Options::CxtLimit());
66
66
 
67
67
  for (SVFGNodeSetIter iter = sourcesBegin(), eiter = sourcesEnd();
68
68
  iter != eiter; ++iter)
@@ -94,7 +94,7 @@ void SrcSnkDDA::analyze(SVFModule* module)
94
94
 
95
95
  DBOUT(DSaber, outs() << "Backward process for slice:" << (*iter)->getId() << " (size = " << getCurSlice()->getBackwardSliceSize() << ")\n");
96
96
 
97
- if(Options::DumpSlice)
97
+ if(Options::DumpSlice())
98
98
  annotateSlice(_curSlice);
99
99
 
100
100
  if(_curSlice->AllPathReachableSolve())
@@ -133,7 +133,7 @@ bool SrcSnkDDA::isInAWrapper(const SVFGNode* src, CallSiteSet& csIdSet)
133
133
  else
134
134
  continue;
135
135
  // reaching maximum steps when traversing on SVFG to identify a memory allocation wrapper
136
- if (step++ > Options::MaxStepInWrapper)
136
+ if (step++ > Options::MaxStepInWrapper())
137
137
  return false;
138
138
 
139
139
  for (SVFGNode::const_iterator it = node->OutEdgeBegin(), eit =
@@ -295,7 +295,7 @@ void SrcSnkDDA::annotateSlice(ProgSlice* slice)
295
295
  void SrcSnkDDA::dumpSlices()
296
296
  {
297
297
 
298
- if(Options::DumpSlice)
298
+ if(Options::DumpSlice())
299
299
  const_cast<SVFG*>(getSVFG())->dump("Slice",true);
300
300
  }
301
301
 
@@ -82,7 +82,7 @@ void CHGBuilder::buildCHG()
82
82
  timeEnd = PTAStat::getClk(true);
83
83
  chg->buildingCHGTime = (timeEnd - timeStart) / TIMEINTERVAL;
84
84
 
85
- if (Options::DumpCHA)
85
+ if (Options::DumpCHA())
86
86
  chg->dump("cha");
87
87
  }
88
88
 
@@ -529,7 +529,7 @@ void DCHGraph::buildCHG(bool extend)
529
529
  }
530
530
  }
531
531
 
532
- if (Options::PrintDCHG)
532
+ if (Options::PrintDCHG())
533
533
  {
534
534
  print();
535
535
  }
@@ -111,7 +111,7 @@ void LLVMLoopAnalysis::buildSVFLoops(ICFG *icfg, std::vector<const Loop *> &llvm
111
111
  nodes.insert(icfg->getICFGNode(svfInst));
112
112
  }
113
113
  }
114
- SVFLoop *svf_loop = new SVFLoop(nodes, Options::LoopBound);
114
+ SVFLoop *svf_loop = new SVFLoop(nodes, Options::LoopBound());
115
115
  for (const auto &node: nodes)
116
116
  {
117
117
  icfg->addNodeToSVFLoop(node, svf_loop);
@@ -168,4 +168,4 @@ void LLVMLoopAnalysis::buildSVFLoops(ICFG *icfg, std::vector<const Loop *> &llvm
168
168
  }
169
169
  }
170
170
  }
171
- }
171
+ }
@@ -140,7 +140,7 @@ void LLVMModuleSet::build()
140
140
  buildFunToFunMap();
141
141
  buildGlobalDefToRepMap();
142
142
 
143
- if (Options::SVFMain)
143
+ if (Options::SVFMain())
144
144
  addSVFMain();
145
145
 
146
146
  createSVFDataStructure();
@@ -407,7 +407,7 @@ void LLVMModuleSet::loadModules(const std::vector<std::string> &moduleNameVec)
407
407
  {
408
408
 
409
409
  // We read SVFIR from LLVM IR
410
- if(Options::Graphtxt.getValue().empty())
410
+ if(Options::Graphtxt().empty())
411
411
  {
412
412
  if(moduleNameVec.empty())
413
413
  {
@@ -418,7 +418,7 @@ void LLVMModuleSet::loadModules(const std::vector<std::string> &moduleNameVec)
418
418
  }
419
419
  // We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR
420
420
  else
421
- SVFModule::setPagFromTXT(Options::Graphtxt.getValue());
421
+ SVFModule::setPagFromTXT(Options::Graphtxt());
422
422
 
423
423
  //
424
424
  // To avoid the following type bugs (t1 != t3) when parsing multiple modules,
@@ -439,6 +439,12 @@ void LLVMModuleSet::loadModules(const std::vector<std::string> &moduleNameVec)
439
439
 
440
440
  for (const std::string& moduleName : moduleNameVec)
441
441
  {
442
+ if (!LLVMUtil::isIRFile(moduleName))
443
+ {
444
+ SVFUtil::errs() << "not an IR file: " << moduleName << std::endl;
445
+ abort();
446
+ }
447
+
442
448
  SMDiagnostic Err;
443
449
  std::unique_ptr<Module> mod = parseIRFile(moduleName, Err, *cxts);
444
450
  if (mod == nullptr)
@@ -1174,4 +1180,4 @@ StInfo* LLVMModuleSet::collectSimpleTypeInfo(StInfo * stinfo, const Type* ty)
1174
1180
  stinfo->setNumOfFieldsAndElems(1,1);
1175
1181
 
1176
1182
  return stinfo;
1177
- }
1183
+ }
@@ -144,18 +144,18 @@ SVFIR* SVFIRBuilder::build()
144
144
  pag->setNodeNumAfterPAGBuild(pag->getTotalNodeNum());
145
145
 
146
146
  // dump SVFIR
147
- if (Options::PAGDotGraph)
147
+ if (Options::PAGDotGraph())
148
148
  pag->dump("svfir_initial");
149
149
 
150
150
  // print to command line of the SVFIR graph
151
- if (Options::PAGPrint)
151
+ if (Options::PAGPrint())
152
152
  pag->print();
153
153
 
154
154
  // dump ICFG
155
- if (Options::DumpICFG)
155
+ if (Options::DumpICFG())
156
156
  pag->getICFG()->dump("icfg_initial");
157
157
 
158
- if (Options::LoopAnalysis)
158
+ if (Options::LoopAnalysis())
159
159
  {
160
160
  LLVMLoopAnalysis loopAnalysis;
161
161
  loopAnalysis.build(pag->getICFG());
@@ -281,7 +281,7 @@ bool SVFIRBuilder::computeGepOffset(const User *V, LocationSet& ls)
281
281
  //The int value of the current index operand
282
282
  const ConstantInt* op = SVFUtil::dyn_cast<ConstantInt>(offsetVal);
283
283
 
284
- // if Options::ModelConsts is disabled. We will treat whole array as one,
284
+ // if Options::ModelConsts() is disabled. We will treat whole array as one,
285
285
  // but we can distinguish different field of an array of struct, e.g. s[1].f1 is differet from s[0].f2
286
286
  if(const ArrayType* arrTy = SVFUtil::dyn_cast<ArrayType>(gepTy))
287
287
  {
@@ -513,7 +513,7 @@ void SVFIRBuilder::InitialGlobal(const GlobalVariable *gvar, Constant *C,
513
513
  }
514
514
  else if (SVFUtil::isa<ConstantArray, ConstantStruct>(C))
515
515
  {
516
- if(cppUtil::isValVtbl(gvar) && !Options::VtableInSVFIR)
516
+ if(cppUtil::isValVtbl(gvar) && !Options::VtableInSVFIR())
517
517
  return;
518
518
  for (u32_t i = 0, e = C->getNumOperands(); i != e; i++)
519
519
  {
@@ -523,7 +523,7 @@ void SVFIRBuilder::InitialGlobal(const GlobalVariable *gvar, Constant *C,
523
523
  }
524
524
  else if(ConstantData* data = SVFUtil::dyn_cast<ConstantData>(C))
525
525
  {
526
- if(Options::ModelConsts)
526
+ if(Options::ModelConsts())
527
527
  {
528
528
  if(ConstantDataSequential* seq = SVFUtil::dyn_cast<ConstantDataSequential>(data))
529
529
  {
@@ -1540,7 +1540,7 @@ void SVFIRBuilder::updateCallGraph(PTACallGraph* callgraph)
1540
1540
  }
1541
1541
 
1542
1542
  // dump SVFIR
1543
- if (Options::PAGDotGraph)
1543
+ if (Options::PAGDotGraph())
1544
1544
  pag->dump("svfir_final");
1545
1545
  }
1546
1546
 
@@ -213,7 +213,7 @@ void SymbolTableBuilder::buildMemModel(SVFModule* svfModule)
213
213
  }
214
214
 
215
215
  symInfo->totalSymNum = NodeIDAllocator::get()->endSymbolAllocation();
216
- if (Options::SymTabPrint)
216
+ if (Options::SymTabPrint())
217
217
  {
218
218
  symInfo->dump();
219
219
  }
@@ -514,7 +514,7 @@ void SymbolTableBuilder::handleGlobalInitializerCE(const Constant *C)
514
514
  }
515
515
  else if(const ConstantData* data = SVFUtil::dyn_cast<ConstantData>(C))
516
516
  {
517
- if(Options::ModelConsts)
517
+ if(Options::ModelConsts())
518
518
  {
519
519
  if(const ConstantDataSequential* seq = SVFUtil::dyn_cast<ConstantDataSequential>(data))
520
520
  {
@@ -559,7 +559,7 @@ ObjTypeInfo* SymbolTableBuilder::createObjTypeInfo(const Value *val)
559
559
  if (refTy)
560
560
  {
561
561
  Type* objTy = getPtrElementType(refTy);
562
- ObjTypeInfo* typeInfo = new ObjTypeInfo(LLVMModuleSet::getLLVMModuleSet()->getSVFType(objTy), Options::MaxFieldLimit);
562
+ ObjTypeInfo* typeInfo = new ObjTypeInfo(LLVMModuleSet::getLLVMModuleSet()->getSVFType(objTy), Options::MaxFieldLimit());
563
563
  initTypeInfo(typeInfo,val, objTy);
564
564
  return typeInfo;
565
565
  }
@@ -748,7 +748,7 @@ u32_t SymbolTableBuilder::getObjSize(const Type* ety)
748
748
  /// Number of flattenned elements of an array or struct
749
749
  u32_t SymbolTableBuilder::getNumOfFlattenElements(const Type* T)
750
750
  {
751
- if(Options::ModelArrays)
751
+ if(Options::ModelArrays())
752
752
  return getOrAddSVFTypeInfo(T)->getNumOfFlattenElements();
753
753
  else
754
754
  return getOrAddSVFTypeInfo(T)->getNumOfFlattenFields();
@@ -757,4 +757,4 @@ u32_t SymbolTableBuilder::getNumOfFlattenElements(const Type* T)
757
757
  StInfo* SymbolTableBuilder::getOrAddSVFTypeInfo(const Type* T)
758
758
  {
759
759
  return LLVMModuleSet::getLLVMModuleSet()->getSVFType(T)->getTypeInfo();
760
- }
760
+ }
@@ -276,7 +276,7 @@ RetPE* SVFIR::addRetPE(NodeID src, NodeID dst, const CallICFGNode* cs, const Fun
276
276
  */
277
277
  SVFStmt* SVFIR::addBlackHoleAddrStmt(NodeID node)
278
278
  {
279
- if(Options::HandBlackHole)
279
+ if(Options::HandBlackHole())
280
280
  return pag->addAddrStmt(pag->getBlackHoleNode(), node);
281
281
  else
282
282
  return pag->addCopyStmt(pag->getNullPtr(), node);
@@ -430,7 +430,7 @@ NodeID SVFIR::getGepObjVar(const MemObj* obj, const LocationSet& ls)
430
430
  LocationSet newLS = pag->getSymbolInfo()->getModulusOffset(obj,ls);
431
431
 
432
432
  // Base and first field are the same memory location.
433
- if (Options::FirstFieldEqBase && newLS.accumulateConstantFieldIdx() == 0) return base;
433
+ if (Options::FirstFieldEqBase() && newLS.accumulateConstantFieldIdx() == 0) return base;
434
434
 
435
435
  NodeLocationSetMap::iterator iter = GepObjVarMap.find(std::make_pair(base, newLS));
436
436
  if (iter == GepObjVarMap.end())
@@ -450,7 +450,7 @@ NodeID SVFIR::addGepObjNode(const MemObj* obj, const LocationSet& ls)
450
450
  assert(0==GepObjVarMap.count(std::make_pair(base, ls))
451
451
  && "this node should not be created before");
452
452
 
453
- NodeID gepId = NodeIDAllocator::get()->allocateGepObjectId(base, ls.accumulateConstantFieldIdx(), Options::MaxFieldLimit);
453
+ NodeID gepId = NodeIDAllocator::get()->allocateGepObjectId(base, ls.accumulateConstantFieldIdx(), Options::MaxFieldLimit());
454
454
  GepObjVarMap[std::make_pair(base, ls)] = gepId;
455
455
  GepObjVar *node = new GepObjVar(obj, gepId, ls);
456
456
  memToFieldsMap[base].set(gepId);
@@ -719,7 +719,7 @@ bool SVFIR::isValidTopLevelPtr(const SVFVar* node)
719
719
  */
720
720
  void SVFIR::handleBlackHole(bool b)
721
721
  {
722
- Options::HandBlackHole = b;
722
+ Options::HandBlackHole.setValue(b);
723
723
  }
724
724
 
725
725
 
@@ -74,7 +74,7 @@ const std::string AddrStmt::toString() const
74
74
  std::string str;
75
75
  std::stringstream rawstr(str);
76
76
  rawstr << "AddrStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
77
- if (Options::ShowSVFIRValue)
77
+ if (Options::ShowSVFIRValue())
78
78
  {
79
79
  rawstr << "\n";
80
80
  rawstr << getValue()->toString();
@@ -87,7 +87,7 @@ const std::string CopyStmt::toString() const
87
87
  std::string str;
88
88
  std::stringstream rawstr(str);
89
89
  rawstr << "CopyStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
90
- if (Options::ShowSVFIRValue)
90
+ if (Options::ShowSVFIRValue())
91
91
  {
92
92
  rawstr << "\n";
93
93
  rawstr << getValue()->toString();
@@ -103,7 +103,7 @@ const std::string PhiStmt::toString() const
103
103
  for(u32_t i = 0; i < getOpVarNum(); i++)
104
104
  rawstr << "[Var" << getOpVar(i)->getId() << ", ICFGNode" << getOpICFGNode(i)->getId() << "],";
105
105
  rawstr << ")]\t";
106
- if (Options::ShowSVFIRValue)
106
+ if (Options::ShowSVFIRValue())
107
107
  {
108
108
  rawstr << "\n";
109
109
  rawstr << getValue()->toString();
@@ -119,7 +119,7 @@ const std::string SelectStmt::toString() const
119
119
  for(const SVFVar* op : getOpndVars())
120
120
  rawstr << op->getId() << ",";
121
121
  rawstr << ")]\t";
122
- if (Options::ShowSVFIRValue)
122
+ if (Options::ShowSVFIRValue())
123
123
  {
124
124
  rawstr << "\n";
125
125
  rawstr << getValue()->toString();
@@ -132,7 +132,7 @@ const std::string CmpStmt::toString() const
132
132
  std::string str;
133
133
  std::stringstream rawstr(str);
134
134
  rawstr << "CmpStmt: [Var" << getResID() << " <-- (Var" << getOpVarID(0) << " predicate" << getPredicate() << " Var" << getOpVarID(1) << ")]\t";
135
- if (Options::ShowSVFIRValue)
135
+ if (Options::ShowSVFIRValue())
136
136
  {
137
137
  rawstr << "\n";
138
138
  rawstr << getValue()->toString();
@@ -145,7 +145,7 @@ const std::string BinaryOPStmt::toString() const
145
145
  std::string str;
146
146
  std::stringstream rawstr(str);
147
147
  rawstr << "BinaryOPStmt: [Var" << getResID() << " <-- (Var" << getOpVarID(0) << " opcode" << getOpcode() << " Var" << getOpVarID(1) << ")]\t";
148
- if (Options::ShowSVFIRValue)
148
+ if (Options::ShowSVFIRValue())
149
149
  {
150
150
  rawstr << "\n";
151
151
  rawstr << getValue()->toString();
@@ -158,7 +158,7 @@ const std::string UnaryOPStmt::toString() const
158
158
  std::string str;
159
159
  std::stringstream rawstr(str);
160
160
  rawstr << "UnaryOPStmt: [Var" << getResID() << " <-- " << " opcode" << getOpcode() << " Var" << getOpVarID() << "]\t";
161
- if (Options::ShowSVFIRValue)
161
+ if (Options::ShowSVFIRValue())
162
162
  {
163
163
  rawstr << "\n";
164
164
  rawstr << getValue()->toString();
@@ -178,7 +178,7 @@ const std::string BranchStmt::toString() const
178
178
  for(u32_t i = 0; i < getNumSuccessors(); i++)
179
179
  rawstr << "Successor " << i << " ICFGNode" << getSuccessor(i)->getId() << " ";
180
180
 
181
- if (Options::ShowSVFIRValue)
181
+ if (Options::ShowSVFIRValue())
182
182
  {
183
183
  rawstr << "\n";
184
184
  rawstr << getValue()->toString();
@@ -192,7 +192,7 @@ const std::string LoadStmt::toString() const
192
192
  std::string str;
193
193
  std::stringstream rawstr(str);
194
194
  rawstr << "LoadStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
195
- if (Options::ShowSVFIRValue)
195
+ if (Options::ShowSVFIRValue())
196
196
  {
197
197
  rawstr << "\n";
198
198
  rawstr << getValue()->toString();
@@ -205,7 +205,7 @@ const std::string StoreStmt::toString() const
205
205
  std::string str;
206
206
  std::stringstream rawstr(str);
207
207
  rawstr << "StoreStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
208
- if (Options::ShowSVFIRValue)
208
+ if (Options::ShowSVFIRValue())
209
209
  {
210
210
  rawstr << "\n";
211
211
  rawstr << getValue()->toString();
@@ -218,7 +218,7 @@ const std::string GepStmt::toString() const
218
218
  std::string str;
219
219
  std::stringstream rawstr(str);
220
220
  rawstr << "GepStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
221
- if (Options::ShowSVFIRValue)
221
+ if (Options::ShowSVFIRValue())
222
222
  {
223
223
  rawstr << "\n";
224
224
  rawstr << getValue()->toString();
@@ -231,7 +231,7 @@ const std::string CallPE::toString() const
231
231
  std::string str;
232
232
  std::stringstream rawstr(str);
233
233
  rawstr << "CallPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
234
- if (Options::ShowSVFIRValue)
234
+ if (Options::ShowSVFIRValue())
235
235
  {
236
236
  rawstr << "\n";
237
237
  rawstr << getValue()->toString();
@@ -244,7 +244,7 @@ const std::string RetPE::toString() const
244
244
  std::string str;
245
245
  std::stringstream rawstr(str);
246
246
  rawstr << "RetPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
247
- if (Options::ShowSVFIRValue)
247
+ if (Options::ShowSVFIRValue())
248
248
  {
249
249
  rawstr << "\n";
250
250
  rawstr << getValue()->toString();
@@ -257,7 +257,7 @@ const std::string TDForkPE::toString() const
257
257
  std::string str;
258
258
  std::stringstream rawstr(str);
259
259
  rawstr << "TDForkPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
260
- if (Options::ShowSVFIRValue)
260
+ if (Options::ShowSVFIRValue())
261
261
  {
262
262
  rawstr << "\n";
263
263
  rawstr << getValue()->toString();
@@ -270,7 +270,7 @@ const std::string TDJoinPE::toString() const
270
270
  std::string str;
271
271
  std::stringstream rawstr(str);
272
272
  rawstr << "TDJoinPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
273
- if (Options::ShowSVFIRValue)
273
+ if (Options::ShowSVFIRValue())
274
274
  {
275
275
  rawstr << "\n";
276
276
  rawstr << getValue()->toString();
@@ -321,4 +321,4 @@ const SVFVar* BranchStmt::getCondition() const
321
321
  {
322
322
  //assert(isConditional() && "this is a unconditional branch");
323
323
  return cond;
324
- }
324
+ }
@@ -107,7 +107,7 @@ const std::string ValVar::toString() const
107
107
  std::string str;
108
108
  std::stringstream rawstr(str);
109
109
  rawstr << "ValVar ID: " << getId();
110
- if (Options::ShowSVFIRValue)
110
+ if (Options::ShowSVFIRValue())
111
111
  {
112
112
  rawstr << "\n";
113
113
  rawstr << value->toString();
@@ -120,7 +120,7 @@ const std::string ObjVar::toString() const
120
120
  std::string str;
121
121
  std::stringstream rawstr(str);
122
122
  rawstr << "ObjVar ID: " << getId();
123
- if (Options::ShowSVFIRValue)
123
+ if (Options::ShowSVFIRValue())
124
124
  {
125
125
  rawstr << "\n";
126
126
  rawstr << value->toString();
@@ -133,7 +133,7 @@ const std::string GepValVar::toString() const
133
133
  std::string str;
134
134
  std::stringstream rawstr(str);
135
135
  rawstr << "GepValVar ID: " << getId() << " with offset_" + std::to_string(getConstantFieldIdx());
136
- if (Options::ShowSVFIRValue)
136
+ if (Options::ShowSVFIRValue())
137
137
  {
138
138
  rawstr << "\n";
139
139
  rawstr << value->toString();
@@ -146,7 +146,7 @@ const std::string GepObjVar::toString() const
146
146
  std::string str;
147
147
  std::stringstream rawstr(str);
148
148
  rawstr << "GepObjVar ID: " << getId() << " with offset_" + std::to_string(ls.accumulateConstantFieldIdx());
149
- if (Options::ShowSVFIRValue)
149
+ if (Options::ShowSVFIRValue())
150
150
  {
151
151
  rawstr << "\n";
152
152
  rawstr << value->toString();
@@ -159,7 +159,7 @@ const std::string FIObjVar::toString() const
159
159
  std::string str;
160
160
  std::stringstream rawstr(str);
161
161
  rawstr << "FIObjVar ID: " << getId() << " (base object)";
162
- if (Options::ShowSVFIRValue)
162
+ if (Options::ShowSVFIRValue())
163
163
  {
164
164
  rawstr << "\n";
165
165
  rawstr << value->toString();
@@ -66,7 +66,7 @@ const StInfo* SymbolTableInfo::getTypeInfo(const SVFType* T) const
66
66
  */
67
67
  ObjTypeInfo* SymbolTableInfo::createObjTypeInfo(const SVFType* type)
68
68
  {
69
- ObjTypeInfo* typeInfo = new ObjTypeInfo(type, Options::MaxFieldLimit);
69
+ ObjTypeInfo* typeInfo = new ObjTypeInfo(type, Options::MaxFieldLimit());
70
70
  if(type && type->isPointerTy())
71
71
  {
72
72
  typeInfo->setFlag(ObjTypeInfo::HEAP_OBJ);
@@ -83,7 +83,7 @@ SymbolTableInfo* SymbolTableInfo::SymbolInfo()
83
83
  if (symInfo == nullptr)
84
84
  {
85
85
  symInfo = new SymbolTableInfo();
86
- symInfo->setModelConstants(Options::ModelConsts);
86
+ symInfo->setModelConstants(Options::ModelConsts());
87
87
  }
88
88
  return symInfo;
89
89
  }
@@ -146,7 +146,7 @@ const MemObj* SymbolTableInfo::createDummyObj(SymID symId, const SVFType* type)
146
146
  /// Number of flattenned elements of an array or struct
147
147
  u32_t SymbolTableInfo::getNumOfFlattenElements(const SVFType* T)
148
148
  {
149
- if(Options::ModelArrays)
149
+ if(Options::ModelArrays())
150
150
  return getTypeInfo(T)->getNumOfFlattenElements();
151
151
  else
152
152
  return getTypeInfo(T)->getNumOfFlattenFields();
@@ -155,7 +155,7 @@ u32_t SymbolTableInfo::getNumOfFlattenElements(const SVFType* T)
155
155
  /// Flatterned offset information of a struct or an array including its array fields
156
156
  u32_t SymbolTableInfo::getFlattenedElemIdx(const SVFType* T, u32_t origId)
157
157
  {
158
- if(Options::ModelArrays)
158
+ if(Options::ModelArrays())
159
159
  {
160
160
  const std::vector<u32_t>& so = getTypeInfo(T)->getFlattenedElemIdxVec();
161
161
  assert ((unsigned)origId < so.size() && !so.empty() && "element index out of bounds, can't get flattened index!");
@@ -186,7 +186,7 @@ const SVFType* SymbolTableInfo::getOriginalElemType(const SVFType* baseType, u32
186
186
  /// Return the type of a flattened element given a flattened index
187
187
  const SVFType* SymbolTableInfo::getFlatternedElemType(const SVFType* baseType, u32_t flatten_idx)
188
188
  {
189
- if(Options::ModelArrays)
189
+ if(Options::ModelArrays())
190
190
  {
191
191
  const std::vector<const SVFType*>& so = getTypeInfo(baseType)->getFlattenElementTypes();
192
192
  assert (flatten_idx < so.size() && !so.empty() && "element index out of bounds or struct opaque type, can't get element type!");
@@ -365,7 +365,7 @@ bool ObjTypeInfo::isNonPtrFieldObj(const LocationSet& ls)
365
365
  if (SVFUtil::isa<SVFStructType, SVFArrayType>(ety))
366
366
  {
367
367
  u32_t sz = 0;
368
- if(Options::ModelArrays)
368
+ if(Options::ModelArrays())
369
369
  sz = SymbolTableInfo::SymbolInfo()->getTypeInfo(ety)->getFlattenElementTypes().size();
370
370
  else
371
371
  sz = SymbolTableInfo::SymbolInfo()->getTypeInfo(ety)->getFlattenFieldTypes().size();