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
@@ -71,13 +71,13 @@ IntervalValue SVFIR2ItvExeState::getRangeLimitFromType(const SVFType* type)
71
71
  {
72
72
  if (intType->isSigned())
73
73
  {
74
- ub = static_cast<s64_t>(std::numeric_limits<int16_t>::max());
75
- lb = static_cast<s64_t>(std::numeric_limits<int16_t>::min());
74
+ ub = static_cast<s64_t>(std::numeric_limits<s16_t>::max());
75
+ lb = static_cast<s64_t>(std::numeric_limits<s16_t>::min());
76
76
  }
77
77
  else
78
78
  {
79
- ub = static_cast<s64_t>(std::numeric_limits<uint16_t>::max());
80
- lb = static_cast<s64_t>(std::numeric_limits<uint16_t>::min());
79
+ ub = static_cast<s64_t>(std::numeric_limits<u16_t>::max());
80
+ lb = static_cast<s64_t>(std::numeric_limits<u16_t>::min());
81
81
  }
82
82
  }
83
83
  else if (bits == 8)
@@ -109,6 +109,168 @@ IntervalValue SVFIR2ItvExeState::getRangeLimitFromType(const SVFType* type)
109
109
  }
110
110
  }
111
111
 
112
+ IntervalValue SVFIR2ItvExeState::getZExtValue(const SVFVar* var)
113
+ {
114
+ const SVFType* type = var->getType();
115
+ if (SVFUtil::isa<SVFIntegerType>(type))
116
+ {
117
+ u32_t bits = type->getByteSize() * 8;
118
+ if (_es[var->getId()].is_numeral())
119
+ {
120
+ if (bits == 8)
121
+ {
122
+ int8_t signed_i8_value = _es[var->getId()].getIntNumeral();
123
+ u32_t unsigned_value = static_cast<uint8_t>(signed_i8_value);
124
+ return IntervalValue(unsigned_value, unsigned_value);
125
+ }
126
+ else if (bits == 16)
127
+ {
128
+ s16_t signed_i16_value = _es[var->getId()].getIntNumeral();
129
+ u32_t unsigned_value = static_cast<u16_t>(signed_i16_value);
130
+ return IntervalValue(unsigned_value, unsigned_value);
131
+ }
132
+ else if (bits == 32)
133
+ {
134
+ s32_t signed_i32_value = _es[var->getId()].getIntNumeral();
135
+ u32_t unsigned_value = static_cast<u32_t>(signed_i32_value);
136
+ return IntervalValue(unsigned_value, unsigned_value);
137
+ }
138
+ else if (bits == 64)
139
+ {
140
+ s64_t signed_i64_value = _es[var->getId()].getIntNumeral();
141
+ return IntervalValue((s64_t)signed_i64_value, (s64_t)signed_i64_value);
142
+ // we only support i64 at most
143
+ }
144
+ else
145
+ {
146
+ assert(false && "cannot support int type other than u8/16/32/64");
147
+ }
148
+ }
149
+ else
150
+ {
151
+ return IntervalValue::top(); // TODO: may have better solution
152
+ }
153
+ }
154
+ assert(false && "cannot support non-integer type");
155
+ }
156
+
157
+ IntervalValue SVFIR2ItvExeState::getSExtValue(const SVFVar* var)
158
+ {
159
+ return _es[var->getId()];
160
+ }
161
+
162
+ IntervalValue SVFIR2ItvExeState::getFPToSIntValue(const SVF::SVFVar* var)
163
+ {
164
+ if (_es[var->getId()].is_real())
165
+ {
166
+ // get the float value of ub and lb
167
+ double float_lb = _es[var->getId()].lb().getRealNumeral();
168
+ double float_ub = _es[var->getId()].ub().getRealNumeral();
169
+ // get the int value of ub and lb
170
+ s64_t int_lb = static_cast<s64_t>(float_lb);
171
+ s64_t int_ub = static_cast<s64_t>(float_ub);
172
+ return IntervalValue(int_lb, int_ub);
173
+ }
174
+ else
175
+ {
176
+ return getSExtValue(var);
177
+ }
178
+ }
179
+
180
+ IntervalValue SVFIR2ItvExeState::getFPToUIntValue(const SVF::SVFVar* var)
181
+ {
182
+ if (_es[var->getId()].is_real())
183
+ {
184
+ // get the float value of ub and lb
185
+ double float_lb = _es[var->getId()].lb().getRealNumeral();
186
+ double float_ub = _es[var->getId()].ub().getRealNumeral();
187
+ // get the int value of ub and lb
188
+ u64_t int_lb = static_cast<u64_t>(float_lb);
189
+ u64_t int_ub = static_cast<u64_t>(float_ub);
190
+ return IntervalValue(int_lb, int_ub);
191
+ }
192
+ else
193
+ {
194
+ return getZExtValue(var);
195
+ }
196
+ }
197
+
198
+ IntervalValue SVFIR2ItvExeState::getSIntToFPValue(const SVF::SVFVar* var)
199
+ {
200
+ // get the sint value of ub and lb
201
+ s64_t sint_lb = _es[var->getId()].lb().getIntNumeral();
202
+ s64_t sint_ub = _es[var->getId()].ub().getIntNumeral();
203
+ // get the float value of ub and lb
204
+ double float_lb = static_cast<double>(sint_lb);
205
+ double float_ub = static_cast<double>(sint_ub);
206
+ return IntervalValue(float_lb, float_ub);
207
+ }
208
+
209
+ IntervalValue SVFIR2ItvExeState::getUIntToFPValue(const SVF::SVFVar* var)
210
+ {
211
+ // get the uint value of ub and lb
212
+ u64_t uint_lb = _es[var->getId()].lb().getIntNumeral();
213
+ u64_t uint_ub = _es[var->getId()].ub().getIntNumeral();
214
+ // get the float value of ub and lb
215
+ double float_lb = static_cast<double>(uint_lb);
216
+ double float_ub = static_cast<double>(uint_ub);
217
+ return IntervalValue(float_lb, float_ub);
218
+ }
219
+
220
+ IntervalValue SVFIR2ItvExeState::getTruncValue(const SVF::SVFVar* var, const SVFType* dstType)
221
+ {
222
+ // get the value of ub and lb
223
+ s64_t int_lb = _es[var->getId()].lb().getIntNumeral();
224
+ s64_t int_ub = _es[var->getId()].ub().getIntNumeral();
225
+ // get dst type
226
+ u32_t dst_bits = dstType->getByteSize() * 8;
227
+ if (dst_bits == 8)
228
+ {
229
+ // get the signed value of ub and lb
230
+ int8_t s8_lb = static_cast<int8_t>(int_lb);
231
+ int8_t s8_ub = static_cast<int8_t>(int_ub);
232
+ if (s8_lb > s8_ub)
233
+ {
234
+ // return range of s8
235
+ return IntervalValue::top();
236
+ }
237
+ return IntervalValue(s8_lb, s8_ub);
238
+ }
239
+ else if (dst_bits == 16)
240
+ {
241
+ // get the signed value of ub and lb
242
+ s16_t s16_lb = static_cast<s16_t>(int_lb);
243
+ s16_t s16_ub = static_cast<s16_t>(int_ub);
244
+ if (s16_lb > s16_ub)
245
+ {
246
+ // return range of s16
247
+ return IntervalValue::top();
248
+ }
249
+ return IntervalValue(s16_lb, s16_ub);
250
+ }
251
+ else if (dst_bits == 32)
252
+ {
253
+ // get the signed value of ub and lb
254
+ s32_t s32_lb = static_cast<s32_t>(int_lb);
255
+ s32_t s32_ub = static_cast<s32_t>(int_ub);
256
+ if (s32_lb > s32_ub)
257
+ {
258
+ // return range of s32
259
+ return IntervalValue::top();
260
+ }
261
+ return IntervalValue(s32_lb, s32_ub);
262
+ }
263
+ else
264
+ {
265
+ assert(false && "cannot support dst int type other than u8/16/32");
266
+ }
267
+ }
268
+
269
+ IntervalValue SVFIR2ItvExeState::getFPTruncValue(const SVF::SVFVar* var, const SVFType* dstType)
270
+ {
271
+ // TODO: now we do not really handle fptrunc
272
+ return _es[var->getId()];
273
+ }
112
274
 
113
275
  void SVFIR2ItvExeState::applySummary(IntervalExeState &es)
114
276
  {
@@ -236,7 +398,7 @@ SVFIR2ItvExeState::Addrs SVFIR2ItvExeState::getGepObjAddress(u32_t pointer, APOf
236
398
  Addrs ret;
237
399
  for (const auto &addr: addrs)
238
400
  {
239
- int64_t baseObj = getInternalID(addr);
401
+ s64_t baseObj = getInternalID(addr);
240
402
  if (baseObj == 0)
241
403
  {
242
404
  ret.insert(getVirtualMemAddress(0));
@@ -310,12 +472,12 @@ IntervalValue SVFIR2ItvExeState::getByteOffset(const GepStmt *gep)
310
472
  {
311
473
  // if lb or ub is negative number, set 0.
312
474
  // if lb or ub is positive number, guarantee lb/ub * elemByteSize <= MaxFieldLimit
313
- s64_t ub = (idxVal.ub().getNumeral() < 0) ? 0 :
475
+ s64_t ub = (idxVal.ub().getIntNumeral() < 0) ? 0 :
314
476
  (double)Options::MaxFieldLimit() /
315
- elemByteSize >= idxVal.ub().getNumeral() ? elemByteSize * idxVal.ub().getNumeral(): Options::MaxFieldLimit();
316
- s64_t lb = (idxVal.lb().getNumeral() < 0) ? 0 :
477
+ elemByteSize >= idxVal.ub().getIntNumeral() ? elemByteSize * idxVal.ub().getIntNumeral(): Options::MaxFieldLimit();
478
+ s64_t lb = (idxVal.lb().getIntNumeral() < 0) ? 0 :
317
479
  ((double)Options::MaxFieldLimit() /
318
- elemByteSize >= idxVal.lb().getNumeral()) ? elemByteSize * idxVal.lb().getNumeral() : Options::MaxFieldLimit();
480
+ elemByteSize >= idxVal.lb().getIntNumeral()) ? elemByteSize * idxVal.lb().getIntNumeral() : Options::MaxFieldLimit();
319
481
  res = res + IntervalValue(lb, ub);
320
482
  }
321
483
  }
@@ -367,8 +529,8 @@ IntervalValue SVFIR2ItvExeState::getItvOfFlattenedElemIndex(const GepStmt *gep)
367
529
  idxLb = idxUb = 0;
368
530
  else
369
531
  {
370
- idxLb = idxItv.lb().getNumeral();
371
- idxUb = idxItv.ub().getNumeral();
532
+ idxLb = idxItv.lb().getIntNumeral();
533
+ idxUb = idxItv.ub().getIntNumeral();
372
534
  }
373
535
  }
374
536
  // for pointer type, flattened index = elemNum * idx
@@ -428,7 +590,7 @@ void SVFIR2ItvExeState::initObjVar(const ObjVar *objVar, u32_t varId)
428
590
  {
429
591
  if (const SVFConstantInt *consInt = SVFUtil::dyn_cast<SVFConstantInt>(obj->getValue()))
430
592
  {
431
- double numeral = (double)consInt->getSExtValue();
593
+ s64_t numeral = consInt->getSExtValue();
432
594
  IntervalExeState::globalES[varId] = IntervalValue(numeral, numeral);
433
595
  }
434
596
  else if (const SVFConstantFP* consFP = SVFUtil::dyn_cast<SVFConstantFP>(obj->getValue()))
@@ -822,14 +984,46 @@ void SVFIR2ItvExeState::translateCopy(const CopyStmt *copy)
822
984
  {
823
985
  if (inVarToValTable(rhs))
824
986
  {
825
- _es[lhs] = _es[rhs];
826
- // if copy LHS is integerType(i8 i32 etc), value should be limited.
827
- // this branch can handle bitcast from higher bits integer to
828
- // lower bits integer. e.g. bitcast i32 to i8
829
- if (copy->getLHSVar()->getType()->getKind() == SVFType::SVFIntegerTy)
987
+ if (copy->getCopyKind() == CopyStmt::COPYVAL)
988
+ {
989
+ _es[lhs] = _es[rhs];
990
+ }
991
+ else if (copy->getCopyKind() == CopyStmt::ZEXT)
992
+ {
993
+ _es[lhs] = getZExtValue(copy->getRHSVar());
994
+ }
995
+ else if (copy->getCopyKind() == CopyStmt::SEXT)
996
+ {
997
+ _es[lhs] = getSExtValue(copy->getRHSVar());
998
+ }
999
+ else if (copy->getCopyKind() == CopyStmt::FPTOSI)
1000
+ {
1001
+ _es[lhs] = getFPToSIntValue(copy->getRHSVar());
1002
+ }
1003
+ else if (copy->getCopyKind() == CopyStmt::FPTOUI)
1004
+ {
1005
+ _es[lhs] = getFPToUIntValue(copy->getRHSVar());
1006
+ }
1007
+ else if (copy->getCopyKind() == CopyStmt::SITOFP)
1008
+ {
1009
+ _es[lhs] = getSIntToFPValue(copy->getRHSVar());
1010
+ }
1011
+ else if (copy->getCopyKind() == CopyStmt::UITOFP)
1012
+ {
1013
+ _es[lhs] = getUIntToFPValue(copy->getRHSVar());
1014
+ }
1015
+ else if (copy->getCopyKind() == CopyStmt::TRUNC)
1016
+ {
1017
+ _es[lhs] = getTruncValue(copy->getRHSVar(), copy->getLHSVar()->getType());
1018
+ }
1019
+ else if (copy->getCopyKind() == CopyStmt::FPTRUNC)
1020
+ {
1021
+ _es[lhs] = getFPTruncValue(copy->getRHSVar(), copy->getLHSVar()->getType());
1022
+ }
1023
+ else
830
1024
  {
831
- _es[lhs].meet_with(
832
- getRangeLimitFromType(copy->getLHSVar()->getType()));
1025
+ assert(false && "undefined copy kind");
1026
+ abort();
833
1027
  }
834
1028
  }
835
1029
  else if (inVarToAddrsTable(rhs))
@@ -854,10 +1048,10 @@ void SVFIR2ItvExeState::translateGep(const GepStmt *gep)
854
1048
  else
855
1049
  {
856
1050
  Addrs gepAddrs;
857
- APOffset lb = offsetPair.lb().getNumeral() < Options::MaxFieldLimit()?
858
- offsetPair.lb().getNumeral(): Options::MaxFieldLimit();
859
- APOffset ub = offsetPair.ub().getNumeral() < Options::MaxFieldLimit()?
860
- offsetPair.ub().getNumeral(): Options::MaxFieldLimit();
1051
+ APOffset lb = offsetPair.lb().getIntNumeral() < Options::MaxFieldLimit()?
1052
+ offsetPair.lb().getIntNumeral(): Options::MaxFieldLimit();
1053
+ APOffset ub = offsetPair.ub().getIntNumeral() < Options::MaxFieldLimit()?
1054
+ offsetPair.ub().getIntNumeral(): Options::MaxFieldLimit();
861
1055
  for (APOffset i = lb; i <= ub; i++)
862
1056
  gepAddrs.join_with(getGepObjAddress(rhs, i));
863
1057
  if(gepAddrs.empty()) return;
@@ -52,10 +52,12 @@ static u32_t gepNodeNumIndex = 100000;
52
52
  9 v
53
53
  5 addr 6 0
54
54
  6 gep 7 4
55
- 7 copy 8 0
55
+ 7 copy-ZEXT 8 0
56
56
  6 store 8 0
57
57
  8 load 9 0
58
58
  */
59
+ // for copy stmt, the enum is COPYVAL, ZEXT, SEXT, BITCAST, TRUNC, FPTRUNC,
60
+ // FPTOUI, FPTOSI, UITOFP, SITOFP, INTTOPTR, PTRTOINT, UNKNOWN
59
61
  SVFIR* PAGBuilderFromFile::build()
60
62
  {
61
63
 
@@ -162,8 +164,65 @@ void PAGBuilderFromFile::addEdge(NodeID srcID, NodeID dstID,
162
164
  {
163
165
  pag->addAddrStmt(srcID, dstID);
164
166
  }
165
- else if (edge == "copy")
166
- pag->addCopyStmt(srcID, dstID);
167
+ if (edge.rfind("copy-", 0) == 0)
168
+ {
169
+ // the enum is COPYVAL, ZEXT, SEXT, BITCAST, TRUNC, FPTRUNC,
170
+ //// FPTOUI, FPTOSI, UITOFP, SITOFP, INTTOPTR, PTRTOINT, UNKNOWN
171
+ std::string opType = edge.substr(5); // start substring from 5th char
172
+
173
+ if (opType == "COPYVAL")
174
+ {
175
+ pag->addCopyStmt(srcID, dstID, CopyStmt::COPYVAL);
176
+ }
177
+ else if (opType == "ZEXT")
178
+ {
179
+ pag->addCopyStmt(srcID, dstID, CopyStmt::ZEXT);
180
+ }
181
+ else if (opType == "SEXT")
182
+ {
183
+ pag->addCopyStmt(srcID, dstID, CopyStmt::SEXT);
184
+ }
185
+ else if (opType == "BITCAST")
186
+ {
187
+ pag->addCopyStmt(srcID, dstID, CopyStmt::BITCAST);
188
+ }
189
+ else if (opType == "TRUNC")
190
+ {
191
+ pag->addCopyStmt(srcID, dstID, CopyStmt::TRUNC);
192
+ }
193
+ else if (opType == "FPTRUNC")
194
+ {
195
+ pag->addCopyStmt(srcID, dstID, CopyStmt::FPTRUNC);
196
+ }
197
+ else if (opType == "FPTOUI")
198
+ {
199
+ pag->addCopyStmt(srcID, dstID, CopyStmt::FPTOUI);
200
+ }
201
+ else if (opType == "FPTOSI")
202
+ {
203
+ pag->addCopyStmt(srcID, dstID, CopyStmt::FPTOSI);
204
+ }
205
+ else if (opType == "UITOFP")
206
+ {
207
+ pag->addCopyStmt(srcID, dstID, CopyStmt::UITOFP);
208
+ }
209
+ else if (opType == "SITOFP")
210
+ {
211
+ pag->addCopyStmt(srcID, dstID, CopyStmt::SITOFP);
212
+ }
213
+ else if (opType == "INTTOPTR")
214
+ {
215
+ pag->addCopyStmt(srcID, dstID, CopyStmt::INTTOPTR);
216
+ }
217
+ else if (opType == "PTRTOINT")
218
+ {
219
+ pag->addCopyStmt(srcID, dstID, CopyStmt::PTRTOINT);
220
+ }
221
+ else
222
+ {
223
+ assert(false && "format not support, can not create such edge");
224
+ }
225
+ }
167
226
  else if (edge == "load")
168
227
  pag->addLoadStmt(srcID, dstID);
169
228
  else if (edge == "store")
@@ -692,7 +692,9 @@ cJSON* SVFIRWriter::contentToJson(const AddrStmt* edge)
692
692
 
693
693
  cJSON* SVFIRWriter::contentToJson(const CopyStmt* edge)
694
694
  {
695
- return contentToJson(static_cast<const AssignStmt*>(edge));
695
+ cJSON* root = contentToJson(static_cast<const AssignStmt*>(edge));
696
+ JSON_WRITE_FIELD(root, edge, copyKind);
697
+ return root;
696
698
  }
697
699
 
698
700
  cJSON* SVFIRWriter::contentToJson(const StoreStmt* edge)
@@ -2055,6 +2057,7 @@ void SVFIRReader::fill(const cJSON*& fieldJson, AddrStmt* stmt)
2055
2057
  void SVFIRReader::fill(const cJSON*& fieldJson, CopyStmt* stmt)
2056
2058
  {
2057
2059
  fill(fieldJson, static_cast<AssignStmt*>(stmt));
2060
+ JSON_READ_FIELD_FWD(fieldJson, stmt, copyKind);
2058
2061
  }
2059
2062
 
2060
2063
  void SVFIRReader::fill(const cJSON*& fieldJson, StoreStmt* stmt)
@@ -61,7 +61,7 @@ AddrStmt* SVFIR::addAddrStmt(NodeID src, NodeID dst)
61
61
  /*!
62
62
  * Add Copy edge
63
63
  */
64
- CopyStmt* SVFIR::addCopyStmt(NodeID src, NodeID dst)
64
+ CopyStmt* SVFIR::addCopyStmt(NodeID src, NodeID dst, CopyStmt::CopyKind type)
65
65
  {
66
66
  SVFVar* srcNode = getGNode(src);
67
67
  SVFVar* dstNode = getGNode(dst);
@@ -69,7 +69,7 @@ CopyStmt* SVFIR::addCopyStmt(NodeID src, NodeID dst)
69
69
  return nullptr;
70
70
  else
71
71
  {
72
- CopyStmt* copyPE = new CopyStmt(srcNode, dstNode);
72
+ CopyStmt* copyPE = new CopyStmt(srcNode, dstNode, type);
73
73
  addToStmt2TypeMap(copyPE);
74
74
  addEdge(srcNode,dstNode, copyPE);
75
75
  return copyPE;
@@ -279,7 +279,7 @@ SVFStmt* SVFIR::addBlackHoleAddrStmt(NodeID node)
279
279
  if(Options::HandBlackHole())
280
280
  return pag->addAddrStmt(pag->getBlackHoleNode(), node);
281
281
  else
282
- return pag->addCopyStmt(pag->getNullPtr(), node);
282
+ return pag->addCopyStmt(pag->getNullPtr(), node, CopyStmt::COPYVAL);
283
283
  }
284
284
 
285
285
  /*!
@@ -853,4 +853,12 @@ const Option<bool> Options::RunUncallFuncs(
853
853
  "run-uncall-fun","Skip Gep Unknown Index",false);
854
854
  const Option<bool> Options::ICFGMergeAdjacentNodes(
855
855
  "icfg-merge-adjnodes","ICFG Simplification - Merge Adjacent Nodes in the Same Basic Block.",false);
856
+
857
+
858
+ const Option<u32_t> Options::AEPrecision(
859
+ "precision",
860
+ "symbolic abstraction precision for float",
861
+ 0
862
+ );
863
+
856
864
  } // namespace SVF.
@@ -358,16 +358,52 @@ protected:
358
358
  return edge;
359
359
  }
360
360
 
361
- /// Add Copy edge
362
- inline CopyStmt* addCopyEdge(NodeID src, NodeID dst)
361
+ inline CopyStmt* addCopyEdge(NodeID src, NodeID dst, CopyStmt::CopyKind kind)
363
362
  {
364
- if(CopyStmt *edge = pag->addCopyStmt(src, dst))
363
+ if(CopyStmt *edge = pag->addCopyStmt(src, dst, kind))
365
364
  {
366
365
  setCurrentBBAndValueForPAGEdge(edge);
367
366
  return edge;
368
367
  }
369
368
  return nullptr;
370
369
  }
370
+
371
+ inline CopyStmt::CopyKind getCopyKind(const Value* val)
372
+ {
373
+ // COPYVAL, ZEXT, SEXT, BITCAST, FPTRUNC, FPTOUI, FPTOSI, UITOFP, SITOFP, INTTOPTR, PTRTOINT
374
+ if (const Instruction* inst = SVFUtil::dyn_cast<Instruction>(val))
375
+ {
376
+ switch (inst->getOpcode())
377
+ {
378
+ case Instruction::ZExt:
379
+ return CopyStmt::ZEXT;
380
+ case Instruction::SExt:
381
+ return CopyStmt::SEXT;
382
+ case Instruction::BitCast:
383
+ return CopyStmt::BITCAST;
384
+ case Instruction ::Trunc:
385
+ return CopyStmt::TRUNC;
386
+ case Instruction::FPTrunc:
387
+ return CopyStmt::FPTRUNC;
388
+ case Instruction::FPToUI:
389
+ return CopyStmt::FPTOUI;
390
+ case Instruction::FPToSI:
391
+ return CopyStmt::FPTOSI;
392
+ case Instruction::UIToFP:
393
+ return CopyStmt::UITOFP;
394
+ case Instruction::SIToFP:
395
+ return CopyStmt::SITOFP;
396
+ case Instruction::IntToPtr:
397
+ return CopyStmt::INTTOPTR;
398
+ case Instruction::PtrToInt:
399
+ return CopyStmt::PTRTOINT;
400
+ default:
401
+ return CopyStmt::COPYVAL;
402
+ }
403
+ }
404
+ assert (false && "Unknown cast inst!");
405
+ }
406
+
371
407
  /// Add Copy edge
372
408
  inline void addPhiStmt(NodeID res, NodeID opnd, const ICFGNode* pred)
373
409
  {
@@ -1263,8 +1263,27 @@ SVFConstantData* LLVMModuleSet::getSVFConstantData(const ConstantData* cd)
1263
1263
  {
1264
1264
  double dval = 0;
1265
1265
  // TODO: Why only double is considered? What about float?
1266
- if(cfp->isNormalFP() && (&cfp->getValueAPF().getSemantics()== &llvm::APFloatBase::IEEEdouble()))
1267
- dval = cfp->getValueAPF().convertToDouble();
1266
+ if (cfp->isNormalFP())
1267
+ {
1268
+ if (&cfp->getValueAPF().getSemantics()== &llvm::APFloatBase::IEEEsingle())
1269
+ {
1270
+ dval = cfp->getValueAPF().convertToFloat();
1271
+ }
1272
+ else if (&cfp->getValueAPF().getSemantics()== &llvm::APFloatBase::IEEEdouble())
1273
+ {
1274
+ dval = cfp->getValueAPF().convertToDouble();
1275
+ }
1276
+ else
1277
+ {
1278
+ assert (false && "Unsupported floating point type");
1279
+ abort();
1280
+ }
1281
+ }
1282
+ else
1283
+ {
1284
+ // other cfp type, like isZero(), isInfinity(), isNegative(), etc.
1285
+ // do nothing
1286
+ }
1268
1287
  svfcd = new SVFConstantFP(getSVFType(cd->getType()), dval);
1269
1288
  }
1270
1289
  else if(SVFUtil::isa<ConstantPointerNull>(cd))
@@ -374,7 +374,7 @@ void SVFIRBuilder::processCE(const Value* val)
374
374
  const SVFValue* cval = getCurrentValue();
375
375
  const SVFBasicBlock* cbb = getCurrentBB();
376
376
  setCurrentLocation(castce, nullptr);
377
- addCopyEdge(pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(opnd)), pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(castce)));
377
+ addCopyEdge(pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(opnd)), pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(castce)), CopyStmt::BITCAST);
378
378
  setCurrentLocation(cval, cbb);
379
379
  }
380
380
  else if (const ConstantExpr* selectce = isSelectConstantExpr(ref))
@@ -406,7 +406,7 @@ void SVFIRBuilder::processCE(const Value* val)
406
406
  const SVFBasicBlock* cbb = getCurrentBB();
407
407
  const SVFValue* cval = getCurrentValue();
408
408
  setCurrentLocation(ptr2Intce, nullptr);
409
- addCopyEdge(pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(opnd)), pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(ptr2Intce)));
409
+ addCopyEdge(pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(opnd)), pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(ptr2Intce)), CopyStmt::PTRTOINT);
410
410
  setCurrentLocation(cval, cbb);
411
411
  }
412
412
  else if(isTruncConstantExpr(ref) || isCmpConstantExpr(ref))
@@ -530,7 +530,7 @@ void SVFIRBuilder::InitialGlobal(const GlobalVariable *gvar, Constant *C,
530
530
  addStoreEdge(src, field);
531
531
  /// src should not point to anything yet
532
532
  if (C->getType()->isPtrOrPtrVectorTy() && src != pag->getNullPtr())
533
- addCopyEdge(pag->getNullPtr(), src);
533
+ addCopyEdge(pag->getNullPtr(), src, CopyStmt::COPYVAL);
534
534
  }
535
535
  }
536
536
  else if (SVFUtil::isa<ConstantArray, ConstantStruct>(C))
@@ -615,7 +615,7 @@ void SVFIRBuilder::visitGlobal(SVFModule* svfModule)
615
615
  NodeID src = pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(alias->getAliasee()));
616
616
  processCE(alias->getAliasee());
617
617
  setCurrentLocation(alias, nullptr);
618
- addCopyEdge(src,dst);
618
+ addCopyEdge(src, dst, CopyStmt::COPYVAL);
619
619
  }
620
620
  }
621
621
  }
@@ -743,7 +743,7 @@ void SVFIRBuilder::visitCastInst(CastInst &inst)
743
743
  opnd = stripAllCasts(opnd);
744
744
 
745
745
  NodeID src = getValueNode(opnd);
746
- addCopyEdge(src, dst);
746
+ addCopyEdge(src, dst, getCopyKind(&inst));
747
747
  }
748
748
  }
749
749
 
@@ -980,7 +980,7 @@ void SVFIRBuilder::visitVAArgInst(VAArgInst &inst)
980
980
  NodeID dst = getValueNode(&inst);
981
981
  Value* opnd = inst.getPointerOperand();
982
982
  NodeID src = getValueNode(opnd);
983
- addCopyEdge(src,dst);
983
+ addCopyEdge(src, dst, CopyStmt::COPYVAL);
984
984
  }
985
985
 
986
986
  /// <result> = freeze ty <val>
@@ -994,7 +994,7 @@ void SVFIRBuilder::visitFreezeInst(FreezeInst &inst)
994
994
  {
995
995
  Value* opnd = inst.getOperand(i);
996
996
  NodeID src = getValueNode(opnd);
997
- addCopyEdge(src,dst);
997
+ addCopyEdge(src, dst, CopyStmt::COPYVAL);
998
998
  }
999
999
  }
1000
1000
 
@@ -165,7 +165,7 @@ void SVFIRBuilder::handleExtCall(const CallBase* cs, const SVFFunction* svfCalle
165
165
  else
166
166
  addComplexConsForExt(cs->getArgOperand(0), cs->getArgOperand(1), nullptr);
167
167
  if(SVFUtil::isa<PointerType>(cs->getType()))
168
- addCopyEdge(getValueNode(cs->getArgOperand(0)), getValueNode(cs));
168
+ addCopyEdge(getValueNode(cs->getArgOperand(0)), getValueNode(cs), CopyStmt::COPYVAL);
169
169
  }
170
170
  else if(isMemsetExtFun(svfCallee))
171
171
  {
@@ -184,7 +184,7 @@ void SVFIRBuilder::handleExtCall(const CallBase* cs, const SVFFunction* svfCalle
184
184
  addStoreEdge(getValueNode(cs->getArgOperand(1)),dField);
185
185
  }
186
186
  if(SVFUtil::isa<PointerType>(cs->getType()))
187
- addCopyEdge(getValueNode(cs->getArgOperand(0)), getValueNode(cs));
187
+ addCopyEdge(getValueNode(cs->getArgOperand(0)), getValueNode(cs), CopyStmt::COPYVAL);
188
188
  }
189
189
  else if(svfCallee->getName().compare("dlsym") == 0)
190
190
  {
@@ -221,7 +221,7 @@ void SVFIRBuilder::handleExtCall(const CallBase* cs, const SVFFunction* svfCalle
221
221
  if (const Function *fn = getHookFn(src))
222
222
  {
223
223
  NodeID srcNode = getValueNode(fn);
224
- addCopyEdge(srcNode, getValueNode(cs));
224
+ addCopyEdge(srcNode, getValueNode(cs), CopyStmt::COPYVAL);
225
225
  }
226
226
  }
227
227
  else if(svfCallee->getName().find("_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_") != std::string::npos)