svf-lib 1.0.2319 → 1.0.2321

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 (320) hide show
  1. package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/WorkList.h +0 -0
  2. package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/Modules/FindZ3.cmake +93 -0
  3. package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFConfig.cmake +106 -0
  4. package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFConfigVersion.cmake +43 -0
  5. package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFTargets-release.cmake +101 -0
  6. package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFTargets.cmake +180 -0
  7. package/SVF-linux-aarch64/Release-build/lib/libSvfCore.so.3.1 +0 -0
  8. package/SVF-linux-aarch64/Release-build/lib/libSvfLLVM.so.3.1 +0 -0
  9. package/SVF-linux-aarch64/Release-build/lib/pkgconfig/SVF.pc +12 -0
  10. package/SVF-osx/Release-build/bin/ae +0 -0
  11. package/SVF-osx/Release-build/bin/cfl +0 -0
  12. package/SVF-osx/Release-build/bin/dvf +0 -0
  13. package/SVF-osx/Release-build/bin/llvm2svf +0 -0
  14. package/SVF-osx/Release-build/bin/mta +0 -0
  15. package/SVF-osx/Release-build/bin/saber +0 -0
  16. package/SVF-osx/Release-build/bin/svf-ex +0 -0
  17. package/SVF-osx/Release-build/bin/wpa +0 -0
  18. package/SVF-osx/Release-build/include/SVF/AE/Core/AbstractState.h +425 -0
  19. package/SVF-osx/Release-build/include/SVF/AE/Core/AbstractValue.h +157 -0
  20. package/SVF-osx/Release-build/include/SVF/AE/Core/AddressValue.h +225 -0
  21. package/SVF-osx/Release-build/include/SVF/AE/Core/ICFGWTO.h +135 -0
  22. package/SVF-osx/Release-build/include/SVF/AE/Core/IntervalValue.h +1055 -0
  23. package/SVF-osx/Release-build/include/SVF/AE/Core/NumericValue.h +1292 -0
  24. package/SVF-osx/Release-build/include/SVF/AE/Core/RelExeState.h +226 -0
  25. package/SVF-osx/Release-build/include/SVF/AE/Core/RelationSolver.h +91 -0
  26. package/SVF-osx/Release-build/include/SVF/AE/Svfexe/AEDetector.h +439 -0
  27. package/SVF-osx/Release-build/include/SVF/AE/Svfexe/AbsExtAPI.h +138 -0
  28. package/SVF-osx/Release-build/include/SVF/AE/Svfexe/AbstractInterpretation.h +384 -0
  29. package/SVF-osx/Release-build/include/SVF/CFL/CFGNormalizer.h +84 -0
  30. package/SVF-osx/Release-build/include/SVF/CFL/CFGrammar.h +468 -0
  31. package/SVF-osx/Release-build/include/SVF/CFL/CFLAlias.h +168 -0
  32. package/SVF-osx/Release-build/include/SVF/CFL/CFLBase.h +118 -0
  33. package/SVF-osx/Release-build/include/SVF/CFL/CFLGramGraphChecker.h +74 -0
  34. package/SVF-osx/Release-build/include/SVF/CFL/CFLGraphBuilder.h +168 -0
  35. package/SVF-osx/Release-build/include/SVF/CFL/CFLSVFGBuilder.h +58 -0
  36. package/SVF-osx/Release-build/include/SVF/CFL/CFLSolver.h +374 -0
  37. package/SVF-osx/Release-build/include/SVF/CFL/CFLStat.h +67 -0
  38. package/SVF-osx/Release-build/include/SVF/CFL/CFLVF.h +68 -0
  39. package/SVF-osx/Release-build/include/SVF/CFL/GrammarBuilder.h +100 -0
  40. package/SVF-osx/Release-build/include/SVF/DDA/ContextDDA.h +230 -0
  41. package/SVF-osx/Release-build/include/SVF/DDA/DDAClient.h +163 -0
  42. package/SVF-osx/Release-build/include/SVF/DDA/DDAPass.h +102 -0
  43. package/SVF-osx/Release-build/include/SVF/DDA/DDAStat.h +121 -0
  44. package/SVF-osx/Release-build/include/SVF/DDA/DDAVFSolver.h +794 -0
  45. package/SVF-osx/Release-build/include/SVF/DDA/FlowDDA.h +178 -0
  46. package/SVF-osx/Release-build/include/SVF/FastCluster/fastcluster.h +80 -0
  47. package/SVF-osx/Release-build/include/SVF/Graphs/BasicBlockG.h +318 -0
  48. package/SVF-osx/Release-build/include/SVF/Graphs/CDG.h +482 -0
  49. package/SVF-osx/Release-build/include/SVF/Graphs/CFLGraph.h +232 -0
  50. package/SVF-osx/Release-build/include/SVF/Graphs/CHG.h +368 -0
  51. package/SVF-osx/Release-build/include/SVF/Graphs/CallGraph.h +497 -0
  52. package/SVF-osx/Release-build/include/SVF/Graphs/ConsG.h +402 -0
  53. package/SVF-osx/Release-build/include/SVF/Graphs/ConsGEdge.h +355 -0
  54. package/SVF-osx/Release-build/include/SVF/Graphs/ConsGNode.h +418 -0
  55. package/SVF-osx/Release-build/include/SVF/Graphs/DOTGraphTraits.h +188 -0
  56. package/SVF-osx/Release-build/include/SVF/Graphs/GenericGraph.h +628 -0
  57. package/SVF-osx/Release-build/include/SVF/Graphs/GraphPrinter.h +111 -0
  58. package/SVF-osx/Release-build/include/SVF/Graphs/GraphTraits.h +150 -0
  59. package/SVF-osx/Release-build/include/SVF/Graphs/GraphWriter.h +380 -0
  60. package/SVF-osx/Release-build/include/SVF/Graphs/ICFG.h +331 -0
  61. package/SVF-osx/Release-build/include/SVF/Graphs/ICFGEdge.h +281 -0
  62. package/SVF-osx/Release-build/include/SVF/Graphs/ICFGNode.h +669 -0
  63. package/SVF-osx/Release-build/include/SVF/Graphs/ICFGStat.h +164 -0
  64. package/SVF-osx/Release-build/include/SVF/Graphs/IRGraph.h +398 -0
  65. package/SVF-osx/Release-build/include/SVF/Graphs/SCC.h +375 -0
  66. package/SVF-osx/Release-build/include/SVF/Graphs/SVFG.h +491 -0
  67. package/SVF-osx/Release-build/include/SVF/Graphs/SVFGEdge.h +237 -0
  68. package/SVF-osx/Release-build/include/SVF/Graphs/SVFGNode.h +501 -0
  69. package/SVF-osx/Release-build/include/SVF/Graphs/SVFGOPT.h +372 -0
  70. package/SVF-osx/Release-build/include/SVF/Graphs/SVFGStat.h +273 -0
  71. package/SVF-osx/Release-build/include/SVF/Graphs/ThreadCallGraph.h +399 -0
  72. package/SVF-osx/Release-build/include/SVF/Graphs/VFG.h +726 -0
  73. package/SVF-osx/Release-build/include/SVF/Graphs/VFGEdge.h +295 -0
  74. package/SVF-osx/Release-build/include/SVF/Graphs/VFGNode.h +1266 -0
  75. package/SVF-osx/Release-build/include/SVF/Graphs/WTO.h +872 -0
  76. package/SVF-osx/Release-build/include/SVF/MSSA/MSSAMuChi.h +722 -0
  77. package/SVF-osx/Release-build/include/SVF/MSSA/MemPartition.h +169 -0
  78. package/SVF-osx/Release-build/include/SVF/MSSA/MemRegion.h +489 -0
  79. package/SVF-osx/Release-build/include/SVF/MSSA/MemSSA.h +452 -0
  80. package/SVF-osx/Release-build/include/SVF/MSSA/SVFGBuilder.h +104 -0
  81. package/SVF-osx/Release-build/include/SVF/MTA/LockAnalysis.h +533 -0
  82. package/SVF-osx/Release-build/include/SVF/MTA/MHP.h +546 -0
  83. package/SVF-osx/Release-build/include/SVF/MTA/MTA.h +97 -0
  84. package/SVF-osx/Release-build/include/SVF/MTA/MTAStat.h +73 -0
  85. package/SVF-osx/Release-build/include/SVF/MTA/TCT.h +620 -0
  86. package/SVF-osx/Release-build/include/SVF/MemoryModel/AbstractPointsToDS.h +316 -0
  87. package/SVF-osx/Release-build/include/SVF/MemoryModel/AccessPath.h +194 -0
  88. package/SVF-osx/Release-build/include/SVF/MemoryModel/ConditionalPT.h +878 -0
  89. package/SVF-osx/Release-build/include/SVF/MemoryModel/MutablePointsToDS.h +1025 -0
  90. package/SVF-osx/Release-build/include/SVF/MemoryModel/PersistentPointsToCache.h +463 -0
  91. package/SVF-osx/Release-build/include/SVF/MemoryModel/PersistentPointsToDS.h +955 -0
  92. package/SVF-osx/Release-build/include/SVF/MemoryModel/PointerAnalysis.h +428 -0
  93. package/SVF-osx/Release-build/include/SVF/MemoryModel/PointerAnalysisImpl.h +602 -0
  94. package/SVF-osx/Release-build/include/SVF/MemoryModel/PointsTo.h +255 -0
  95. package/SVF-osx/Release-build/include/SVF/MemoryModel/SVFLoop.h +167 -0
  96. package/SVF-osx/Release-build/include/SVF/SABER/DoubleFreeChecker.h +76 -0
  97. package/SVF-osx/Release-build/include/SVF/SABER/FileChecker.h +80 -0
  98. package/SVF-osx/Release-build/include/SVF/SABER/LeakChecker.h +122 -0
  99. package/SVF-osx/Release-build/include/SVF/SABER/ProgSlice.h +327 -0
  100. package/SVF-osx/Release-build/include/SVF/SABER/SaberCheckerAPI.h +151 -0
  101. package/SVF-osx/Release-build/include/SVF/SABER/SaberCondAllocator.h +317 -0
  102. package/SVF-osx/Release-build/include/SVF/SABER/SaberSVFGBuilder.h +114 -0
  103. package/SVF-osx/Release-build/include/SVF/SABER/SrcSnkDDA.h +327 -0
  104. package/SVF-osx/Release-build/include/SVF/SABER/SrcSnkSolver.h +186 -0
  105. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/BasicTypes.h +280 -0
  106. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/BreakConstantExpr.h +93 -0
  107. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/CHGBuilder.h +78 -0
  108. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/CppUtil.h +184 -0
  109. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/DCHG.h +474 -0
  110. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/GEPTypeBridgeIterator.h +183 -0
  111. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/ICFGBuilder.h +160 -0
  112. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/LLVMLoopAnalysis.h +60 -0
  113. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/LLVMModule.h +527 -0
  114. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/LLVMUtil.h +433 -0
  115. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/ObjTypeInference.h +129 -0
  116. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/SVFIRBuilder.h +523 -0
  117. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/SymbolTableBuilder.h +132 -0
  118. package/SVF-osx/Release-build/include/SVF/SVFIR/ObjTypeInfo.h +224 -0
  119. package/SVF-osx/Release-build/include/SVF/SVFIR/PAGBuilderFromFile.h +80 -0
  120. package/SVF-osx/Release-build/include/SVF/SVFIR/SVFIR.h +856 -0
  121. package/SVF-osx/Release-build/include/SVF/SVFIR/SVFStatements.h +1330 -0
  122. package/SVF-osx/Release-build/include/SVF/SVFIR/SVFType.h +606 -0
  123. package/SVF-osx/Release-build/include/SVF/SVFIR/SVFValue.h +338 -0
  124. package/SVF-osx/Release-build/include/SVF/SVFIR/SVFVariables.h +2212 -0
  125. package/SVF-osx/Release-build/include/SVF/Util/Annotator.h +180 -0
  126. package/SVF-osx/Release-build/include/SVF/Util/BitVector.h +55 -0
  127. package/SVF-osx/Release-build/include/SVF/Util/CDGBuilder.h +107 -0
  128. package/SVF-osx/Release-build/include/SVF/Util/CallGraphBuilder.h +61 -0
  129. package/SVF-osx/Release-build/include/SVF/Util/Casting.h +426 -0
  130. package/SVF-osx/Release-build/include/SVF/Util/CommandLine.h +530 -0
  131. package/SVF-osx/Release-build/include/SVF/Util/CoreBitVector.h +214 -0
  132. package/SVF-osx/Release-build/include/SVF/Util/CxtStmt.h +502 -0
  133. package/SVF-osx/Release-build/include/SVF/Util/DPItem.h +618 -0
  134. package/SVF-osx/Release-build/include/SVF/Util/ExtAPI.h +117 -0
  135. package/SVF-osx/Release-build/include/SVF/Util/GeneralType.h +127 -0
  136. package/SVF-osx/Release-build/include/SVF/Util/GraphReachSolver.h +186 -0
  137. package/SVF-osx/Release-build/include/SVF/Util/NodeIDAllocator.h +203 -0
  138. package/SVF-osx/Release-build/include/SVF/Util/Options.h +273 -0
  139. package/SVF-osx/Release-build/include/SVF/Util/PTAStat.h +83 -0
  140. package/SVF-osx/Release-build/include/SVF/Util/SVFBugReport.h +427 -0
  141. package/SVF-osx/Release-build/include/SVF/Util/SVFLoopAndDomInfo.h +169 -0
  142. package/SVF-osx/Release-build/include/SVF/Util/SVFStat.h +103 -0
  143. package/SVF-osx/Release-build/include/SVF/Util/SVFUtil.h +478 -0
  144. package/SVF-osx/Release-build/include/SVF/Util/SparseBitVector.h +1252 -0
  145. package/SVF-osx/Release-build/include/SVF/Util/ThreadAPI.h +188 -0
  146. package/SVF-osx/Release-build/include/SVF/Util/WorkList.h +317 -0
  147. package/SVF-osx/Release-build/include/SVF/Util/Z3Expr.h +325 -0
  148. package/SVF-osx/Release-build/include/SVF/Util/cJSON.h +300 -0
  149. package/SVF-osx/Release-build/include/SVF/Util/config.h +46 -0
  150. package/SVF-osx/Release-build/include/SVF/Util/iterator.h +407 -0
  151. package/SVF-osx/Release-build/include/SVF/Util/iterator_range.h +76 -0
  152. package/SVF-osx/Release-build/include/SVF/WPA/Andersen.h +434 -0
  153. package/SVF-osx/Release-build/include/SVF/WPA/AndersenPWC.h +160 -0
  154. package/SVF-osx/Release-build/include/SVF/WPA/CSC.h +95 -0
  155. package/SVF-osx/Release-build/include/SVF/WPA/FlowSensitive.h +322 -0
  156. package/SVF-osx/Release-build/include/SVF/WPA/Steensgaard.h +131 -0
  157. package/SVF-osx/Release-build/include/SVF/WPA/TypeAnalysis.h +90 -0
  158. package/SVF-osx/Release-build/include/SVF/WPA/VersionedFlowSensitive.h +295 -0
  159. package/SVF-osx/Release-build/include/SVF/WPA/WPAFSSolver.h +246 -0
  160. package/SVF-osx/Release-build/include/SVF/WPA/WPAPass.h +115 -0
  161. package/SVF-osx/Release-build/include/SVF/WPA/WPASolver.h +205 -0
  162. package/SVF-osx/Release-build/include/SVF/WPA/WPAStat.h +222 -0
  163. package/SVF-osx/Release-build/include/SVF/extapi.bc +2384 -0
  164. package/SVF-osx/Release-build/lib/cmake/SVF/Modules/FindZ3.cmake +93 -0
  165. package/SVF-osx/Release-build/lib/cmake/SVF/SVFConfig.cmake +106 -0
  166. package/SVF-osx/Release-build/lib/cmake/SVF/SVFConfigVersion.cmake +43 -0
  167. package/SVF-osx/Release-build/lib/cmake/SVF/SVFTargets-release.cmake +101 -0
  168. package/SVF-osx/Release-build/lib/cmake/SVF/SVFTargets.cmake +180 -0
  169. package/SVF-osx/Release-build/lib/libSvfCore.3.1.dylib +0 -0
  170. package/SVF-osx/Release-build/lib/libSvfLLVM.3.1.dylib +0 -0
  171. package/SVF-osx/Release-build/lib/pkgconfig/SVF.pc +12 -0
  172. package/package.json +1 -1
  173. package/SVF-linux-aarch64/Release-build/include/CFL/grammar/PAGGrammar.txt +0 -15
  174. package/SVF-linux-aarch64/Release-build/include/CFL/grammar/PEGGrammar.txt +0 -11
  175. package/SVF-linux-aarch64/Release-build/include/CFL/grammar/VFGGrammar.txt +0 -7
  176. package/SVF-linux-aarch64/Release-build/include/FastCluster/LICENSE.TXT +0 -13
  177. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/AbstractState.h +0 -0
  178. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/AbstractValue.h +0 -0
  179. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/AddressValue.h +0 -0
  180. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/ICFGWTO.h +0 -0
  181. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/IntervalValue.h +0 -0
  182. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/NumericValue.h +0 -0
  183. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/RelExeState.h +0 -0
  184. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/RelationSolver.h +0 -0
  185. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Svfexe/AEDetector.h +0 -0
  186. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Svfexe/AbsExtAPI.h +0 -0
  187. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Svfexe/AbstractInterpretation.h +0 -0
  188. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFGNormalizer.h +0 -0
  189. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFGrammar.h +0 -0
  190. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLAlias.h +0 -0
  191. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLBase.h +0 -0
  192. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLGramGraphChecker.h +0 -0
  193. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLGraphBuilder.h +0 -0
  194. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLSVFGBuilder.h +0 -0
  195. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLSolver.h +0 -0
  196. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLStat.h +0 -0
  197. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLVF.h +0 -0
  198. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/GrammarBuilder.h +0 -0
  199. /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/ContextDDA.h +0 -0
  200. /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAClient.h +0 -0
  201. /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAPass.h +0 -0
  202. /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAStat.h +0 -0
  203. /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAVFSolver.h +0 -0
  204. /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/FlowDDA.h +0 -0
  205. /package/SVF-linux-aarch64/Release-build/include/{FastCluster → SVF/FastCluster}/fastcluster.h +0 -0
  206. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/BasicBlockG.h +0 -0
  207. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CDG.h +0 -0
  208. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CFLGraph.h +0 -0
  209. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CHG.h +0 -0
  210. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CallGraph.h +0 -0
  211. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ConsG.h +0 -0
  212. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ConsGEdge.h +0 -0
  213. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ConsGNode.h +0 -0
  214. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/DOTGraphTraits.h +0 -0
  215. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GenericGraph.h +0 -0
  216. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GraphPrinter.h +0 -0
  217. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GraphTraits.h +0 -0
  218. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GraphWriter.h +0 -0
  219. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFG.h +0 -0
  220. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFGEdge.h +0 -0
  221. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFGNode.h +0 -0
  222. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFGStat.h +0 -0
  223. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/IRGraph.h +0 -0
  224. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SCC.h +0 -0
  225. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFG.h +0 -0
  226. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGEdge.h +0 -0
  227. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGNode.h +0 -0
  228. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGOPT.h +0 -0
  229. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGStat.h +0 -0
  230. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ThreadCallGraph.h +0 -0
  231. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/VFG.h +0 -0
  232. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/VFGEdge.h +0 -0
  233. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/VFGNode.h +0 -0
  234. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/WTO.h +0 -0
  235. /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MSSAMuChi.h +0 -0
  236. /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MemPartition.h +0 -0
  237. /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MemRegion.h +0 -0
  238. /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MemSSA.h +0 -0
  239. /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/SVFGBuilder.h +0 -0
  240. /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/LockAnalysis.h +0 -0
  241. /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/MHP.h +0 -0
  242. /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/MTA.h +0 -0
  243. /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/MTAStat.h +0 -0
  244. /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/TCT.h +0 -0
  245. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/AbstractPointsToDS.h +0 -0
  246. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/AccessPath.h +0 -0
  247. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/ConditionalPT.h +0 -0
  248. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/MutablePointsToDS.h +0 -0
  249. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PersistentPointsToCache.h +0 -0
  250. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PersistentPointsToDS.h +0 -0
  251. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PointerAnalysis.h +0 -0
  252. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PointerAnalysisImpl.h +0 -0
  253. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PointsTo.h +0 -0
  254. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/SVFLoop.h +0 -0
  255. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/DoubleFreeChecker.h +0 -0
  256. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/FileChecker.h +0 -0
  257. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/LeakChecker.h +0 -0
  258. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/ProgSlice.h +0 -0
  259. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SaberCheckerAPI.h +0 -0
  260. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SaberCondAllocator.h +0 -0
  261. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SaberSVFGBuilder.h +0 -0
  262. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SrcSnkDDA.h +0 -0
  263. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SrcSnkSolver.h +0 -0
  264. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/BasicTypes.h +0 -0
  265. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/BreakConstantExpr.h +0 -0
  266. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/CHGBuilder.h +0 -0
  267. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/CppUtil.h +0 -0
  268. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/DCHG.h +0 -0
  269. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/GEPTypeBridgeIterator.h +0 -0
  270. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/ICFGBuilder.h +0 -0
  271. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/LLVMLoopAnalysis.h +0 -0
  272. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/LLVMModule.h +0 -0
  273. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/LLVMUtil.h +0 -0
  274. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/ObjTypeInference.h +0 -0
  275. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/SVFIRBuilder.h +0 -0
  276. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/SymbolTableBuilder.h +0 -0
  277. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/ObjTypeInfo.h +0 -0
  278. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/PAGBuilderFromFile.h +0 -0
  279. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFIR.h +0 -0
  280. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFStatements.h +0 -0
  281. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFType.h +0 -0
  282. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFValue.h +0 -0
  283. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFVariables.h +0 -0
  284. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Annotator.h +0 -0
  285. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/BitVector.h +0 -0
  286. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CDGBuilder.h +0 -0
  287. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CallGraphBuilder.h +0 -0
  288. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Casting.h +0 -0
  289. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CommandLine.h +0 -0
  290. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CoreBitVector.h +0 -0
  291. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CxtStmt.h +0 -0
  292. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/DPItem.h +0 -0
  293. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/ExtAPI.h +0 -0
  294. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/GeneralType.h +0 -0
  295. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/GraphReachSolver.h +0 -0
  296. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/NodeIDAllocator.h +0 -0
  297. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Options.h +0 -0
  298. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/PTAStat.h +0 -0
  299. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFBugReport.h +0 -0
  300. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFLoopAndDomInfo.h +0 -0
  301. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFStat.h +0 -0
  302. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFUtil.h +0 -0
  303. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SparseBitVector.h +0 -0
  304. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/ThreadAPI.h +0 -0
  305. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Z3Expr.h +0 -0
  306. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/cJSON.h +0 -0
  307. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/iterator.h +0 -0
  308. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/iterator_range.h +0 -0
  309. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/Andersen.h +0 -0
  310. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/AndersenPWC.h +0 -0
  311. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/CSC.h +0 -0
  312. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/FlowSensitive.h +0 -0
  313. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/Steensgaard.h +0 -0
  314. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/TypeAnalysis.h +0 -0
  315. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/VersionedFlowSensitive.h +0 -0
  316. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPAFSSolver.h +0 -0
  317. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPAPass.h +0 -0
  318. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPASolver.h +0 -0
  319. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPAStat.h +0 -0
  320. /package/SVF-linux-aarch64/Release-build/{lib → include/SVF}/extapi.bc +0 -0
@@ -0,0 +1,606 @@
1
+ //===- SVFBasicTypes.h -- Basic types used in SVF-----------------------------//
2
+ //
3
+ // SVF: Static Value-Flow Analysis
4
+ //
5
+ // Copyright (C) <2013-> <Yulei Sui>
6
+ //
7
+
8
+ // This program is free software: you can redistribute it and/or modify
9
+ // it under the terms of the GNU Affero General Public License as published by
10
+ // the Free Software Foundation, either version 3 of the License, or
11
+ // (at your option) any later version.
12
+
13
+ // This program is distributed in the hope that it will be useful,
14
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ // GNU Affero General Public License for more details.
17
+
18
+ // You should have received a copy of the GNU Affero General Public License
19
+ // along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ //
21
+ //===----------------------------------------------------------------------===//
22
+
23
+ /*
24
+ * BasicTypes.h
25
+ *
26
+ * Created on: Apr 1, 2014
27
+ * Author: Yulei Sui
28
+ */
29
+
30
+ #ifndef INCLUDE_SVFIR_SVFTYPE_H_
31
+ #define INCLUDE_SVFIR_SVFTYPE_H_
32
+
33
+ #include "Util/SparseBitVector.h"
34
+ #include "Util/GeneralType.h"
35
+
36
+
37
+ namespace SVF
38
+ {
39
+ class SVFType;
40
+ class SVFPointerType;
41
+
42
+
43
+ /*!
44
+ * Flattened type information of StructType, ArrayType and SingleValueType
45
+ */
46
+ class StInfo
47
+ {
48
+ friend class SVFIRWriter;
49
+ friend class SVFIRReader;
50
+
51
+ private:
52
+ /// flattened field indices of a struct (ignoring arrays)
53
+ std::vector<u32_t> fldIdxVec;
54
+ /// flattened element indices including structs and arrays by considering
55
+ /// strides
56
+ std::vector<u32_t> elemIdxVec;
57
+ /// Types of all fields of a struct
58
+ Map<u32_t, const SVFType*> fldIdx2TypeMap;
59
+ /// All field infos after flattening a struct
60
+ std::vector<const SVFType*> finfo;
61
+ /// stride represents the number of repetitive elements if this StInfo
62
+ /// represent an ArrayType. stride is 1 by default.
63
+ u32_t stride;
64
+ /// number of elements after flattening (including array elements)
65
+ u32_t numOfFlattenElements;
66
+ /// number of fields after flattening (ignoring array elements)
67
+ u32_t numOfFlattenFields;
68
+ /// Type vector of fields
69
+ std::vector<const SVFType*> flattenElementTypes;
70
+ /// Max field limit
71
+
72
+ public:
73
+ StInfo() = delete;
74
+ StInfo(const StInfo& st) = delete;
75
+ void operator=(const StInfo&) = delete;
76
+
77
+ /// Constructor
78
+ explicit StInfo(u32_t s)
79
+ : stride(s), numOfFlattenElements(s), numOfFlattenFields(s)
80
+ {
81
+ }
82
+ /// Destructor
83
+ ~StInfo() = default;
84
+
85
+ /// struct A { int id; int salary; };
86
+ /// struct B { char name[20]; struct A a;}
87
+ /// B b;
88
+ ///
89
+ /// OriginalFieldType of b with field_idx 1 : Struct A
90
+ /// FlatternedFieldType of b with field_idx 1 : int
91
+ //{@
92
+ const SVFType* getOriginalElemType(u32_t fldIdx) const;
93
+
94
+ inline std::vector<u32_t>& getFlattenedFieldIdxVec()
95
+ {
96
+ return fldIdxVec;
97
+ }
98
+ inline std::vector<u32_t>& getFlattenedElemIdxVec()
99
+ {
100
+ return elemIdxVec;
101
+ }
102
+ inline std::vector<const SVFType*>& getFlattenElementTypes()
103
+ {
104
+ return flattenElementTypes;
105
+ }
106
+ inline std::vector<const SVFType*>& getFlattenFieldTypes()
107
+ {
108
+ return finfo;
109
+ }
110
+ inline const std::vector<u32_t>& getFlattenedFieldIdxVec() const
111
+ {
112
+ return fldIdxVec;
113
+ }
114
+ inline const std::vector<u32_t>& getFlattenedElemIdxVec() const
115
+ {
116
+ return elemIdxVec;
117
+ }
118
+ inline const std::vector<const SVFType*>& getFlattenElementTypes() const
119
+ {
120
+ return flattenElementTypes;
121
+ }
122
+ inline const std::vector<const SVFType*>& getFlattenFieldTypes() const
123
+ {
124
+ return finfo;
125
+ }
126
+ //@}
127
+
128
+ /// Add field index and element index and their corresponding type
129
+ void addFldWithType(u32_t fldIdx, const SVFType* type, u32_t elemIdx);
130
+
131
+ /// Set number of fields and elements of an aggregate
132
+ inline void setNumOfFieldsAndElems(u32_t nf, u32_t ne)
133
+ {
134
+ numOfFlattenFields = nf;
135
+ numOfFlattenElements = ne;
136
+ }
137
+
138
+ /// Return number of elements after flattening (including array elements)
139
+ inline u32_t getNumOfFlattenElements() const
140
+ {
141
+ return numOfFlattenElements;
142
+ }
143
+
144
+ /// Return the number of fields after flattening (ignoring array elements)
145
+ inline u32_t getNumOfFlattenFields() const
146
+ {
147
+ return numOfFlattenFields;
148
+ }
149
+ /// Return the stride
150
+ inline u32_t getStride() const
151
+ {
152
+ return stride;
153
+ }
154
+ };
155
+
156
+ class SVFType
157
+ {
158
+ friend class SVFIRWriter;
159
+ friend class SVFIRReader;
160
+ friend class LLVMModuleSet;
161
+
162
+ public:
163
+ typedef s64_t GNodeK;
164
+
165
+ enum SVFTyKind
166
+ {
167
+ SVFTy,
168
+ SVFPointerTy,
169
+ SVFIntegerTy,
170
+ SVFFunctionTy,
171
+ SVFStructTy,
172
+ SVFArrayTy,
173
+ SVFOtherTy,
174
+ };
175
+
176
+ public:
177
+
178
+ inline static SVFType* getSVFPtrType()
179
+ {
180
+ assert(svfPtrTy && "ptr type not set?");
181
+ return svfPtrTy;
182
+ }
183
+
184
+ inline static SVFType* getSVFInt8Type()
185
+ {
186
+ assert(svfI8Ty && "int8 type not set?");
187
+ return svfI8Ty;
188
+ }
189
+
190
+ private:
191
+
192
+ static SVFType* svfPtrTy; ///< ptr type
193
+ static SVFType* svfI8Ty; ///< 8-bit int type
194
+
195
+ private:
196
+ GNodeK kind; ///< used for classof
197
+ StInfo* typeinfo; ///< SVF's TypeInfo
198
+ bool isSingleValTy; ///< The type represents a single value, not struct or
199
+ u32_t byteSize; ///< LLVM Byte Size
200
+ u32_t id;
201
+ ///< array
202
+
203
+ protected:
204
+ SVFType(bool svt, SVFTyKind k, u32_t i = 0, u32_t Sz = 1)
205
+ : kind(k), typeinfo(nullptr),
206
+ isSingleValTy(svt), byteSize(Sz), id(i)
207
+ {
208
+ }
209
+ public:
210
+ SVFType(void) = delete;
211
+ virtual ~SVFType() {}
212
+
213
+ inline GNodeK getKind() const
214
+ {
215
+ return kind;
216
+ }
217
+
218
+ /// \note Use `os<<svfType` or `svfType.print(os)` when possible to avoid
219
+ /// string concatenation.
220
+ std::string toString() const;
221
+
222
+ virtual void print(std::ostream& os) const = 0;
223
+
224
+
225
+ u32_t getId() const
226
+ {
227
+ return id;
228
+ }
229
+
230
+ inline void setTypeInfo(StInfo* ti)
231
+ {
232
+ typeinfo = ti;
233
+ }
234
+
235
+ inline StInfo* getTypeInfo()
236
+ {
237
+ assert(typeinfo && "set the type info first");
238
+ return typeinfo;
239
+ }
240
+
241
+ inline const StInfo* getTypeInfo() const
242
+ {
243
+ assert(typeinfo && "set the type info first");
244
+ return typeinfo;
245
+ }
246
+
247
+ /// if Type is not sized, byteSize is 0
248
+ /// if Type is sized, byteSize is the LLVM Byte Size.
249
+ inline u32_t getByteSize() const
250
+ {
251
+ return byteSize;
252
+ }
253
+
254
+ inline bool isPointerTy() const
255
+ {
256
+ return kind == SVFPointerTy;
257
+ }
258
+
259
+ inline bool isArrayTy() const
260
+ {
261
+ return kind == SVFArrayTy;
262
+ }
263
+
264
+ inline bool isStructTy() const
265
+ {
266
+ return kind == SVFStructTy;
267
+ }
268
+
269
+ inline bool isSingleValueType() const
270
+ {
271
+ return isSingleValTy;
272
+ }
273
+ };
274
+
275
+ std::ostream& operator<<(std::ostream& os, const SVFType& type);
276
+
277
+ class SVFPointerType : public SVFType
278
+ {
279
+ friend class SVFIRWriter;
280
+ friend class SVFIRReader;
281
+
282
+ public:
283
+ SVFPointerType(u32_t i, u32_t byteSize = 1)
284
+ : SVFType(true, SVFPointerTy, i, byteSize)
285
+ {
286
+ }
287
+
288
+ static inline bool classof(const SVFType* node)
289
+ {
290
+ return node->getKind() == SVFPointerTy;
291
+ }
292
+
293
+ void print(std::ostream& os) const override;
294
+ };
295
+
296
+ class SVFIntegerType : public SVFType
297
+ {
298
+ friend class SVFIRWriter;
299
+ friend class SVFIRReader;
300
+
301
+ private:
302
+ short signAndWidth; ///< For printing
303
+
304
+ public:
305
+ SVFIntegerType(u32_t i, u32_t byteSize = 1) : SVFType(true, SVFIntegerTy, i, byteSize) {}
306
+ static inline bool classof(const SVFType* node)
307
+ {
308
+ return node->getKind() == SVFIntegerTy;
309
+ }
310
+
311
+ void print(std::ostream& os) const override;
312
+
313
+ void setSignAndWidth(short sw)
314
+ {
315
+ signAndWidth = sw;
316
+ }
317
+
318
+ bool isSigned() const
319
+ {
320
+ return signAndWidth < 0;
321
+ }
322
+ };
323
+
324
+ class SVFFunctionType : public SVFType
325
+ {
326
+ friend class SVFIRWriter;
327
+ friend class SVFIRReader;
328
+
329
+ private:
330
+ const SVFType* retTy;
331
+ std::vector<const SVFType*> params;
332
+ bool varArg;
333
+
334
+ public:
335
+ SVFFunctionType(u32_t i, const SVFType* rt, const std::vector<const SVFType*>& p, bool isvararg)
336
+ : SVFType(false, SVFFunctionTy, i, 1), retTy(rt), params(p), varArg(isvararg)
337
+ {
338
+ }
339
+
340
+ static inline bool classof(const SVFType* node)
341
+ {
342
+ return node->getKind() == SVFFunctionTy;
343
+ }
344
+ const SVFType* getReturnType() const
345
+ {
346
+ return retTy;
347
+ }
348
+
349
+ const std::vector<const SVFType*>& getParamTypes() const
350
+ {
351
+ return params;
352
+ }
353
+
354
+
355
+ bool isVarArg() const
356
+ {
357
+ return varArg;
358
+ }
359
+
360
+ void print(std::ostream& os) const override;
361
+ };
362
+
363
+ class SVFStructType : public SVFType
364
+ {
365
+ friend class SVFIRWriter;
366
+ friend class SVFIRReader;
367
+
368
+ private:
369
+ /// @brief Field for printing & debugging
370
+ std::string name;
371
+ std::vector<const SVFType*> fields;
372
+
373
+ public:
374
+ SVFStructType(u32_t i, std::vector<const SVFType *> &f, u32_t byteSize = 1) :
375
+ SVFType(false, SVFStructTy, i, byteSize), fields(f)
376
+ {
377
+ }
378
+
379
+ static inline bool classof(const SVFType* node)
380
+ {
381
+ return node->getKind() == SVFStructTy;
382
+ }
383
+
384
+ void print(std::ostream& os) const override;
385
+
386
+ const std::string& getName()
387
+ {
388
+ return name;
389
+ }
390
+ void setName(const std::string& structName)
391
+ {
392
+ name = structName;
393
+ }
394
+ void setName(std::string&& structName)
395
+ {
396
+ name = std::move(structName);
397
+ }
398
+
399
+ const std::vector<const SVFType*>& getFieldTypes() const
400
+ {
401
+ return fields;
402
+ }
403
+ };
404
+
405
+ class SVFArrayType : public SVFType
406
+ {
407
+ friend class SVFIRWriter;
408
+ friend class SVFIRReader;
409
+
410
+ private:
411
+ unsigned numOfElement; /// For printing & debugging
412
+ const SVFType* typeOfElement; /// For printing & debugging
413
+
414
+ public:
415
+ SVFArrayType(u32_t i, u32_t byteSize = 1)
416
+ : SVFType(false, SVFArrayTy, i, byteSize), numOfElement(0), typeOfElement(nullptr)
417
+ {
418
+ }
419
+
420
+ static inline bool classof(const SVFType* node)
421
+ {
422
+ return node->getKind() == SVFArrayTy;
423
+ }
424
+
425
+ void print(std::ostream& os) const override;
426
+
427
+ const SVFType* getTypeOfElement() const
428
+ {
429
+ return typeOfElement;
430
+ }
431
+
432
+ void setTypeOfElement(const SVFType* elemType)
433
+ {
434
+ typeOfElement = elemType;
435
+ }
436
+
437
+ void setNumOfElement(unsigned elemNum)
438
+ {
439
+ numOfElement = elemNum;
440
+ }
441
+
442
+
443
+ };
444
+
445
+ class SVFOtherType : public SVFType
446
+ {
447
+ friend class SVFIRWriter;
448
+ friend class SVFIRReader;
449
+
450
+ private:
451
+ std::string repr; /// Field representation for printing
452
+
453
+ public:
454
+ SVFOtherType(u32_t i, bool isSingleValueTy, u32_t byteSize = 1) : SVFType(isSingleValueTy, SVFOtherTy, i, byteSize) {}
455
+
456
+ static inline bool classof(const SVFType* node)
457
+ {
458
+ return node->getKind() == SVFOtherTy;
459
+ }
460
+
461
+ const std::string& getRepr()
462
+ {
463
+ return repr;
464
+ }
465
+
466
+ void setRepr(std::string&& r)
467
+ {
468
+ repr = std::move(r);
469
+ }
470
+
471
+ void setRepr(const std::string& r)
472
+ {
473
+ repr = r;
474
+ }
475
+
476
+ void print(std::ostream& os) const override;
477
+ };
478
+
479
+ // TODO: be explicit that this is a pair of 32-bit unsigneds?
480
+ template <> struct Hash<NodePair>
481
+ {
482
+ size_t operator()(const NodePair& p) const
483
+ {
484
+ // Make sure our assumptions are sound: use u32_t
485
+ // and u64_t. If NodeID is not actually u32_t or size_t
486
+ // is not u64_t we should be fine since we get a
487
+ // consistent result.
488
+ uint32_t first = (uint32_t)(p.first);
489
+ uint32_t second = (uint32_t)(p.second);
490
+ return ((uint64_t)(first) << 32) | (uint64_t)(second);
491
+ }
492
+ };
493
+
494
+ #if !defined NDBUG && defined USE_SVF_DBOUT
495
+ // TODO: This comes from the following link
496
+ // https://github.com/llvm/llvm-project/blob/75e33f71c2dae584b13a7d1186ae0a038ba98838/llvm/include/llvm/Support/Debug.h#L64
497
+ // The original LLVM implementation makes use of type. But we can get that info,
498
+ // so we can't simulate the full behaviour for now.
499
+ # define SVF_DEBUG_WITH_TYPE(TYPE, X) \
500
+ do \
501
+ { \
502
+ X; \
503
+ } while (false)
504
+ #else
505
+ # define SVF_DEBUG_WITH_TYPE(TYPE, X) \
506
+ do \
507
+ { \
508
+ } while (false)
509
+ #endif
510
+
511
+ /// LLVM debug macros, define type of your DBUG model of each pass
512
+ #define DBOUT(TYPE, X) SVF_DEBUG_WITH_TYPE(TYPE, X)
513
+ #define DOSTAT(X) X
514
+ #define DOTIMESTAT(X) X
515
+
516
+ /// General debug flag is for each phase of a pass, it is often in a colorful
517
+ /// output format
518
+ #define DGENERAL "general"
519
+
520
+ #define DPAGBuild "pag"
521
+ #define DMemModel "mm"
522
+ #define DMemModelCE "mmce"
523
+ #define DCOMModel "comm"
524
+ #define DDDA "dda"
525
+ #define DDumpPT "dumppt"
526
+ #define DRefinePT "sbpt"
527
+ #define DCache "cache"
528
+ #define DWPA "wpa"
529
+ #define DMSSA "mssa"
530
+ #define DInstrument "ins"
531
+ #define DAndersen "ander"
532
+ #define DSaber "saber"
533
+ #define DMTA "mta"
534
+ #define DCHA "cha"
535
+
536
+ /*
537
+ * Number of clock ticks per second. A clock tick is the unit by which
538
+ * processor time is measured and is returned by 'clock'.
539
+ */
540
+ #define TIMEINTERVAL 1000
541
+ #define CLOCK_IN_MS() (clock() / (CLOCKS_PER_SEC / TIMEINTERVAL))
542
+
543
+ /// Size of native integer that we'll use for bit vectors, in bits.
544
+ #define NATIVE_INT_SIZE (sizeof(unsigned long long) * CHAR_BIT)
545
+
546
+ enum ModRefInfo
547
+ {
548
+ ModRef,
549
+ Ref,
550
+ Mod,
551
+ NoModRef,
552
+ };
553
+
554
+ enum AliasResult
555
+ {
556
+ NoAlias,
557
+ MayAlias,
558
+ MustAlias,
559
+ PartialAlias,
560
+ };
561
+
562
+ } // End namespace SVF
563
+
564
+ template <> struct std::hash<SVF::NodePair>
565
+ {
566
+ size_t operator()(const SVF::NodePair& p) const
567
+ {
568
+ // Make sure our assumptions are sound: use u32_t
569
+ // and u64_t. If NodeID is not actually u32_t or size_t
570
+ // is not u64_t we should be fine since we get a
571
+ // consistent result.
572
+ uint32_t first = (uint32_t)(p.first);
573
+ uint32_t second = (uint32_t)(p.second);
574
+ return ((uint64_t)(first) << 32) | (uint64_t)(second);
575
+ }
576
+ };
577
+
578
+ /// Specialise hash for SparseBitVectors.
579
+ template <unsigned N> struct std::hash<SVF::SparseBitVector<N>>
580
+ {
581
+ size_t operator()(const SVF::SparseBitVector<N>& sbv) const
582
+ {
583
+ SVF::Hash<std::pair<std::pair<size_t, size_t>, size_t>> h;
584
+ return h(std::make_pair(std::make_pair(sbv.count(), sbv.find_first()),
585
+ sbv.find_last()));
586
+ }
587
+ };
588
+
589
+ template <typename T> struct std::hash<std::vector<T>>
590
+ {
591
+ size_t operator()(const std::vector<T>& v) const
592
+ {
593
+ // TODO: repetition with CBV.
594
+ size_t h = v.size();
595
+
596
+ SVF::Hash<T> hf;
597
+ for (const T& t : v)
598
+ {
599
+ h ^= hf(t) + 0x9e3779b9 + (h << 6) + (h >> 2);
600
+ }
601
+
602
+ return h;
603
+ }
604
+ };
605
+
606
+ #endif /* INCLUDE_SVFIR_SVFTYPE_H_ */