svf-tools 1.0.897 → 1.0.899

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 (639) hide show
  1. package/SVF-doxygen/html/AbstractExecution_8cpp.html +1 -1
  2. package/SVF-doxygen/html/AbstractExecution_8cpp_source.html +1638 -1659
  3. package/SVF-doxygen/html/AbstractExecution_8h_source.html +49 -49
  4. package/SVF-doxygen/html/AbstractPointsToDS_8h_source.html +1 -1
  5. package/SVF-doxygen/html/AccessPath_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/AccessPath_8h_source.html +2 -2
  7. package/SVF-doxygen/html/AddressValue_8h_source.html +1 -1
  8. package/SVF-doxygen/html/AndersenPWC_8h_source.html +4 -4
  9. package/SVF-doxygen/html/AndersenSCD_8cpp_source.html +3 -3
  10. package/SVF-doxygen/html/AndersenSFR_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/AndersenStat_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/AndersenWaveDiff_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/Andersen_8cpp_source.html +5 -5
  14. package/SVF-doxygen/html/Andersen_8h_source.html +3 -3
  15. package/SVF-doxygen/html/BoundedZ3Expr_8cpp_source.html +4 -4
  16. package/SVF-doxygen/html/BoundedZ3Expr_8h_source.html +400 -380
  17. package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +29 -28
  18. package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +1 -1
  19. package/SVF-doxygen/html/CDGBuilder_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/CDGBuilder_8h_source.html +1 -1
  21. package/SVF-doxygen/html/CDG_8h_source.html +2 -2
  22. package/SVF-doxygen/html/CFGNormalizer_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/CFGNormalizer_8h_source.html +3 -3
  24. package/SVF-doxygen/html/CFGrammar_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/CFGrammar_8h_source.html +3 -3
  26. package/SVF-doxygen/html/CFLAlias_8h_source.html +2 -2
  27. package/SVF-doxygen/html/CFLGraphBuilder_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/CFLGraphBuilder_8h_source.html +1 -1
  29. package/SVF-doxygen/html/CFLSVFGBuilder_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/CFLSVFGBuilder_8h_source.html +2 -2
  31. package/SVF-doxygen/html/CFLSolver_8h_source.html +1 -1
  32. package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/CHG_8h_source.html +2 -2
  34. package/SVF-doxygen/html/CSC_8cpp_source.html +2 -2
  35. package/SVF-doxygen/html/CSC_8h_source.html +3 -3
  36. package/SVF-doxygen/html/ConditionalPT_8h_source.html +3 -3
  37. package/SVF-doxygen/html/ConsExeState_8cpp_source.html +6 -6
  38. package/SVF-doxygen/html/ConsExeState_8h_source.html +6 -6
  39. package/SVF-doxygen/html/ConsGEdge_8h_source.html +2 -2
  40. package/SVF-doxygen/html/ConsG_8cpp_source.html +14 -14
  41. package/SVF-doxygen/html/ConsG_8h_source.html +4 -4
  42. package/SVF-doxygen/html/ContextDDA_8cpp_source.html +4 -4
  43. package/SVF-doxygen/html/ContextDDA_8h_source.html +2 -2
  44. package/SVF-doxygen/html/CoreBitVector_8h_source.html +1 -1
  45. package/SVF-doxygen/html/CppUtil_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/CppUtil_8h_source.html +1 -1
  47. package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
  48. package/SVF-doxygen/html/DCHG_8cpp_source.html +3 -3
  49. package/SVF-doxygen/html/DCHG_8h_source.html +2 -2
  50. package/SVF-doxygen/html/DDAClient_8cpp_source.html +2 -2
  51. package/SVF-doxygen/html/DDAClient_8h_source.html +3 -3
  52. package/SVF-doxygen/html/DDAPass_8cpp_source.html +2 -2
  53. package/SVF-doxygen/html/DDAPass_8h_source.html +1 -1
  54. package/SVF-doxygen/html/DDAVFSolver_8h_source.html +2 -2
  55. package/SVF-doxygen/html/DPItem_8h_source.html +2 -2
  56. package/SVF-doxygen/html/ExeState_8cpp_source.html +1 -1
  57. package/SVF-doxygen/html/ExeState_8h_source.html +1 -1
  58. package/SVF-doxygen/html/FSMPTA_8cpp_source.html +1 -1
  59. package/SVF-doxygen/html/FSMPTA_8h_source.html +2 -2
  60. package/SVF-doxygen/html/FlowDDA_8cpp_source.html +4 -4
  61. package/SVF-doxygen/html/FlowDDA_8h_source.html +1 -1
  62. package/SVF-doxygen/html/FlowSensitiveStat_8cpp_source.html +2 -2
  63. package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +6 -6
  64. package/SVF-doxygen/html/FlowSensitive_8h_source.html +2 -2
  65. package/SVF-doxygen/html/GeneralType_8h.html +8 -0
  66. package/SVF-doxygen/html/GeneralType_8h_source.html +110 -102
  67. package/SVF-doxygen/html/GenericGraph_8h_source.html +2 -2
  68. package/SVF-doxygen/html/GrammarBuilder_8h_source.html +1 -1
  69. package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +1 -1
  70. package/SVF-doxygen/html/ICFGBuilder_8h_source.html +1 -1
  71. package/SVF-doxygen/html/ICFGEdge_8h_source.html +3 -3
  72. package/SVF-doxygen/html/ICFGNode_8h_source.html +1 -1
  73. package/SVF-doxygen/html/ICFGSimplification_8cpp_source.html +2 -2
  74. package/SVF-doxygen/html/ICFGStat_8h_source.html +1 -1
  75. package/SVF-doxygen/html/ICFG_8cpp_source.html +3 -3
  76. package/SVF-doxygen/html/ICFG_8h_source.html +2 -2
  77. package/SVF-doxygen/html/IRGraph_8cpp_source.html +2 -2
  78. package/SVF-doxygen/html/IRGraph_8h_source.html +2 -2
  79. package/SVF-doxygen/html/IntervalExeState_8cpp_source.html +2 -2
  80. package/SVF-doxygen/html/IntervalExeState_8h_source.html +4 -4
  81. package/SVF-doxygen/html/IntervalValue_8h_source.html +863 -802
  82. package/SVF-doxygen/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
  83. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +335 -316
  84. package/SVF-doxygen/html/LLVMModule_8h_source.html +11 -11
  85. package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +2 -2
  86. package/SVF-doxygen/html/LLVMUtil_8h_source.html +1 -1
  87. package/SVF-doxygen/html/LeakChecker_8h_source.html +1 -1
  88. package/SVF-doxygen/html/LockAnalysis_8cpp_source.html +2 -2
  89. package/SVF-doxygen/html/LockAnalysis_8h_source.html +3 -3
  90. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
  91. package/SVF-doxygen/html/LockResultValidator_8h_source.html +2 -2
  92. package/SVF-doxygen/html/MHP_8cpp_source.html +3 -3
  93. package/SVF-doxygen/html/MHP_8h_source.html +3 -3
  94. package/SVF-doxygen/html/MSSAMuChi_8h_source.html +4 -4
  95. package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +1 -1
  96. package/SVF-doxygen/html/MTAAnnotator_8h_source.html +1 -1
  97. package/SVF-doxygen/html/MTAResultValidator_8cpp_source.html +5 -5
  98. package/SVF-doxygen/html/MTAStat_8cpp_source.html +1 -1
  99. package/SVF-doxygen/html/MTAStat_8h_source.html +1 -1
  100. package/SVF-doxygen/html/MTA_8cpp_source.html +1 -1
  101. package/SVF-doxygen/html/MTA_8h_source.html +1 -1
  102. package/SVF-doxygen/html/MemPartition_8h_source.html +2 -2
  103. package/SVF-doxygen/html/MemRegion_8cpp_source.html +4 -4
  104. package/SVF-doxygen/html/MemRegion_8h_source.html +5 -5
  105. package/SVF-doxygen/html/MemSSA_8cpp_source.html +4 -4
  106. package/SVF-doxygen/html/MemSSA_8h_source.html +5 -5
  107. package/SVF-doxygen/html/MutablePointsToDS_8h_source.html +1 -1
  108. package/SVF-doxygen/html/NodeIDAllocator_8cpp_source.html +2 -2
  109. package/SVF-doxygen/html/NodeIDAllocator_8h_source.html +2 -2
  110. package/SVF-doxygen/html/NumericLiteral_8h_source.html +465 -424
  111. package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +3 -3
  112. package/SVF-doxygen/html/ObjTypeInference_8h_source.html +2 -2
  113. package/SVF-doxygen/html/Options_8cpp_source.html +10 -1
  114. package/SVF-doxygen/html/Options_8h_source.html +8 -4
  115. package/SVF-doxygen/html/PAGBuilderFromFile_8cpp_source.html +195 -137
  116. package/SVF-doxygen/html/PAGBuilderFromFile_8h_source.html +3 -3
  117. package/SVF-doxygen/html/PCG_8cpp_source.html +1 -1
  118. package/SVF-doxygen/html/PCG_8h_source.html +1 -1
  119. package/SVF-doxygen/html/PTACallGraph_8cpp_source.html +1 -1
  120. package/SVF-doxygen/html/PTACallGraph_8h_source.html +4 -4
  121. package/SVF-doxygen/html/PTAStat_8cpp_source.html +1 -1
  122. package/SVF-doxygen/html/PersistentPointsToCache_8h_source.html +2 -2
  123. package/SVF-doxygen/html/PersistentPointsToDS_8h_source.html +2 -2
  124. package/SVF-doxygen/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  125. package/SVF-doxygen/html/PointerAnalysisImpl_8h_source.html +3 -3
  126. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +1 -1
  127. package/SVF-doxygen/html/PointerAnalysis_8h_source.html +5 -5
  128. package/SVF-doxygen/html/PointsTo_8cpp_source.html +3 -3
  129. package/SVF-doxygen/html/PointsTo_8h_source.html +3 -3
  130. package/SVF-doxygen/html/ProgSlice_8cpp_source.html +1 -1
  131. package/SVF-doxygen/html/ProgSlice_8h_source.html +2 -2
  132. package/SVF-doxygen/html/RelExeState_8cpp_source.html +5 -5
  133. package/SVF-doxygen/html/RelExeState_8h_source.html +6 -6
  134. package/SVF-doxygen/html/RelationSolver_8cpp.html +2 -0
  135. package/SVF-doxygen/html/RelationSolver_8cpp_source.html +386 -378
  136. package/SVF-doxygen/html/RelationSolver_8h_source.html +11 -11
  137. package/SVF-doxygen/html/SCC_8h_source.html +2 -2
  138. package/SVF-doxygen/html/SVFBugReport_8h_source.html +1 -1
  139. package/SVF-doxygen/html/SVFFileSystem_8cpp_source.html +1937 -1934
  140. package/SVF-doxygen/html/SVFFileSystem_8h.html +1 -1
  141. package/SVF-doxygen/html/SVFFileSystem_8h_source.html +59 -59
  142. package/SVF-doxygen/html/SVFGEdge_8h_source.html +2 -2
  143. package/SVF-doxygen/html/SVFGNode_8h_source.html +2 -2
  144. package/SVF-doxygen/html/SVFGOPT_8cpp_source.html +1 -1
  145. package/SVF-doxygen/html/SVFGOPT_8h_source.html +3 -3
  146. package/SVF-doxygen/html/SVFGReadWrite_8cpp_source.html +3 -3
  147. package/SVF-doxygen/html/SVFGStat_8cpp_source.html +1 -1
  148. package/SVF-doxygen/html/SVFGStat_8h_source.html +3 -3
  149. package/SVF-doxygen/html/SVFG_8cpp_source.html +2 -2
  150. package/SVF-doxygen/html/SVFG_8h_source.html +2 -2
  151. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +60 -60
  152. package/SVF-doxygen/html/SVFIR2ConsExeState_8h_source.html +9 -9
  153. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +1101 -886
  154. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +173 -154
  155. package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +35 -35
  156. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +17 -17
  157. package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +172 -121
  158. package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +5 -5
  159. package/SVF-doxygen/html/SVFIR_8cpp_source.html +24 -22
  160. package/SVF-doxygen/html/SVFIR_8h_source.html +55 -53
  161. package/SVF-doxygen/html/SVFLoop_8h_source.html +1 -1
  162. package/SVF-doxygen/html/SVFStat_8cpp_source.html +1 -1
  163. package/SVF-doxygen/html/SVFStat_8h_source.html +1 -1
  164. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +20 -20
  165. package/SVF-doxygen/html/SVFStatements_8h_source.html +979 -955
  166. package/SVF-doxygen/html/SVFType_8cpp_source.html +1 -1
  167. package/SVF-doxygen/html/SVFType_8h_source.html +4 -4
  168. package/SVF-doxygen/html/SVFUtil_8h_source.html +2 -2
  169. package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
  170. package/SVF-doxygen/html/SVFValue_8h_source.html +3 -3
  171. package/SVF-doxygen/html/SVFVariables_8h_source.html +1 -1
  172. package/SVF-doxygen/html/SaberCheckerAPI_8h_source.html +1 -1
  173. package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +10 -10
  174. package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +8 -8
  175. package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  176. package/SVF-doxygen/html/SaberSVFGBuilder_8h_source.html +2 -2
  177. package/SVF-doxygen/html/SingleAbsValue_8h_source.html +6 -6
  178. package/SVF-doxygen/html/SparseBitVector_8h_source.html +3 -3
  179. package/SVF-doxygen/html/SrcSnkDDA_8cpp_source.html +1 -1
  180. package/SVF-doxygen/html/SrcSnkDDA_8h_source.html +2 -2
  181. package/SVF-doxygen/html/Steensgaard_8cpp_source.html +2 -2
  182. package/SVF-doxygen/html/Steensgaard_8h_source.html +4 -4
  183. package/SVF-doxygen/html/SymState_8h_source.html +2 -2
  184. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +4 -4
  185. package/SVF-doxygen/html/SymbolTableBuilder_8h_source.html +1 -1
  186. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +3 -3
  187. package/SVF-doxygen/html/SymbolTableInfo_8h_source.html +4 -4
  188. package/SVF-doxygen/html/TCT_8cpp_source.html +3 -3
  189. package/SVF-doxygen/html/TCT_8h_source.html +4 -4
  190. package/SVF-doxygen/html/ThreadAPI_8cpp_source.html +1 -1
  191. package/SVF-doxygen/html/ThreadAPI_8h_source.html +1 -1
  192. package/SVF-doxygen/html/ThreadCallGraph_8cpp_source.html +1 -1
  193. package/SVF-doxygen/html/ThreadCallGraph_8h_source.html +3 -3
  194. package/SVF-doxygen/html/VFGEdge_8h_source.html +1 -1
  195. package/SVF-doxygen/html/VFGNode_8h_source.html +12 -12
  196. package/SVF-doxygen/html/VFG_8cpp_source.html +18 -18
  197. package/SVF-doxygen/html/VFG_8h_source.html +17 -17
  198. package/SVF-doxygen/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  199. package/SVF-doxygen/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  200. package/SVF-doxygen/html/VersionedFlowSensitive_8h_source.html +4 -4
  201. package/SVF-doxygen/html/WPAFSSolver_8h_source.html +1 -1
  202. package/SVF-doxygen/html/WPASolver_8h_source.html +2 -2
  203. package/SVF-doxygen/html/WTO_8h_source.html +2 -2
  204. package/SVF-doxygen/html/WorkList_8h_source.html +1 -1
  205. package/SVF-doxygen/html/Z3Expr_8cpp_source.html +5 -5
  206. package/SVF-doxygen/html/Z3Expr_8h_source.html +303 -294
  207. package/SVF-doxygen/html/ae_8cpp_source.html +6 -6
  208. package/SVF-doxygen/html/classSVF_1_1AEStat.html +119 -119
  209. package/SVF-doxygen/html/classSVF_1_1AbstractExecution.html +1517 -1538
  210. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +1 -1
  211. package/SVF-doxygen/html/classSVF_1_1Andersen.html +5 -5
  212. package/SVF-doxygen/html/classSVF_1_1AndersenBase.html +1 -1
  213. package/SVF-doxygen/html/classSVF_1_1AndersenSCD.html +3 -3
  214. package/SVF-doxygen/html/classSVF_1_1AndersenSFR.html +3 -3
  215. package/SVF-doxygen/html/classSVF_1_1AndersenStat.html +1 -1
  216. package/SVF-doxygen/html/classSVF_1_1AndersenWaveDiff.html +1 -1
  217. package/SVF-doxygen/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  218. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +68 -68
  219. package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr-members.html +77 -72
  220. package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.html +450 -294
  221. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +51 -51
  222. package/SVF-doxygen/html/classSVF_1_1BranchVFGNode.html +4 -4
  223. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +7 -7
  224. package/SVF-doxygen/html/classSVF_1_1CDGBuilder.html +1 -1
  225. package/SVF-doxygen/html/classSVF_1_1CFGNormalizer.html +3 -3
  226. package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder.html +1 -1
  227. package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +1 -1
  228. package/SVF-doxygen/html/classSVF_1_1CSC.html +2 -2
  229. package/SVF-doxygen/html/classSVF_1_1CallPE.html +35 -35
  230. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +97 -97
  231. package/SVF-doxygen/html/classSVF_1_1CondPTAImpl.html +1 -1
  232. package/SVF-doxygen/html/classSVF_1_1ConsExeState.html +5 -5
  233. package/SVF-doxygen/html/classSVF_1_1ConstraintGraph.html +13 -13
  234. package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +5 -5
  235. package/SVF-doxygen/html/classSVF_1_1CopyStmt-members.html +48 -33
  236. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +206 -65
  237. package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +3 -3
  238. package/SVF-doxygen/html/classSVF_1_1DDAPass.html +2 -2
  239. package/SVF-doxygen/html/classSVF_1_1DDAVFSolver.html +1 -1
  240. package/SVF-doxygen/html/classSVF_1_1ExeState.html +1 -1
  241. package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +3 -3
  242. package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +5 -5
  243. package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +2 -2
  244. package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +3 -3
  245. package/SVF-doxygen/html/classSVF_1_1FunptrDDAClient.html +1 -1
  246. package/SVF-doxygen/html/classSVF_1_1GenericGraphReader.html +1 -1
  247. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +56 -56
  248. package/SVF-doxygen/html/classSVF_1_1GrammarBase.html +1 -1
  249. package/SVF-doxygen/html/classSVF_1_1ICFG.html +3 -3
  250. package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +1 -1
  251. package/SVF-doxygen/html/classSVF_1_1ICFGWriter.html +11 -11
  252. package/SVF-doxygen/html/classSVF_1_1IntervalESBase.html +2 -2
  253. package/SVF-doxygen/html/classSVF_1_1IntervalValue-members.html +40 -35
  254. package/SVF-doxygen/html/classSVF_1_1IntervalValue.html +512 -307
  255. package/SVF-doxygen/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
  256. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +331 -312
  257. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +19 -19
  258. package/SVF-doxygen/html/classSVF_1_1LockAnalysis.html +2 -2
  259. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
  260. package/SVF-doxygen/html/classSVF_1_1MHP.html +2 -2
  261. package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +3 -3
  262. package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +1 -1
  263. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +4 -4
  264. package/SVF-doxygen/html/classSVF_1_1MTASVFGBuilder.html +1 -1
  265. package/SVF-doxygen/html/classSVF_1_1MTAStat.html +1 -1
  266. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +4 -4
  267. package/SVF-doxygen/html/classSVF_1_1MultiOpndStmt.html +48 -48
  268. package/SVF-doxygen/html/classSVF_1_1MutableDFPTData.html +1 -1
  269. package/SVF-doxygen/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +1 -1
  270. package/SVF-doxygen/html/classSVF_1_1NumericLiteral-members.html +50 -43
  271. package/SVF-doxygen/html/classSVF_1_1NumericLiteral.html +574 -343
  272. package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +3 -3
  273. package/SVF-doxygen/html/classSVF_1_1Options-members.html +129 -128
  274. package/SVF-doxygen/html/classSVF_1_1Options.html +26 -0
  275. package/SVF-doxygen/html/classSVF_1_1PAGBuilderFromFile.html +204 -135
  276. package/SVF-doxygen/html/classSVF_1_1PCG.html +1 -1
  277. package/SVF-doxygen/html/classSVF_1_1POCRSolver.html +1 -1
  278. package/SVF-doxygen/html/classSVF_1_1PTACallGraph.html +1 -1
  279. package/SVF-doxygen/html/classSVF_1_1PTAStat.html +1 -1
  280. package/SVF-doxygen/html/classSVF_1_1PersistentDFPTData.html +1 -1
  281. package/SVF-doxygen/html/classSVF_1_1PersistentDiffPTData.html +1 -1
  282. package/SVF-doxygen/html/classSVF_1_1PersistentPTData.html +1 -1
  283. package/SVF-doxygen/html/classSVF_1_1PersistentPointsToCache.html +1 -1
  284. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +46 -46
  285. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +1 -1
  286. package/SVF-doxygen/html/classSVF_1_1PointsTo.html +1 -1
  287. package/SVF-doxygen/html/classSVF_1_1ProgSlice.html +1 -1
  288. package/SVF-doxygen/html/classSVF_1_1RaceResultValidator.html +1 -1
  289. package/SVF-doxygen/html/classSVF_1_1ReaderIDToObjMap.html +2 -2
  290. package/SVF-doxygen/html/classSVF_1_1ReaderPtrPool.html +2 -2
  291. package/SVF-doxygen/html/classSVF_1_1RelExeState.html +6 -6
  292. package/SVF-doxygen/html/classSVF_1_1RelationSolver-members.html +1 -1
  293. package/SVF-doxygen/html/classSVF_1_1RelationSolver.html +362 -358
  294. package/SVF-doxygen/html/classSVF_1_1RetPE.html +35 -35
  295. package/SVF-doxygen/html/classSVF_1_1SVFG.html +3 -3
  296. package/SVF-doxygen/html/classSVF_1_1SVFGOPT.html +1 -1
  297. package/SVF-doxygen/html/classSVF_1_1SVFGStat.html +1 -1
  298. package/SVF-doxygen/html/classSVF_1_1SVFIR-members.html +1 -1
  299. package/SVF-doxygen/html/classSVF_1_1SVFIR.html +32 -25
  300. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +51 -51
  301. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState-members.html +49 -40
  302. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1346 -909
  303. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder-members.html +62 -61
  304. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +211 -131
  305. package/SVF-doxygen/html/classSVF_1_1SVFIRReader.html +1122 -1121
  306. package/SVF-doxygen/html/classSVF_1_1SVFIRWriter.html +429 -427
  307. package/SVF-doxygen/html/classSVF_1_1SVFLoopAndDomInfo.html +1 -1
  308. package/SVF-doxygen/html/classSVF_1_1SVFModuleReader.html +1 -1
  309. package/SVF-doxygen/html/classSVF_1_1SVFModuleWriter.html +23 -23
  310. package/SVF-doxygen/html/classSVF_1_1SVFStat.html +1 -1
  311. package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +14 -14
  312. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  313. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +38 -38
  314. package/SVF-doxygen/html/classSVF_1_1SingleAbsValue-members.html +96 -91
  315. package/SVF-doxygen/html/classSVF_1_1SingleAbsValue.html +19 -5
  316. package/SVF-doxygen/html/classSVF_1_1SrcSnkDDA.html +1 -1
  317. package/SVF-doxygen/html/classSVF_1_1StInfo.html +1 -1
  318. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +2 -2
  319. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +17 -17
  320. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +4 -4
  321. package/SVF-doxygen/html/classSVF_1_1SymbolTableInfo.html +3 -3
  322. package/SVF-doxygen/html/classSVF_1_1SymbolTableInfoReader.html +1 -1
  323. package/SVF-doxygen/html/classSVF_1_1TCT.html +4 -4
  324. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +22 -22
  325. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +21 -21
  326. package/SVF-doxygen/html/classSVF_1_1ThreadAPI.html +1 -1
  327. package/SVF-doxygen/html/classSVF_1_1ThreadCallGraph.html +1 -1
  328. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +44 -44
  329. package/SVF-doxygen/html/classSVF_1_1VFG.html +17 -17
  330. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
  331. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  332. package/SVF-doxygen/html/classSVF_1_1WPAFSSolver.html +2 -2
  333. package/SVF-doxygen/html/classSVF_1_1WPAMinimumSolver.html +2 -2
  334. package/SVF-doxygen/html/classSVF_1_1WPASCCSolver.html +2 -2
  335. package/SVF-doxygen/html/classSVF_1_1WPASolver.html +1 -1
  336. package/SVF-doxygen/html/classSVF_1_1Z3Expr-members.html +2 -2
  337. package/SVF-doxygen/html/classSVF_1_1Z3Expr.html +227 -221
  338. package/SVF-doxygen/html/classSymblicAbstractionTest.html +6 -6
  339. package/SVF-doxygen/html/fastcluster__dm_8cpp_8inc_source.html +1 -1
  340. package/SVF-doxygen/html/functions_a.html +11 -8
  341. package/SVF-doxygen/html/functions_b.html +8 -5
  342. package/SVF-doxygen/html/functions_c.html +23 -14
  343. package/SVF-doxygen/html/functions_e.html +1 -1
  344. package/SVF-doxygen/html/functions_enum.html +3 -0
  345. package/SVF-doxygen/html/functions_eval_b.html +3 -0
  346. package/SVF-doxygen/html/functions_eval_c.html +3 -0
  347. package/SVF-doxygen/html/functions_eval_f.html +9 -0
  348. package/SVF-doxygen/html/functions_eval_i.html +3 -0
  349. package/SVF-doxygen/html/functions_eval_p.html +3 -0
  350. package/SVF-doxygen/html/functions_eval_s.html +6 -0
  351. package/SVF-doxygen/html/functions_eval_t.html +3 -0
  352. package/SVF-doxygen/html/functions_eval_u.html +3 -0
  353. package/SVF-doxygen/html/functions_eval_z.html +79 -0
  354. package/SVF-doxygen/html/functions_f.html +21 -12
  355. package/SVF-doxygen/html/functions_func.html +2 -2
  356. package/SVF-doxygen/html/functions_func_b.html +3 -3
  357. package/SVF-doxygen/html/functions_func_g.html +47 -12
  358. package/SVF-doxygen/html/functions_func_i.html +19 -9
  359. package/SVF-doxygen/html/functions_func_n.html +1 -1
  360. package/SVF-doxygen/html/functions_func_p.html +1 -1
  361. package/SVF-doxygen/html/functions_func_z.html +1 -1
  362. package/SVF-doxygen/html/functions_g.html +54 -19
  363. package/SVF-doxygen/html/functions_i.html +18 -5
  364. package/SVF-doxygen/html/functions_l.html +3 -3
  365. package/SVF-doxygen/html/functions_o.html +15 -15
  366. package/SVF-doxygen/html/functions_p.html +28 -29
  367. package/SVF-doxygen/html/functions_r.html +1 -1
  368. package/SVF-doxygen/html/functions_s.html +24 -16
  369. package/SVF-doxygen/html/functions_t.html +7 -4
  370. package/SVF-doxygen/html/functions_u.html +6 -3
  371. package/SVF-doxygen/html/functions_v.html +4 -6
  372. package/SVF-doxygen/html/functions_vars_a.html +3 -0
  373. package/SVF-doxygen/html/functions_vars_c.html +3 -0
  374. package/SVF-doxygen/html/functions_w.html +13 -7
  375. package/SVF-doxygen/html/functions_z.html +4 -1
  376. package/SVF-doxygen/html/menudata.js +2 -1
  377. package/SVF-doxygen/html/namespaceSVF.html +689 -617
  378. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +1 -1
  379. package/SVF-doxygen/html/namespaceSVF_1_1SVFUtil.html +1 -1
  380. package/SVF-doxygen/html/namespaceSVF_1_1cppUtil.html +1 -1
  381. package/SVF-doxygen/html/namespacemembers_s.html +6 -0
  382. package/SVF-doxygen/html/namespacemembers_type_s.html +6 -0
  383. package/SVF-doxygen/html/namespacemembers_type_u.html +6 -0
  384. package/SVF-doxygen/html/namespacemembers_u.html +6 -0
  385. package/SVF-doxygen/html/search/all_1.js +135 -134
  386. package/SVF-doxygen/html/search/all_10.js +326 -325
  387. package/SVF-doxygen/html/search/all_11.js +226 -226
  388. package/SVF-doxygen/html/search/all_12.js +574 -570
  389. package/SVF-doxygen/html/search/all_13.js +208 -207
  390. package/SVF-doxygen/html/search/all_14.js +73 -70
  391. package/SVF-doxygen/html/search/all_15.js +176 -176
  392. package/SVF-doxygen/html/search/all_16.js +77 -77
  393. package/SVF-doxygen/html/search/all_17.js +1 -1
  394. package/SVF-doxygen/html/search/all_18.js +1 -1
  395. package/SVF-doxygen/html/search/all_19.js +27 -26
  396. package/SVF-doxygen/html/search/all_1a.js +179 -179
  397. package/SVF-doxygen/html/search/all_2.js +182 -181
  398. package/SVF-doxygen/html/search/all_3.js +642 -640
  399. package/SVF-doxygen/html/search/all_4.js +236 -236
  400. package/SVF-doxygen/html/search/all_5.js +126 -126
  401. package/SVF-doxygen/html/search/all_6.js +235 -232
  402. package/SVF-doxygen/html/search/all_7.js +1056 -1047
  403. package/SVF-doxygen/html/search/all_8.js +215 -215
  404. package/SVF-doxygen/html/search/all_9.js +632 -629
  405. package/SVF-doxygen/html/search/all_a.js +46 -46
  406. package/SVF-doxygen/html/search/all_b.js +26 -26
  407. package/SVF-doxygen/html/search/all_c.js +115 -115
  408. package/SVF-doxygen/html/search/all_d.js +204 -204
  409. package/SVF-doxygen/html/search/all_e.js +209 -209
  410. package/SVF-doxygen/html/search/all_f.js +122 -122
  411. package/SVF-doxygen/html/search/classes_0.js +28 -28
  412. package/SVF-doxygen/html/search/classes_1.js +11 -11
  413. package/SVF-doxygen/html/search/classes_10.js +74 -74
  414. package/SVF-doxygen/html/search/classes_11.js +14 -14
  415. package/SVF-doxygen/html/search/classes_12.js +2 -2
  416. package/SVF-doxygen/html/search/classes_13.js +10 -10
  417. package/SVF-doxygen/html/search/classes_14.js +19 -19
  418. package/SVF-doxygen/html/search/classes_15.js +1 -1
  419. package/SVF-doxygen/html/search/classes_2.js +73 -73
  420. package/SVF-doxygen/html/search/classes_3.js +35 -35
  421. package/SVF-doxygen/html/search/classes_4.js +8 -8
  422. package/SVF-doxygen/html/search/classes_5.js +28 -28
  423. package/SVF-doxygen/html/search/classes_6.js +98 -98
  424. package/SVF-doxygen/html/search/classes_7.js +38 -38
  425. package/SVF-doxygen/html/search/classes_8.js +59 -59
  426. package/SVF-doxygen/html/search/classes_9.js +1 -1
  427. package/SVF-doxygen/html/search/classes_a.js +12 -12
  428. package/SVF-doxygen/html/search/classes_b.js +29 -29
  429. package/SVF-doxygen/html/search/classes_c.js +6 -6
  430. package/SVF-doxygen/html/search/classes_d.js +19 -19
  431. package/SVF-doxygen/html/search/classes_e.js +36 -36
  432. package/SVF-doxygen/html/search/classes_f.js +25 -25
  433. package/SVF-doxygen/html/search/defines_0.js +3 -3
  434. package/SVF-doxygen/html/search/defines_1.js +3 -3
  435. package/SVF-doxygen/html/search/defines_10.js +2 -2
  436. package/SVF-doxygen/html/search/defines_2.js +30 -30
  437. package/SVF-doxygen/html/search/defines_3.js +20 -20
  438. package/SVF-doxygen/html/search/defines_4.js +3 -3
  439. package/SVF-doxygen/html/search/defines_5.js +4 -4
  440. package/SVF-doxygen/html/search/defines_6.js +2 -2
  441. package/SVF-doxygen/html/search/defines_7.js +5 -5
  442. package/SVF-doxygen/html/search/defines_8.js +11 -11
  443. package/SVF-doxygen/html/search/defines_9.js +9 -9
  444. package/SVF-doxygen/html/search/defines_a.js +2 -2
  445. package/SVF-doxygen/html/search/defines_b.js +1 -1
  446. package/SVF-doxygen/html/search/defines_c.js +4 -4
  447. package/SVF-doxygen/html/search/defines_d.js +2 -2
  448. package/SVF-doxygen/html/search/defines_e.js +8 -8
  449. package/SVF-doxygen/html/search/defines_f.js +4 -4
  450. package/SVF-doxygen/html/search/enums_0.js +4 -4
  451. package/SVF-doxygen/html/search/enums_1.js +2 -2
  452. package/SVF-doxygen/html/search/enums_10.js +1 -1
  453. package/SVF-doxygen/html/search/enums_11.js +1 -1
  454. package/SVF-doxygen/html/search/enums_2.js +9 -8
  455. package/SVF-doxygen/html/search/enums_3.js +1 -1
  456. package/SVF-doxygen/html/search/enums_4.js +4 -4
  457. package/SVF-doxygen/html/search/enums_5.js +1 -1
  458. package/SVF-doxygen/html/search/enums_6.js +2 -2
  459. package/SVF-doxygen/html/search/enums_7.js +2 -2
  460. package/SVF-doxygen/html/search/enums_8.js +4 -4
  461. package/SVF-doxygen/html/search/enums_9.js +1 -1
  462. package/SVF-doxygen/html/search/enums_a.js +1 -1
  463. package/SVF-doxygen/html/search/enums_b.js +7 -7
  464. package/SVF-doxygen/html/search/enums_c.js +1 -1
  465. package/SVF-doxygen/html/search/enums_d.js +4 -4
  466. package/SVF-doxygen/html/search/enums_e.js +2 -2
  467. package/SVF-doxygen/html/search/enums_f.js +4 -4
  468. package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
  469. package/SVF-doxygen/html/search/enumvalues_1.js +16 -15
  470. package/SVF-doxygen/html/search/enumvalues_10.js +36 -35
  471. package/SVF-doxygen/html/search/enumvalues_11.js +5 -4
  472. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  473. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  474. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  475. package/SVF-doxygen/html/search/enumvalues_15.js +4 -3
  476. package/SVF-doxygen/html/search/enumvalues_2.js +37 -36
  477. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  478. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  479. package/SVF-doxygen/html/search/enumvalues_5.js +50 -47
  480. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  481. package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
  482. package/SVF-doxygen/html/search/enumvalues_8.js +24 -23
  483. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  484. package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
  485. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  486. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  487. package/SVF-doxygen/html/search/enumvalues_d.js +19 -18
  488. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  489. package/SVF-doxygen/html/search/enumvalues_f.js +49 -47
  490. package/SVF-doxygen/html/search/files_0.js +16 -16
  491. package/SVF-doxygen/html/search/files_1.js +9 -9
  492. package/SVF-doxygen/html/search/files_10.js +8 -8
  493. package/SVF-doxygen/html/search/files_11.js +8 -8
  494. package/SVF-doxygen/html/search/files_12.js +2 -2
  495. package/SVF-doxygen/html/search/files_2.js +53 -53
  496. package/SVF-doxygen/html/search/files_3.js +14 -14
  497. package/SVF-doxygen/html/search/files_4.js +5 -5
  498. package/SVF-doxygen/html/search/files_5.js +13 -13
  499. package/SVF-doxygen/html/search/files_6.js +10 -10
  500. package/SVF-doxygen/html/search/files_7.js +17 -17
  501. package/SVF-doxygen/html/search/files_8.js +13 -13
  502. package/SVF-doxygen/html/search/files_9.js +18 -18
  503. package/SVF-doxygen/html/search/files_a.js +3 -3
  504. package/SVF-doxygen/html/search/files_b.js +4 -4
  505. package/SVF-doxygen/html/search/files_c.js +20 -20
  506. package/SVF-doxygen/html/search/files_d.js +4 -4
  507. package/SVF-doxygen/html/search/files_e.js +62 -62
  508. package/SVF-doxygen/html/search/files_f.js +8 -8
  509. package/SVF-doxygen/html/search/functions_0.js +13 -13
  510. package/SVF-doxygen/html/search/functions_1.js +368 -368
  511. package/SVF-doxygen/html/search/functions_10.js +140 -140
  512. package/SVF-doxygen/html/search/functions_11.js +140 -140
  513. package/SVF-doxygen/html/search/functions_12.js +299 -299
  514. package/SVF-doxygen/html/search/functions_13.js +73 -73
  515. package/SVF-doxygen/html/search/functions_14.js +41 -41
  516. package/SVF-doxygen/html/search/functions_15.js +72 -72
  517. package/SVF-doxygen/html/search/functions_16.js +38 -38
  518. package/SVF-doxygen/html/search/functions_17.js +3 -3
  519. package/SVF-doxygen/html/search/functions_18.js +179 -179
  520. package/SVF-doxygen/html/search/functions_2.js +94 -94
  521. package/SVF-doxygen/html/search/functions_3.js +261 -261
  522. package/SVF-doxygen/html/search/functions_4.js +85 -85
  523. package/SVF-doxygen/html/search/functions_5.js +57 -57
  524. package/SVF-doxygen/html/search/functions_6.js +65 -65
  525. package/SVF-doxygen/html/search/functions_7.js +872 -863
  526. package/SVF-doxygen/html/search/functions_8.js +162 -162
  527. package/SVF-doxygen/html/search/functions_9.js +440 -438
  528. package/SVF-doxygen/html/search/functions_a.js +30 -30
  529. package/SVF-doxygen/html/search/functions_b.js +2 -2
  530. package/SVF-doxygen/html/search/functions_c.js +25 -25
  531. package/SVF-doxygen/html/search/functions_d.js +82 -82
  532. package/SVF-doxygen/html/search/functions_e.js +36 -36
  533. package/SVF-doxygen/html/search/functions_f.js +58 -58
  534. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  535. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  536. package/SVF-doxygen/html/search/related_0.js +4 -4
  537. package/SVF-doxygen/html/search/related_1.js +2 -2
  538. package/SVF-doxygen/html/search/related_2.js +2 -2
  539. package/SVF-doxygen/html/search/related_3.js +2 -2
  540. package/SVF-doxygen/html/search/related_4.js +2 -2
  541. package/SVF-doxygen/html/search/related_5.js +1 -1
  542. package/SVF-doxygen/html/search/related_6.js +2 -2
  543. package/SVF-doxygen/html/search/related_7.js +5 -5
  544. package/SVF-doxygen/html/search/related_8.js +2 -2
  545. package/SVF-doxygen/html/search/related_9.js +4 -4
  546. package/SVF-doxygen/html/search/related_a.js +19 -19
  547. package/SVF-doxygen/html/search/related_b.js +4 -4
  548. package/SVF-doxygen/html/search/related_c.js +2 -2
  549. package/SVF-doxygen/html/search/related_d.js +12 -12
  550. package/SVF-doxygen/html/search/related_e.js +2 -2
  551. package/SVF-doxygen/html/search/related_f.js +2 -2
  552. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  553. package/SVF-doxygen/html/search/typedefs_1.js +27 -27
  554. package/SVF-doxygen/html/search/typedefs_10.js +65 -63
  555. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  556. package/SVF-doxygen/html/search/typedefs_12.js +13 -11
  557. package/SVF-doxygen/html/search/typedefs_13.js +40 -40
  558. package/SVF-doxygen/html/search/typedefs_14.js +11 -11
  559. package/SVF-doxygen/html/search/typedefs_2.js +125 -125
  560. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  561. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  562. package/SVF-doxygen/html/search/typedefs_5.js +42 -42
  563. package/SVF-doxygen/html/search/typedefs_6.js +54 -54
  564. package/SVF-doxygen/html/search/typedefs_7.js +47 -47
  565. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  566. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  567. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  568. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  569. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  570. package/SVF-doxygen/html/search/typedefs_d.js +15 -15
  571. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  572. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  573. package/SVF-doxygen/html/search/variables_0.js +177 -177
  574. package/SVF-doxygen/html/search/variables_1.js +77 -76
  575. package/SVF-doxygen/html/search/variables_10.js +98 -98
  576. package/SVF-doxygen/html/search/variables_11.js +46 -46
  577. package/SVF-doxygen/html/search/variables_12.js +93 -93
  578. package/SVF-doxygen/html/search/variables_13.js +76 -76
  579. package/SVF-doxygen/html/search/variables_14.js +14 -14
  580. package/SVF-doxygen/html/search/variables_15.js +49 -49
  581. package/SVF-doxygen/html/search/variables_16.js +11 -11
  582. package/SVF-doxygen/html/search/variables_17.js +1 -1
  583. package/SVF-doxygen/html/search/variables_18.js +17 -17
  584. package/SVF-doxygen/html/search/variables_2.js +40 -40
  585. package/SVF-doxygen/html/search/variables_3.js +143 -142
  586. package/SVF-doxygen/html/search/variables_4.js +51 -51
  587. package/SVF-doxygen/html/search/variables_5.js +39 -39
  588. package/SVF-doxygen/html/search/variables_6.js +66 -66
  589. package/SVF-doxygen/html/search/variables_7.js +34 -34
  590. package/SVF-doxygen/html/search/variables_8.js +8 -8
  591. package/SVF-doxygen/html/search/variables_9.js +79 -79
  592. package/SVF-doxygen/html/search/variables_a.js +4 -4
  593. package/SVF-doxygen/html/search/variables_b.js +10 -10
  594. package/SVF-doxygen/html/search/variables_c.js +45 -45
  595. package/SVF-doxygen/html/search/variables_d.js +57 -57
  596. package/SVF-doxygen/html/search/variables_e.js +123 -123
  597. package/SVF-doxygen/html/search/variables_f.js +31 -31
  598. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  599. package/SVF-doxygen/html/structSVF_1_1Hash.html +6 -6
  600. package/SVF-doxygen/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +12 -12
  601. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +1 -1
  602. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1BoundedZ3Expr_01_4.html +6 -6
  603. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
  604. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
  605. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  606. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1NumericLiteral_01_4.html +5 -5
  607. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SingleAbsValue_01_4.html +1 -1
  608. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +1 -1
  609. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  610. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SymState_01_4.html +1 -1
  611. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1Z3Expr_01_4.html +6 -6
  612. package/SVF-doxygen/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +1 -1
  613. package/SVF-doxygen/html/svf-ex_8cpp.html +21 -21
  614. package/SVF-doxygen/html/svf-ex_8cpp_source.html +21 -21
  615. package/SVF-doxygen/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +2 -2
  616. package/SVF-doxygen/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +3 -3
  617. package/package.json +1 -1
  618. package/svf/include/AE/Core/BoundedZ3Expr.h +33 -20
  619. package/svf/include/AE/Core/IntervalValue.h +57 -5
  620. package/svf/include/AE/Core/NumericLiteral.h +31 -1
  621. package/svf/include/AE/Core/RelationSolver.h +1 -1
  622. package/svf/include/AE/Svfexe/SVFIR2ItvExeState.h +10 -0
  623. package/svf/include/SVFIR/SVFIR.h +2 -1
  624. package/svf/include/SVFIR/SVFStatements.h +12 -2
  625. package/svf/include/Util/GeneralType.h +4 -0
  626. package/svf/include/Util/Options.h +3 -0
  627. package/svf/include/Util/Z3Expr.h +9 -2
  628. package/svf/lib/AE/Core/RelationSolver.cpp +11 -6
  629. package/svf/lib/AE/Svfexe/AbstractExecution.cpp +13 -34
  630. package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +6 -6
  631. package/svf/lib/AE/Svfexe/SVFIR2ItvExeState.cpp +217 -23
  632. package/svf/lib/SVFIR/PAGBuilderFromFile.cpp +62 -3
  633. package/svf/lib/SVFIR/SVFFileSystem.cpp +4 -1
  634. package/svf/lib/SVFIR/SVFIR.cpp +3 -3
  635. package/svf/lib/Util/Options.cpp +8 -0
  636. package/svf-llvm/include/SVF-LLVM/SVFIRBuilder.h +39 -3
  637. package/svf-llvm/lib/LLVMModule.cpp +21 -2
  638. package/svf-llvm/lib/SVFIRBuilder.cpp +7 -7
  639. package/svf-llvm/lib/SVFIRExtAPI.cpp +3 -3
@@ -545,7 +545,7 @@ $(function() {
545
545
  <div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
546
546
  <div class="ttc" id="aclassSVF_1_1MTAResultValidator_html_a1fc4116b134aa87420d055b193208e68"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a1fc4116b134aa87420d055b193208e68">SVF::MTAResultValidator::collectCallsiteTargets</a></div><div class="ttdeci">bool collectCallsiteTargets()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00215">MTAResultValidator.cpp:215</a></div></div>
547
547
  <div class="ttc" id="aclassSVF_1_1MHP_html_ac30f283cb2ad020a054ee6525ca94025"><div class="ttname"><a href="classSVF_1_1MHP.html#ac30f283cb2ad020a054ee6525ca94025">SVF::MHP::ThreadStmtToThreadInterleav</a></div><div class="ttdeci">Map&lt; CxtThreadStmt, NodeBS &gt; ThreadStmtToThreadInterleav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00054">MHP.h:54</a></div></div>
548
- <div class="ttc" id="anamespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector&lt; u32_t &gt; CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00118">GeneralType.h:118</a></div></div>
548
+ <div class="ttc" id="anamespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector&lt; u32_t &gt; CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00122">GeneralType.h:122</a></div></div>
549
549
  <div class="ttc" id="aclassSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00040">SVFModule.h:40</a></div></div>
550
550
  <div class="ttc" id="aclassSVF_1_1MTAResultValidator_html_a7382b2759b01b8382c5e59b21e7e262a"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">SVF::MTAResultValidator::vthdTorthd</a></div><div class="ttdeci">vthdTorthdMap vthdTorthd</div><div class="ttdef"><b>Definition:</b> <a href="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00139">MTAResultValidator.h:139</a></div></div>
551
551
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
@@ -563,7 +563,7 @@ $(function() {
563
563
  <div class="ttc" id="aclassSVF_1_1MTAResultValidator_html_ab3ba3c6d9c40e97febdab0e7d4ad9a3e"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ab3ba3c6d9c40e97febdab0e7d4ad9a3e">SVF::MTAResultValidator::getPreviousMemoryAccessInst</a></div><div class="ttdeci">const Instruction * getPreviousMemoryAccessInst(const Instruction *I)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00137">MTAResultValidator.cpp:137</a></div></div>
564
564
  <div class="ttc" id="aclassSVF_1_1MTAResultValidator_html_afa01b108b67ec2ac05a6444b55dbfe01"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#afa01b108b67ec2ac05a6444b55dbfe01">SVF::MTAResultValidator::validateCxtThread</a></div><div class="ttdeci">bool validateCxtThread()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00372">MTAResultValidator.cpp:372</a></div></div>
565
565
  <div class="ttc" id="aclassSVF_1_1RaceResultValidator_1_1AccessPair_html_a7dd2f8afab59ee4d107a6bfdb6c151ea"><div class="ttname"><a href="classSVF_1_1RaceResultValidator_1_1AccessPair.html#a7dd2f8afab59ee4d107a6bfdb6c151ea">SVF::RaceResultValidator::AccessPair::AccessPair</a></div><div class="ttdeci">AccessPair(const Instruction *I1, const Instruction *I2, const RC_FLAG flags)</div><div class="ttdoc">Constructor.</div><div class="ttdef"><b>Definition:</b> <a href="svf_2include_2MTA_2MTAResultValidator_8h_source.html#l00180">MTAResultValidator.h:180</a></div></div>
566
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01321">LLVMModule.cpp:1321</a></div></div>
566
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01340">LLVMModule.cpp:1340</a></div></div>
567
567
  <div class="ttc" id="aclassSVF_1_1MTAResultValidator_html_aecaf875c6c88f7ba6fa45540e8436f57"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">SVF::MTAResultValidator::getModule</a></div><div class="ttdeci">SVFModule * getModule() const</div><div class="ttdef"><b>Definition:</b> <a href="svf_2include_2MTA_2MTAResultValidator_8h_source.html#l00040">MTAResultValidator.h:40</a></div></div>
568
568
  <div class="ttc" id="aclassSVF_1_1MTAResultValidator_html_a5a0f25f5718d84f251331a2e2d207108"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a5a0f25f5718d84f251331a2e2d207108">SVF::MTAResultValidator::mod</a></div><div class="ttdeci">SVFModule * mod</div><div class="ttdef"><b>Definition:</b> <a href="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00143">MTAResultValidator.h:143</a></div></div>
569
569
  <div class="ttc" id="anamespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
@@ -574,7 +574,7 @@ $(function() {
574
574
  <div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00631">SVFValue.h:631</a></div></div>
575
575
  <div class="ttc" id="aclassSVF_1_1MTAResultValidator_html_a8e26b7fe85478eef7b3d0551ab59d9c7"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a8e26b7fe85478eef7b3d0551ab59d9c7">SVF::MTAResultValidator::INTERLEV_FLAG</a></div><div class="ttdeci">int INTERLEV_FLAG</div><div class="ttdef"><b>Definition:</b> <a href="svf_2include_2MTA_2MTAResultValidator_8h_source.html#l00025">MTAResultValidator.h:25</a></div></div>
576
576
  <div class="ttc" id="aclassSVF_1_1MTAResultValidator_html_a9c9baeb57a645b57cc9053b3071f0602"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a9c9baeb57a645b57cc9053b3071f0602">SVF::MTAResultValidator::getOutput</a></div><div class="ttdeci">std::string getOutput(const char *scenario, bool analysisRes)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00149">MTAResultValidator.cpp:149</a></div></div>
577
- <div class="ttc" id="anamespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00097">GeneralType.h:97</a></div></div>
577
+ <div class="ttc" id="anamespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00101">GeneralType.h:101</a></div></div>
578
578
  <div class="ttc" id="aclassSVF_1_1RaceResultValidator_html_a90f7d527816acf808e3e54c2a4ed0532"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#a90f7d527816acf808e3e54c2a4ed0532">SVF::RaceResultValidator::accessPairs</a></div><div class="ttdeci">std::vector&lt; AccessPair &gt; accessPairs</div><div class="ttdef"><b>Definition:</b> <a href="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00299">MTAResultValidator.h:299</a></div></div>
579
579
  <div class="ttc" id="aclassSVF_1_1SVFValue_html_a7effb0f37f486745e0cdc3ae5e9c732b"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">SVF::SVFValue::getSourceLoc</a></div><div class="ttdeci">virtual const std::string getSourceLoc() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00280">SVFValue.h:280</a></div></div>
580
580
  <div class="ttc" id="aclassSVF_1_1MTAResultValidator_html_a0e2fb93a69df487606c0eeaeadab805d"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a0e2fb93a69df487606c0eeaeadab805d">SVF::MTAResultValidator::INTERLEV_UNSOUND</a></div><div class="ttdeci">static const INTERLEV_FLAG INTERLEV_UNSOUND</div><div class="ttdef"><b>Definition:</b> <a href="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00148">MTAResultValidator.h:148</a></div></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.897",
3
+ "version": "1.0.899",
4
4
  "description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -53,6 +53,8 @@ public:
53
53
 
54
54
  BoundedZ3Expr(s64_t i) : Z3Expr(getContext().int_val((int64_t)i)) {}
55
55
 
56
+ BoundedZ3Expr(double i) : Z3Expr(getContext().real_val(std::to_string(i).c_str())) {}
57
+
56
58
  BoundedZ3Expr(const BoundedZ3Expr &z3Expr) : Z3Expr(z3Expr) {}
57
59
 
58
60
  inline BoundedZ3Expr &operator=(const BoundedZ3Expr &rhs)
@@ -345,31 +347,42 @@ public:
345
347
  return getExpr().is_true();
346
348
  }
347
349
 
350
+ inline bool is_int() const
351
+ {
352
+ return getExpr().is_int();
353
+ }
354
+
355
+ inline bool is_real() const
356
+ {
357
+ return getExpr().is_real();
358
+ }
359
+
360
+ inline s64_t getIntNumeral() const
361
+ {
362
+ assert(is_int() && "not an integer");
363
+ int64_t i;
364
+ if (getExpr().is_numeral_i64(i))
365
+ return (s64_t)get_numeral_int64();
366
+ else
367
+ return (getExpr() < 0).simplify().is_true() ? INT64_MIN : INT64_MAX;
368
+ }
369
+
370
+ inline double getRealNumeral() const
371
+ {
372
+ assert(is_real() && "not a real");
373
+ std::string decstr = getExpr().get_decimal_string(10);
374
+ return std::stod(decstr);
375
+ }
376
+
348
377
  /// Return Numeral
349
378
  inline s64_t getNumeral() const
350
379
  {
351
- if (is_numeral())
352
- {
353
- int64_t i;
354
- if (getExpr().is_numeral_i64(i))
355
- return (s64_t)get_numeral_int64();
356
- else
357
- {
358
- return (getExpr() < 0).simplify().is_true() ? INT64_MIN : INT64_MAX;
359
- }
360
- }
361
- if (is_minus_infinite())
362
- {
363
- return INT64_MIN;
364
- }
365
- else if (is_plus_infinite())
366
- {
367
- return INT64_MAX;
368
- }
380
+ int64_t i;
381
+ if (getExpr().is_numeral_i64(i))
382
+ return (s64_t)get_numeral_int64();
369
383
  else
370
384
  {
371
- assert(false && "other literal?");
372
- abort();
385
+ return (getExpr() < 0).simplify().is_true() ? INT64_MIN : INT64_MAX;
373
386
  }
374
387
  }
375
388
 
@@ -101,7 +101,7 @@ public:
101
101
 
102
102
  explicit IntervalValue(u32_t n) : IntervalValue((s64_t) n) {}
103
103
 
104
- explicit IntervalValue(double n) : IntervalValue((s64_t) n) {}
104
+ explicit IntervalValue(double n) : AbstractValue(AbstractValue::IntervalK), _lb(n), _ub(n) {}
105
105
 
106
106
  explicit IntervalValue(NumericLiteral n) : IntervalValue(n, n) {}
107
107
 
@@ -111,7 +111,9 @@ public:
111
111
 
112
112
  explicit IntervalValue(s64_t lb, s64_t ub) : IntervalValue(NumericLiteral(lb), NumericLiteral(ub)) {}
113
113
 
114
- explicit IntervalValue(double lb, double ub) : IntervalValue(NumericLiteral((s64_t) lb), NumericLiteral((s64_t) ub)) {}
114
+ explicit IntervalValue(double lb, double ub) : IntervalValue(NumericLiteral(lb), NumericLiteral(ub)) {}
115
+
116
+ explicit IntervalValue(float lb, float ub) : IntervalValue(NumericLiteral(lb), NumericLiteral(ub)) {}
115
117
 
116
118
  explicit IntervalValue(s32_t lb, s32_t ub) : IntervalValue((s64_t) lb, (s64_t) ub) {}
117
119
 
@@ -259,6 +261,22 @@ public:
259
261
  return _lb.is_infinity() || _ub.is_infinity();
260
262
  }
261
263
 
264
+ bool is_int() const
265
+ {
266
+ bool lb_int = _lb.is_int();
267
+ bool ub_int = _ub.is_int();
268
+ assert (lb_int == ub_int && "lb and ub should be both int or both float");
269
+ return _lb.is_int();
270
+ }
271
+
272
+ bool is_real() const
273
+ {
274
+ bool lb_real = _lb.is_real();
275
+ bool ub_real = _ub.is_real();
276
+ assert (lb_real == ub_real && "lb and ub should be both real or both int");
277
+ return _lb.is_real();
278
+ }
279
+
262
280
  /// Return
263
281
  s64_t getNumeral() const
264
282
  {
@@ -266,6 +284,18 @@ public:
266
284
  return _lb.getNumeral();
267
285
  }
268
286
 
287
+ s64_t getIntNumeral() const
288
+ {
289
+ assert(is_numeral() && "this IntervalValue is not numeral");
290
+ return _lb.getIntNumeral();
291
+ }
292
+
293
+ double getRealNumeral() const
294
+ {
295
+ assert(is_numeral() && "this IntervalValue is not numeral");
296
+ return _lb.getRealNumeral();
297
+ }
298
+
269
299
  /// Return true if the IntervalValue is a number [num, num]
270
300
  bool is_numeral() const
271
301
  {
@@ -335,9 +365,31 @@ public:
335
365
  }
336
366
  else
337
367
  {
338
- return this->_lb.equal(other._lb) && this->_ub.equal(other._ub);
339
- // TODO: IntervalValueZ3Expr equals
340
- // TODO: shall we consider expr and solve.
368
+ if (this->is_real() && other.is_real())
369
+ {
370
+ return this->_lb.equal(other._lb) && this->_ub.equal(other._ub);
371
+ }
372
+ else if (this->is_int() && other.is_int())
373
+ {
374
+ return this->_lb.equal(other._lb) && this->_ub.equal(other._ub);
375
+ }
376
+ else if (this->is_int())
377
+ {
378
+ double thislb = this->_lb.getIntNumeral();
379
+ double thisub = this->_ub.getIntNumeral();
380
+ double otherlb = other._lb.getRealNumeral();
381
+ double otherub = other._ub.getRealNumeral();
382
+ return thislb == otherlb && thisub == otherub;
383
+ }
384
+ else
385
+ {
386
+ double thislb = this->_lb.getRealNumeral();
387
+ double thisub = this->_ub.getRealNumeral();
388
+ double otherlb = other._lb.getIntNumeral();
389
+ double otherub = other._ub.getIntNumeral();
390
+ return thislb == otherlb && thisub == otherub;
391
+ }
392
+ assert(false && "not implemented");
341
393
  }
342
394
  }
343
395
 
@@ -50,6 +50,10 @@ public:
50
50
 
51
51
  NumericLiteral(const z3::expr &e) : _n(e) {}
52
52
 
53
+ NumericLiteral(float i) : _n(getContext().real_val(std::to_string(i).c_str())) {}
54
+
55
+ NumericLiteral(double i) : _n(getContext().real_val(std::to_string(i).c_str())) {}
56
+
53
57
  NumericLiteral(s32_t i) : _n(i) {}
54
58
 
55
59
  NumericLiteral(s64_t i) : _n(i) {}
@@ -114,12 +118,38 @@ public:
114
118
  return _n.is_zero();
115
119
  }
116
120
 
117
- /// Return Numeral
121
+ inline bool is_int() const
122
+ {
123
+ return _n.is_int();
124
+ }
125
+
126
+ inline bool is_real() const
127
+ {
128
+ return _n.is_real();
129
+ }
130
+
131
+ /// Return Numeral, default type is double in case to support both int and float
118
132
  inline s64_t getNumeral() const
119
133
  {
120
134
  return _n.getNumeral();
121
135
  }
122
136
 
137
+ /// Return Expr
138
+ inline Z3Expr getExpr() const
139
+ {
140
+ return _n.getExpr();
141
+ }
142
+
143
+ inline double getRealNumeral() const
144
+ {
145
+ return _n.getRealNumeral();
146
+ }
147
+
148
+ inline s64_t getIntNumeral() const
149
+ {
150
+ return _n.getIntNumeral();
151
+ }
152
+
123
153
  /// Check two object is equal
124
154
  bool equal(const NumericLiteral &rhs) const
125
155
  {
@@ -54,7 +54,7 @@ public:
54
54
 
55
55
  IntervalESBase abstract_consequence(const IntervalESBase &lower, const IntervalESBase &upper, const IntervalESBase &domain) const;
56
56
 
57
- IntervalESBase beta(const Map<u32_t, double> &sigma, const IntervalESBase &exeState) const;
57
+ IntervalESBase beta(const Map<u32_t, s32_t> &sigma, const IntervalESBase &exeState) const;
58
58
 
59
59
 
60
60
  /// Return Z3 expression lazily based on SVFVar ID
@@ -79,6 +79,15 @@ public:
79
79
  /// Return the value range of Integer SVF Type, e.g. unsigned i8 Type->[0, 255], signed i8 Type->[-128, 127]
80
80
  IntervalValue getRangeLimitFromType(const SVFType* type);
81
81
 
82
+ IntervalValue getZExtValue(const SVFVar* var);
83
+ IntervalValue getSExtValue(const SVFVar* var);
84
+ IntervalValue getFPToSIntValue(const SVFVar* var);
85
+ IntervalValue getFPToUIntValue(const SVFVar* var);
86
+ IntervalValue getSIntToFPValue(const SVFVar* var);
87
+ IntervalValue getUIntToFPValue(const SVFVar* var);
88
+ IntervalValue getTruncValue(const SVFVar* var, const SVFType* dstType);
89
+ IntervalValue getFPTruncValue(const SVFVar* var, const SVFType* dstType);
90
+
82
91
  /// Return the byte offset expression of a GepStmt
83
92
  /// elemBytesize is the element byte size of an static alloc or heap alloc array
84
93
  /// e.g. GepStmt* gep = [i32*10], x, and x is [0,3]
@@ -206,6 +215,7 @@ private:
206
215
  RelExeState _relEs;
207
216
 
208
217
  Map<NodeID, IntervalExeState *> _br_cond;
218
+ IntervalValue getZExtValue(const SVFVar* var, const SVFType*);
209
219
  };
210
220
  }
211
221
 
@@ -638,7 +638,8 @@ private:
638
638
  /// Add Address edge
639
639
  AddrStmt* addAddrStmt(NodeID src, NodeID dst);
640
640
  /// Add Copy edge
641
- CopyStmt* addCopyStmt(NodeID src, NodeID dst);
641
+ CopyStmt* addCopyStmt(NodeID src, NodeID dst, CopyStmt::CopyKind type);
642
+
642
643
  /// Add phi node information
643
644
  PhiStmt* addPhiStmt(NodeID res, NodeID opnd, const ICFGNode* pred);
644
645
  /// Add SelectStmt
@@ -365,13 +365,15 @@ class CopyStmt: public AssignStmt
365
365
  {
366
366
  friend class SVFIRWriter;
367
367
  friend class SVFIRReader;
368
-
369
368
  private:
370
369
  /// Constructs empty CopyStmt (for SVFIRReader/serialization)
371
370
  CopyStmt() : AssignStmt(SVFStmt::Copy) {}
372
371
  CopyStmt(const CopyStmt&); ///< place holder
373
372
  void operator=(const CopyStmt&); ///< place holder
374
373
  public:
374
+ enum CopyKind {COPYVAL, ZEXT, SEXT, BITCAST, TRUNC, FPTRUNC,
375
+ FPTOUI, FPTOSI, UITOFP, SITOFP, INTTOPTR, PTRTOINT
376
+ };
375
377
  /// Methods for support type inquiry through isa, cast, and dyn_cast:
376
378
  //@{
377
379
  static inline bool classof(const CopyStmt*)
@@ -388,10 +390,18 @@ public:
388
390
  }
389
391
  //@}
390
392
 
393
+ /// Return the kind of the copy statement
394
+ inline u32_t getCopyKind() const
395
+ {
396
+ return copyKind;
397
+ }
398
+
391
399
  /// constructor
392
- CopyStmt(SVFVar* s, SVFVar* d) : AssignStmt(s, d, SVFStmt::Copy) {}
400
+ CopyStmt(SVFVar* s, SVFVar* d, CopyKind k) : AssignStmt(s, d, SVFStmt::Copy), copyKind(k) {}
393
401
 
394
402
  virtual const std::string toString() const override;
403
+ private:
404
+ u32_t copyKind;
395
405
  };
396
406
 
397
407
  /*!
@@ -47,6 +47,10 @@ typedef unsigned u32_t;
47
47
  typedef signed s32_t;
48
48
  typedef unsigned long long u64_t;
49
49
  typedef signed long long s64_t;
50
+ typedef unsigned char u8_t;
51
+ typedef signed char s8_t;
52
+ typedef unsigned short u16_t;
53
+ typedef signed short s16_t;
50
54
 
51
55
  typedef u32_t NodeID;
52
56
  typedef u32_t EdgeID;
@@ -274,6 +274,9 @@ public:
274
274
  static const Option<bool> RunUncallFuncs;
275
275
 
276
276
  static const Option<bool> ICFGMergeAdjacentNodes;
277
+
278
+ // float precision for symbolic abstraction
279
+ static const Option<u32_t> AEPrecision;
277
280
  };
278
281
  } // namespace SVF
279
282
 
@@ -44,8 +44,7 @@ public:
44
44
  private:
45
45
  z3::expr e;
46
46
 
47
- Z3Expr(float f); // placeholder don't support floating point expression
48
- Z3Expr(double f); // placeholder don't support floating point expression
47
+
49
48
 
50
49
  public:
51
50
 
@@ -65,6 +64,14 @@ public:
65
64
  {
66
65
  }
67
66
 
67
+ Z3Expr(float f) : Z3Expr((double) f)
68
+ {
69
+ }
70
+
71
+ Z3Expr(double f): e(getContext().real_val(std::to_string(f).c_str()))
72
+ {
73
+ }
74
+
68
75
  virtual ~Z3Expr() = default;
69
76
 
70
77
  inline Z3Expr &operator=(const Z3Expr &rhs)
@@ -27,6 +27,9 @@
27
27
  *
28
28
  */
29
29
  #include "AE/Core/RelationSolver.h"
30
+ #include <cmath>
31
+ #include "Util/Options.h"
32
+
30
33
  using namespace SVF;
31
34
  using namespace SVFUtil;
32
35
 
@@ -59,7 +62,7 @@ IntervalESBase RelationSolver::bilateral(const IntervalESBase &domain, const Z3E
59
62
  Z3Expr rhs = !(gamma_hat(consequence, domain));
60
63
  solver.push();
61
64
  solver.add(phi.getExpr() && rhs.getExpr());
62
- Map<u32_t, double> solution;
65
+ Map<u32_t, s32_t> solution;
63
66
  z3::check_result checkRes = solver.check();
64
67
  /// find any solution, which is sat
65
68
  if (checkRes == z3::sat)
@@ -121,7 +124,7 @@ IntervalESBase RelationSolver::RSY(const IntervalESBase& domain, const Z3Expr& p
121
124
  Z3Expr rhs = !(gamma_hat(lower, domain));
122
125
  solver.push();
123
126
  solver.add(phi.getExpr() && rhs.getExpr());
124
- Map<u32_t, double> solution;
127
+ Map<u32_t, s32_t> solution;
125
128
  z3::check_result checkRes = solver.check();
126
129
  /// find any solution, which is sat
127
130
  if (checkRes == z3::sat)
@@ -238,7 +241,7 @@ Z3Expr RelationSolver::gamma_hat(u32_t id, const IntervalESBase& exeState) const
238
241
  return res;
239
242
  }
240
243
 
241
- IntervalESBase RelationSolver::beta(const Map<u32_t, double>& sigma,
244
+ IntervalESBase RelationSolver::beta(const Map<u32_t, s32_t>& sigma,
242
245
  const IntervalESBase& exeState) const
243
246
  {
244
247
  IntervalESBase res;
@@ -268,7 +271,9 @@ IntervalESBase RelationSolver::BS(const IntervalESBase& domain, const Z3Expr &ph
268
271
  /// because key of _varToItvVal is u32_t, -key may out of range for int
269
272
  /// so we do key + bias for -key
270
273
  u32_t bias = 0;
271
- int infinity = (INT32_MAX) - 1;
274
+ s32_t infinity = INT32_MAX - 1;
275
+
276
+ // int infinity = (INT32_MAX) - 1;
272
277
  // int infinity = 20;
273
278
  Map<u32_t, NumericLiteral> ret;
274
279
  Map<u32_t, NumericLiteral> low_values, high_values;
@@ -343,7 +348,7 @@ Map<u32_t, NumericLiteral> RelationSolver::BoxedOptSolver(const Z3Expr& phi, Map
343
348
  {
344
349
  NumericLiteral mid = (low_values.at(item.first) + (high_values.at(item.first) - low_values.at(item.first)) / 2);
345
350
  updateMap(mid_values, item.first, mid);
346
- Z3Expr expr = ((int)mid.getNumeral() <= v && v <= (int)high_values.at(item.first).getNumeral());
351
+ Z3Expr expr = (mid.getExpr() <= v && v <= high_values.at(item.first).getExpr());
347
352
  L_phi[item.first] = expr;
348
353
  }
349
354
  }
@@ -399,7 +404,7 @@ void RelationSolver::decide_cpa_ext(const Z3Expr& phi,
399
404
  updateMap(mid_values, id, mid);
400
405
  Z3Expr v = toZ3Expr(id);
401
406
  // Z3Expr v = Z3Expr::getContext().int_const(std::to_string(id).c_str());
402
- Z3Expr expr = ((int)mid_values.at(id).getNumeral() <= v && v <= (int)high_values.at(id).getNumeral());
407
+ Z3Expr expr = (mid_values.at(id).getExpr() <= v && v <= high_values.at(id).getExpr());
403
408
  L_phi[id] = expr;
404
409
  }
405
410
  solver.pop();
@@ -168,28 +168,7 @@ void AbstractExecution::handleGlobalNode()
168
168
  // Global Node, we just need to handle addr, load, store, copy and gep
169
169
  for (const SVFStmt *stmt: node->getSVFStmts())
170
170
  {
171
- if (const AddrStmt *addr = SVFUtil::dyn_cast<AddrStmt>(stmt))
172
- {
173
- _svfir2ExeState->translateAddr(addr);
174
- }
175
- else if (const LoadStmt *load = SVFUtil::dyn_cast<LoadStmt>(stmt))
176
- {
177
- _svfir2ExeState->translateLoad(load);
178
- }
179
- else if (const StoreStmt *store = SVFUtil::dyn_cast<StoreStmt>(stmt))
180
- {
181
- _svfir2ExeState->translateStore(store);
182
- }
183
- else if (const CopyStmt *copy = SVFUtil::dyn_cast<CopyStmt>(stmt))
184
- {
185
- _svfir2ExeState->translateCopy(copy);
186
- }
187
- else if (const GepStmt *gep = SVFUtil::dyn_cast<GepStmt>(stmt))
188
- {
189
- _svfir2ExeState->translateGep(gep);
190
- }
191
- else
192
- assert(false && "implement this part");
171
+ handleSVFStatement(stmt);
193
172
  }
194
173
  // for stmts in global node, exe state will move to global state to lower memory usage
195
174
  _svfir2ExeState->moveToGlobal();
@@ -341,7 +320,7 @@ bool AbstractExecution::hasCmpBranchES(const CmpStmt* cmpStmt, s64_t succ, Inter
341
320
  // for const X const, we may get concrete resVal instantly
342
321
  // for var X const, we may get [0,1] if the intersection of var and const is not empty set
343
322
  IntervalValue resVal = new_es[res_id];
344
- resVal.meet_with(IntervalValue((int64_t) succ, succ));
323
+ resVal.meet_with(IntervalValue((s64_t) succ, succ));
345
324
  // If Var X const generates bottom value, it means this branch path is not feasible.
346
325
  if (resVal.isBottom())
347
326
  {
@@ -1139,7 +1118,7 @@ void AbstractExecution::initExtFunMap()
1139
1118
  IntervalExeState &es = _svfir2ExeState->getEs(); \
1140
1119
  u32_t rhs_id = _svfir->getValueNode(cs.getArgument(0)); \
1141
1120
  if (!es.inVarToValTable(rhs_id)) return; \
1142
- u32_t rhs = _svfir2ExeState->getEs()[rhs_id].lb().getNumeral(); \
1121
+ u32_t rhs = _svfir2ExeState->getEs()[rhs_id].lb().getIntNumeral(); \
1143
1122
  s32_t res = FUNC_NAME(rhs); \
1144
1123
  u32_t lhsId = _svfir->getValueNode(cs.getInstruction()); \
1145
1124
  _svfir2ExeState->getEs()[lhsId] = IntervalValue(res); \
@@ -1223,11 +1202,11 @@ std::string AbstractExecution::strRead(const SVFValue* rhs)
1223
1202
  {
1224
1203
  break;
1225
1204
  }
1226
- if ((char) val.getNumeral() == '\0')
1205
+ if ((char) val.getIntNumeral() == '\0')
1227
1206
  {
1228
1207
  break;
1229
1208
  }
1230
- str0.push_back((char) val.getNumeral());
1209
+ str0.push_back((char) val.getIntNumeral());
1231
1210
  }
1232
1211
  return str0;
1233
1212
  }
@@ -1345,7 +1324,7 @@ void AbstractExecution::handleStrcpy(const CallICFGNode *call)
1345
1324
  const SVFValue* arg1Val = cs.getArgument(1);
1346
1325
  IntervalValue strLen = getStrlen(arg1Val);
1347
1326
  // no need to -1, since it has \0 as the last byte
1348
- handleMemcpy(arg0Val, arg1Val, strLen,strLen.lb().getNumeral());
1327
+ handleMemcpy(arg0Val, arg1Val, strLen,strLen.lb().getIntNumeral());
1349
1328
  }
1350
1329
 
1351
1330
  u32_t AbstractExecution::getAllocaInstByteSize(const AddrStmt *addr)
@@ -1372,7 +1351,7 @@ u32_t AbstractExecution::getAllocaInstByteSize(const AddrStmt *addr)
1372
1351
  _svfir2ExeState->getEs()[_svfir->getValueNode(value)] = IntervalValue(Options::MaxFieldLimit());
1373
1352
  }
1374
1353
  IntervalValue itv = _svfir2ExeState->getEs()[_svfir->getValueNode(value)];
1375
- res = res * itv.ub().getNumeral() > Options::MaxFieldLimit()? Options::MaxFieldLimit(): res * itv.ub().getNumeral();
1354
+ res = res * itv.ub().getIntNumeral() > Options::MaxFieldLimit()? Options::MaxFieldLimit(): res * itv.ub().getIntNumeral();
1376
1355
  }
1377
1356
  return (u32_t)res;
1378
1357
  }
@@ -1522,7 +1501,7 @@ IntervalValue AbstractExecution::getStrlen(const SVF::SVFValue *strValue)
1522
1501
  u32_t elemSize = 1;
1523
1502
  if (_svfir2ExeState->inVarToAddrsTable(dstid))
1524
1503
  {
1525
- for (u32_t index = 0; index < dst_size.lb().getNumeral(); index++)
1504
+ for (u32_t index = 0; index < dst_size.lb().getIntNumeral(); index++)
1526
1505
  {
1527
1506
  ExeState::Addrs expr0 = _svfir2ExeState->getGepObjAddress(dstid, index);
1528
1507
  IntervalValue val = IntervalValue::bottom();
@@ -1530,7 +1509,7 @@ IntervalValue AbstractExecution::getStrlen(const SVF::SVFValue *strValue)
1530
1509
  {
1531
1510
  val.join_with(es.load(addr));
1532
1511
  }
1533
- if (val.is_numeral() && (char) val.getNumeral() == '\0')
1512
+ if (val.is_numeral() && (char) val.getIntNumeral() == '\0')
1534
1513
  {
1535
1514
  break;
1536
1515
  }
@@ -1582,7 +1561,7 @@ void AbstractExecution::handleStrcat(const SVF::CallICFGNode *call)
1582
1561
  IntervalValue strLen0 = getStrlen(arg0Val);
1583
1562
  IntervalValue strLen1 = getStrlen(arg1Val);
1584
1563
  IntervalValue totalLen = strLen0 + strLen1;
1585
- handleMemcpy(arg0Val, arg1Val, strLen1, strLen0.lb().getNumeral());
1564
+ handleMemcpy(arg0Val, arg1Val, strLen1, strLen0.lb().getIntNumeral());
1586
1565
  // do memcpy
1587
1566
  }
1588
1567
  else if (std::find(strncatGroup.begin(), strncatGroup.end(), fun->getName()) != strncatGroup.end())
@@ -1594,7 +1573,7 @@ void AbstractExecution::handleStrcat(const SVF::CallICFGNode *call)
1594
1573
  IntervalValue arg2Num = _svfir2ExeState->getEs()[_svfir->getValueNode(arg2Val)];
1595
1574
  IntervalValue strLen0 = getStrlen(arg0Val);
1596
1575
  IntervalValue totalLen = strLen0 + arg2Num;
1597
- handleMemcpy(arg0Val, arg1Val, arg2Num, strLen0.lb().getNumeral());
1576
+ handleMemcpy(arg0Val, arg1Val, arg2Num, strLen0.lb().getIntNumeral());
1598
1577
  // do memcpy
1599
1578
  }
1600
1579
  else
@@ -1632,7 +1611,7 @@ void AbstractExecution::handleMemcpy(const SVF::SVFValue *dst, const SVF::SVFVal
1632
1611
  {
1633
1612
  assert(false && "we cannot support this type");
1634
1613
  }
1635
- u32_t size = std::min((u32_t)Options::MaxFieldLimit(), (u32_t) len.lb().getNumeral());
1614
+ u32_t size = std::min((u32_t)Options::MaxFieldLimit(), (u32_t) len.lb().getIntNumeral());
1636
1615
  u32_t range_val = size / elemSize;
1637
1616
  if (_svfir2ExeState->inVarToAddrsTable(srcId) && _svfir2ExeState->inVarToAddrsTable(dstId))
1638
1617
  {
@@ -1681,7 +1660,7 @@ void AbstractExecution::handleMemset(const SVF::SVFValue *dst, SVF::IntervalValu
1681
1660
  {
1682
1661
  IntervalExeState &es = _svfir2ExeState->getEs();
1683
1662
  u32_t dstId = _svfir->getValueNode(dst);
1684
- u32_t size = std::min((u32_t)Options::MaxFieldLimit(), (u32_t) len.lb().getNumeral());
1663
+ u32_t size = std::min((u32_t)Options::MaxFieldLimit(), (u32_t) len.lb().getIntNumeral());
1685
1664
  u32_t elemSize = 1;
1686
1665
  if (dst->getType()->isArrayTy())
1687
1666
  {
@@ -42,17 +42,17 @@ std::string IntervalToIntStr(const IntervalValue& inv)
42
42
  }
43
43
  else
44
44
  {
45
- int64_t lb_val = inv.lb().getNumeral();
46
- int64_t ub_val = inv.ub().getNumeral();
45
+ s64_t lb_val = inv.lb().getNumeral();
46
+ s64_t ub_val = inv.ub().getNumeral();
47
47
 
48
48
  // check lb
49
- s32_t lb_s32 = (lb_val < static_cast<int64_t>(INT_MIN)) ? INT_MIN :
50
- (lb_val > static_cast<int64_t>(INT_MAX)) ? INT_MAX :
49
+ s32_t lb_s32 = (lb_val < static_cast<s64_t>(INT_MIN)) ? INT_MIN :
50
+ (lb_val > static_cast<s64_t>(INT_MAX)) ? INT_MAX :
51
51
  static_cast<s32_t>(lb_val);
52
52
 
53
53
  // check ub
54
- s32_t ub_s32 = (ub_val < static_cast<int64_t>(INT_MIN)) ? INT_MIN :
55
- (ub_val > static_cast<int64_t>(INT_MAX)) ? INT_MAX :
54
+ s32_t ub_s32 = (ub_val < static_cast<s64_t>(INT_MIN)) ? INT_MIN :
55
+ (ub_val > static_cast<s64_t>(INT_MAX)) ? INT_MAX :
56
56
  static_cast<s32_t>(ub_val);
57
57
 
58
58
  return "[" + std::to_string(lb_s32) + ", " + std::to_string(ub_s32) + "]";