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,418 @@
1
+ //===- ConsGNode.h -- Constraint graph node-----------------------------------//
2
+ //
3
+ // SVF: Static Value-Flow Analysis
4
+ //
5
+ // Copyright (C) <2013-2017> <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
+ * ConsGNode.h
25
+ *
26
+ * Created on: Mar 19, 2014
27
+ * Author: Yulei Sui
28
+ */
29
+
30
+ #ifndef CONSGNODE_H_
31
+ #define CONSGNODE_H_
32
+
33
+ namespace SVF
34
+ {
35
+
36
+ /*!
37
+ * Constraint node
38
+ */
39
+ typedef GenericNode<ConstraintNode,ConstraintEdge> GenericConsNodeTy;
40
+ class ConstraintNode : public GenericConsNodeTy
41
+ {
42
+
43
+ public:
44
+ typedef ConstraintEdge::ConstraintEdgeSetTy::iterator iterator;
45
+ typedef ConstraintEdge::ConstraintEdgeSetTy::const_iterator const_iterator;
46
+ bool _isPWCNode;
47
+
48
+ private:
49
+ ConstraintEdge::ConstraintEdgeSetTy loadInEdges; ///< all incoming load edge of this node
50
+ ConstraintEdge::ConstraintEdgeSetTy loadOutEdges; ///< all outgoing load edge of this node
51
+
52
+ ConstraintEdge::ConstraintEdgeSetTy storeInEdges; ///< all incoming store edge of this node
53
+ ConstraintEdge::ConstraintEdgeSetTy storeOutEdges; ///< all outgoing store edge of this node
54
+
55
+ /// Copy/call/ret/gep incoming edge of this node,
56
+ /// To be noted: this set is only used when SCC detection, and node merges
57
+ ConstraintEdge::ConstraintEdgeSetTy directInEdges;
58
+ ConstraintEdge::ConstraintEdgeSetTy directOutEdges;
59
+
60
+ ConstraintEdge::ConstraintEdgeSetTy copyInEdges;
61
+ ConstraintEdge::ConstraintEdgeSetTy copyOutEdges;
62
+
63
+ ConstraintEdge::ConstraintEdgeSetTy gepInEdges;
64
+ ConstraintEdge::ConstraintEdgeSetTy gepOutEdges;
65
+
66
+ ConstraintEdge::ConstraintEdgeSetTy addressInEdges; ///< all incoming address edge of this node
67
+ ConstraintEdge::ConstraintEdgeSetTy addressOutEdges; ///< all outgoing address edge of this node
68
+
69
+ public:
70
+ /// For stride-based field representation
71
+ NodeBS strides;
72
+ NodeBS baseIds;
73
+
74
+ ConstraintNode(NodeID i) : GenericConsNodeTy(i, ConstraintNodeKd), _isPWCNode(false)
75
+ {
76
+
77
+ }
78
+
79
+ /// Whether a node involves in PWC, if so, all its points-to elements should become field-insensitive.
80
+ //@{
81
+ inline bool isPWCNode() const
82
+ {
83
+ return _isPWCNode;
84
+ }
85
+ inline void setPWCNode()
86
+ {
87
+ _isPWCNode = true;
88
+ }
89
+ //@}
90
+
91
+ /// Direct and Indirect SVFIR edges
92
+ inline bool isdirectEdge(ConstraintEdge::ConstraintEdgeK kind)
93
+ {
94
+ return (kind == ConstraintEdge::Copy || kind == ConstraintEdge::NormalGep || kind == ConstraintEdge::VariantGep );
95
+ }
96
+ inline bool isIndirectEdge(ConstraintEdge::ConstraintEdgeK kind)
97
+ {
98
+ return (kind == ConstraintEdge::Load || kind == ConstraintEdge::Store);
99
+ }
100
+
101
+ /// Return constraint edges
102
+ //@{
103
+ inline const ConstraintEdge::ConstraintEdgeSetTy& getDirectInEdges() const
104
+ {
105
+ return directInEdges;
106
+ }
107
+ inline const ConstraintEdge::ConstraintEdgeSetTy& getDirectOutEdges() const
108
+ {
109
+ return directOutEdges;
110
+ }
111
+ inline const ConstraintEdge::ConstraintEdgeSetTy& getCopyInEdges() const
112
+ {
113
+ return copyInEdges;
114
+ }
115
+ inline const ConstraintEdge::ConstraintEdgeSetTy& getCopyOutEdges() const
116
+ {
117
+ return copyOutEdges;
118
+ }
119
+ inline const ConstraintEdge::ConstraintEdgeSetTy& getGepInEdges() const
120
+ {
121
+ return gepInEdges;
122
+ }
123
+ inline const ConstraintEdge::ConstraintEdgeSetTy& getGepOutEdges() const
124
+ {
125
+ return gepOutEdges;
126
+ }
127
+ inline const ConstraintEdge::ConstraintEdgeSetTy& getLoadInEdges() const
128
+ {
129
+ return loadInEdges;
130
+ }
131
+ inline const ConstraintEdge::ConstraintEdgeSetTy& getLoadOutEdges() const
132
+ {
133
+ return loadOutEdges;
134
+ }
135
+ inline const ConstraintEdge::ConstraintEdgeSetTy& getStoreInEdges() const
136
+ {
137
+ return storeInEdges;
138
+ }
139
+ inline const ConstraintEdge::ConstraintEdgeSetTy& getStoreOutEdges() const
140
+ {
141
+ return storeOutEdges;
142
+ }
143
+ inline const ConstraintEdge::ConstraintEdgeSetTy& getAddrInEdges() const
144
+ {
145
+ return addressInEdges;
146
+ }
147
+ inline const ConstraintEdge::ConstraintEdgeSetTy& getAddrOutEdges() const
148
+ {
149
+ return addressOutEdges;
150
+ }
151
+ //@}
152
+
153
+ /// Iterators
154
+ //@{
155
+ iterator directOutEdgeBegin();
156
+ iterator directOutEdgeEnd();
157
+ iterator directInEdgeBegin();
158
+ iterator directInEdgeEnd();
159
+ const_iterator directOutEdgeBegin() const;
160
+ const_iterator directOutEdgeEnd() const;
161
+ const_iterator directInEdgeBegin() const;
162
+ const_iterator directInEdgeEnd() const;
163
+
164
+ ConstraintEdge::ConstraintEdgeSetTy& incomingAddrEdges()
165
+ {
166
+ return addressInEdges;
167
+ }
168
+ ConstraintEdge::ConstraintEdgeSetTy& outgoingAddrEdges()
169
+ {
170
+ return addressOutEdges;
171
+ }
172
+
173
+ inline const_iterator outgoingAddrsBegin() const
174
+ {
175
+ return addressOutEdges.begin();
176
+ }
177
+ inline const_iterator outgoingAddrsEnd() const
178
+ {
179
+ return addressOutEdges.end();
180
+ }
181
+ inline const_iterator incomingAddrsBegin() const
182
+ {
183
+ return addressInEdges.begin();
184
+ }
185
+ inline const_iterator incomingAddrsEnd() const
186
+ {
187
+ return addressInEdges.end();
188
+ }
189
+
190
+ inline const_iterator outgoingLoadsBegin() const
191
+ {
192
+ return loadOutEdges.begin();
193
+ }
194
+ inline const_iterator outgoingLoadsEnd() const
195
+ {
196
+ return loadOutEdges.end();
197
+ }
198
+ inline const_iterator incomingLoadsBegin() const
199
+ {
200
+ return loadInEdges.begin();
201
+ }
202
+ inline const_iterator incomingLoadsEnd() const
203
+ {
204
+ return loadInEdges.end();
205
+ }
206
+
207
+ inline const_iterator outgoingStoresBegin() const
208
+ {
209
+ return storeOutEdges.begin();
210
+ }
211
+ inline const_iterator outgoingStoresEnd() const
212
+ {
213
+ return storeOutEdges.end();
214
+ }
215
+ inline const_iterator incomingStoresBegin() const
216
+ {
217
+ return storeInEdges.begin();
218
+ }
219
+ inline const_iterator incomingStoresEnd() const
220
+ {
221
+ return storeInEdges.end();
222
+ }
223
+ //@}
224
+
225
+ /// Add constraint graph edges
226
+ //@{
227
+ inline void addIncomingCopyEdge(CopyCGEdge *inEdge)
228
+ {
229
+ addIncomingDirectEdge(inEdge);
230
+ copyInEdges.insert(inEdge);
231
+ }
232
+ inline void addIncomingGepEdge(GepCGEdge* inEdge)
233
+ {
234
+ addIncomingDirectEdge(inEdge);
235
+ gepInEdges.insert(inEdge);
236
+ }
237
+ inline void addOutgoingCopyEdge(CopyCGEdge *outEdge)
238
+ {
239
+ addOutgoingDirectEdge(outEdge);
240
+ copyOutEdges.insert(outEdge);
241
+ }
242
+ inline void addOutgoingGepEdge(GepCGEdge* outEdge)
243
+ {
244
+ addOutgoingDirectEdge(outEdge);
245
+ gepOutEdges.insert(outEdge);
246
+ }
247
+ inline void addIncomingAddrEdge(AddrCGEdge* inEdge)
248
+ {
249
+ addressInEdges.insert(inEdge);
250
+ addIncomingEdge(inEdge);
251
+ }
252
+ inline void addIncomingLoadEdge(LoadCGEdge* inEdge)
253
+ {
254
+ loadInEdges.insert(inEdge);
255
+ addIncomingEdge(inEdge);
256
+ }
257
+ inline void addIncomingStoreEdge(StoreCGEdge* inEdge)
258
+ {
259
+ storeInEdges.insert(inEdge);
260
+ addIncomingEdge(inEdge);
261
+ }
262
+ inline bool addIncomingDirectEdge(ConstraintEdge* inEdge)
263
+ {
264
+ assert(inEdge->getDstID() == this->getId());
265
+ bool added1 = directInEdges.insert(inEdge).second;
266
+ bool added2 = addIncomingEdge(inEdge);
267
+ bool both_added = added1 & added2;
268
+ assert(both_added && "edge not added, duplicated adding!!");
269
+ return both_added;
270
+ }
271
+ inline void addOutgoingAddrEdge(AddrCGEdge* outEdge)
272
+ {
273
+ addressOutEdges.insert(outEdge);
274
+ addOutgoingEdge(outEdge);
275
+ }
276
+ inline bool addOutgoingLoadEdge(LoadCGEdge* outEdge)
277
+ {
278
+ bool added1 = loadOutEdges.insert(outEdge).second;
279
+ bool added2 = addOutgoingEdge(outEdge);
280
+ bool both_added = added1 & added2;
281
+ assert(both_added && "edge not added, duplicated adding!!");
282
+ return both_added;
283
+ }
284
+ inline bool addOutgoingStoreEdge(StoreCGEdge* outEdge)
285
+ {
286
+ bool added1 = storeOutEdges.insert(outEdge).second;
287
+ bool added2 = addOutgoingEdge(outEdge);
288
+ bool both_added = added1 & added2;
289
+ assert(both_added && "edge not added, duplicated adding!!");
290
+ return both_added;
291
+ }
292
+ inline bool addOutgoingDirectEdge(ConstraintEdge* outEdge)
293
+ {
294
+ assert(outEdge->getSrcID() == this->getId());
295
+ bool added1 = directOutEdges.insert(outEdge).second;
296
+ bool added2 = addOutgoingEdge(outEdge);
297
+ bool both_added = added1 & added2;
298
+ assert(both_added && "edge not added, duplicated adding!!");
299
+ return both_added;
300
+ }
301
+ //@}
302
+
303
+ /// Remove constraint graph edges
304
+ //{@
305
+ inline bool removeOutgoingAddrEdge(AddrCGEdge* outEdge)
306
+ {
307
+ u32_t num1 = addressOutEdges.erase(outEdge);
308
+ u32_t num2 = removeOutgoingEdge(outEdge);
309
+ bool removed = (num1 > 0) & (num2 > 0);
310
+ assert(removed && "edge not in the set, can not remove!!!");
311
+ return removed;
312
+ }
313
+
314
+ inline bool removeIncomingAddrEdge(AddrCGEdge* inEdge)
315
+ {
316
+ u32_t num1 = addressInEdges.erase(inEdge);
317
+ u32_t num2 = removeIncomingEdge(inEdge);
318
+ bool removed = (num1 > 0) & (num2 > 0);
319
+ assert(removed && "edge not in the set, can not remove!!!");
320
+ return removed;
321
+ }
322
+
323
+ inline bool removeOutgoingDirectEdge(ConstraintEdge* outEdge)
324
+ {
325
+ if (SVFUtil::isa<GepCGEdge>(outEdge))
326
+ gepOutEdges.erase(outEdge);
327
+ else
328
+ copyOutEdges.erase(outEdge);
329
+ u32_t num1 = directOutEdges.erase(outEdge);
330
+ u32_t num2 = removeOutgoingEdge(outEdge);
331
+ bool removed = (num1 > 0) & (num2 > 0);
332
+ assert(removed && "edge not in the set, can not remove!!!");
333
+ return removed;
334
+ }
335
+
336
+ inline bool removeIncomingDirectEdge(ConstraintEdge* inEdge)
337
+ {
338
+ if (SVFUtil::isa<GepCGEdge>(inEdge))
339
+ gepInEdges.erase(inEdge);
340
+ else
341
+ copyInEdges.erase(inEdge);
342
+ u32_t num1 = directInEdges.erase(inEdge);
343
+ u32_t num2 = removeIncomingEdge(inEdge);
344
+ bool removed = (num1 > 0) & (num2 > 0);
345
+ assert(removed && "edge not in the set, can not remove!!!");
346
+ return removed;
347
+ }
348
+
349
+ inline bool removeOutgoingLoadEdge(LoadCGEdge* outEdge)
350
+ {
351
+ u32_t num1 = loadOutEdges.erase(outEdge);
352
+ u32_t num2 = removeOutgoingEdge(outEdge);
353
+ bool removed = (num1 > 0) & (num2 > 0);
354
+ assert(removed && "edge not in the set, can not remove!!!");
355
+ return removed;
356
+ }
357
+
358
+ inline bool removeIncomingLoadEdge(LoadCGEdge* inEdge)
359
+ {
360
+ u32_t num1 = loadInEdges.erase(inEdge);
361
+ u32_t num2 = removeIncomingEdge(inEdge);
362
+ bool removed = (num1 > 0) & (num2 > 0);
363
+ assert(removed && "edge not in the set, can not remove!!!");
364
+ return removed;
365
+ }
366
+
367
+ inline bool removeOutgoingStoreEdge(StoreCGEdge* outEdge)
368
+ {
369
+ u32_t num1 = storeOutEdges.erase(outEdge);
370
+ u32_t num2 = removeOutgoingEdge(outEdge);
371
+ bool removed = (num1 > 0) & (num2 > 0);
372
+ assert(removed && "edge not in the set, can not remove!!!");
373
+ return removed;
374
+ }
375
+
376
+ inline bool removeIncomingStoreEdge(StoreCGEdge* inEdge)
377
+ {
378
+ u32_t num1 = storeInEdges.erase(inEdge);
379
+ u32_t num2 = removeIncomingEdge(inEdge);
380
+ bool removed = (num1 > 0) & (num2 > 0);
381
+ assert(removed && "edge not in the set, can not remove!!!");
382
+ return removed;
383
+ }
384
+ //@}
385
+
386
+ virtual const std::string toString() const;
387
+
388
+ /// Overloading operator << for dumping node
389
+ //@{
390
+ friend OutStream &operator<<(OutStream &o, const ConstraintNode &node)
391
+ {
392
+ o << node.toString();
393
+ return o;
394
+ }
395
+ //@}
396
+
397
+ /// Methods for support type inquiry through isa, cast, and dyn_cast:
398
+ //@{
399
+ static inline bool classof(const ConstraintNode *)
400
+ {
401
+ return true;
402
+ }
403
+
404
+ static inline bool classof(const GenericICFGNodeTy* node)
405
+ {
406
+ return node->getNodeKind() == ConstraintNodeKd;
407
+ }
408
+
409
+ static inline bool classof(const SVFValue* node)
410
+ {
411
+ return node->getNodeKind() == ConstraintNodeKd;
412
+ }
413
+ //@}
414
+ };
415
+
416
+ } // End namespace SVF
417
+
418
+ #endif /* CONSGNODE_H_ */
@@ -0,0 +1,188 @@
1
+ //===-- Graphs/DOTGraphTraits.h - Customize .dot output ---*- C++ -*-===//
2
+ //
3
+ // From the LLVM Project with some modifications, under the Apache License v2.0
4
+ // with LLVM Exceptions. See https://llvm.org/LICENSE.txt for license information.
5
+ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+ //
9
+ // This file defines a template class that can be used to customize dot output
10
+ // graphs generated by the GraphWriter.h file. The default implementation of
11
+ // this file will produce a simple, but not very polished graph. By
12
+ // specializing this template, lots of customization opportunities are possible.
13
+ //
14
+ //===----------------------------------------------------------------------===//
15
+
16
+ #ifndef GRAPHS_DOTGRAPHTRAITS_H
17
+ #define GRAPHS_DOTGRAPHTRAITS_H
18
+
19
+ #include <string>
20
+
21
+ namespace SVF
22
+ {
23
+
24
+ /// DefaultDOTGraphTraits - This class provides the default implementations of
25
+ /// all of the DOTGraphTraits methods. If a specialization does not need to
26
+ /// override all methods here it should inherit so that it can get the default
27
+ /// implementations.
28
+ ///
29
+ struct DefaultDOTGraphTraits
30
+ {
31
+ private:
32
+ bool IsSimple;
33
+
34
+ protected:
35
+ bool isSimple()
36
+ {
37
+ return IsSimple;
38
+ }
39
+
40
+ public:
41
+ explicit DefaultDOTGraphTraits(bool simple=false) : IsSimple (simple) {}
42
+
43
+ /// getGraphName - Return the label for the graph as a whole. Printed at the
44
+ /// top of the graph.
45
+ ///
46
+ template<typename GraphType>
47
+ static std::string getGraphName(const GraphType &)
48
+ {
49
+ return "";
50
+ }
51
+
52
+ /// getGraphProperties - Return any custom properties that should be included
53
+ /// in the top level graph structure for dot.
54
+ ///
55
+ template<typename GraphType>
56
+ static std::string getGraphProperties(const GraphType &)
57
+ {
58
+ return "";
59
+ }
60
+
61
+ /// renderGraphFromBottomUp - If this function returns true, the graph is
62
+ /// emitted bottom-up instead of top-down. This requires graphviz 2.0 to work
63
+ /// though.
64
+ static bool renderGraphFromBottomUp()
65
+ {
66
+ return false;
67
+ }
68
+
69
+ /// isNodeHidden - If the function returns true, the given node is not
70
+ /// displayed in the graph.
71
+ template <typename GraphType>
72
+ static bool isNodeHidden(const void *, const GraphType &)
73
+ {
74
+ return false;
75
+ }
76
+
77
+ /// getNodeLabel - Given a node and a pointer to the top level graph, return
78
+ /// the label to print in the node.
79
+ template<typename GraphType>
80
+ std::string getNodeLabel(const void *, const GraphType &)
81
+ {
82
+ return "";
83
+ }
84
+
85
+ // getNodeIdentifierLabel - Returns a string representing the
86
+ // address or other unique identifier of the node. (Only used if
87
+ // non-empty.)
88
+ template <typename GraphType>
89
+ static std::string getNodeIdentifierLabel(const void *, const GraphType &)
90
+ {
91
+ return "";
92
+ }
93
+
94
+ template<typename GraphType>
95
+ static std::string getNodeDescription(const void *, const GraphType &)
96
+ {
97
+ return "";
98
+ }
99
+
100
+ /// If you want to specify custom node attributes, this is the place to do so
101
+ ///
102
+ template<typename GraphType>
103
+ static std::string getNodeAttributes(const void *,
104
+ const GraphType &)
105
+ {
106
+ return "";
107
+ }
108
+
109
+ /// If you want to override the dot attributes printed for a particular edge,
110
+ /// override this method.
111
+ template<typename EdgeIter, typename GraphType>
112
+ static std::string getEdgeAttributes(const void *, EdgeIter,
113
+ const GraphType &)
114
+ {
115
+ return "";
116
+ }
117
+
118
+ /// getEdgeSourceLabel - If you want to label the edge source itself,
119
+ /// implement this method.
120
+ template<typename EdgeIter>
121
+ static std::string getEdgeSourceLabel(const void *, EdgeIter)
122
+ {
123
+ return "";
124
+ }
125
+
126
+ /// edgeTargetsEdgeSource - This method returns true if this outgoing edge
127
+ /// should actually target another edge source, not a node. If this method is
128
+ /// implemented, getEdgeTarget should be implemented.
129
+ template<typename EdgeIter>
130
+ static bool edgeTargetsEdgeSource(const void *, EdgeIter)
131
+ {
132
+ return false;
133
+ }
134
+
135
+ /// getEdgeTarget - If edgeTargetsEdgeSource returns true, this method is
136
+ /// called to determine which outgoing edge of Node is the target of this
137
+ /// edge.
138
+ template<typename EdgeIter>
139
+ static EdgeIter getEdgeTarget(const void *, EdgeIter I)
140
+ {
141
+ return I;
142
+ }
143
+
144
+ /// hasEdgeDestLabels - If this function returns true, the graph is able
145
+ /// to provide labels for edge destinations.
146
+ static bool hasEdgeDestLabels()
147
+ {
148
+ return false;
149
+ }
150
+
151
+ /// numEdgeDestLabels - If hasEdgeDestLabels, this function returns the
152
+ /// number of incoming edge labels the given node has.
153
+ static unsigned numEdgeDestLabels(const void *)
154
+ {
155
+ return 0;
156
+ }
157
+
158
+ /// getEdgeDestLabel - If hasEdgeDestLabels, this function returns the
159
+ /// incoming edge label with the given index in the given node.
160
+ static std::string getEdgeDestLabel(const void *, unsigned)
161
+ {
162
+ return "";
163
+ }
164
+
165
+ /// addCustomGraphFeatures - If a graph is made up of more than just
166
+ /// straight-forward nodes and edges, this is the place to put all of the
167
+ /// custom stuff necessary. The GraphWriter object, instantiated with your
168
+ /// GraphType is passed in as an argument. You may call arbitrary methods on
169
+ /// it to add things to the output graph.
170
+ ///
171
+ template<typename GraphType, typename GraphWriter>
172
+ static void addCustomGraphFeatures(const GraphType &, GraphWriter &) {}
173
+ };
174
+
175
+
176
+ /// DOTGraphTraits - Template class that can be specialized to customize how
177
+ /// graphs are converted to 'dot' graphs. When specializing, you may inherit
178
+ /// from DefaultDOTGraphTraits if you don't need to override everything.
179
+ ///
180
+ template <typename Ty>
181
+ struct DOTGraphTraits : public DefaultDOTGraphTraits
182
+ {
183
+ DOTGraphTraits (bool simple=false) : DefaultDOTGraphTraits (simple) {}
184
+ };
185
+
186
+ } // End llvm namespace
187
+
188
+ #endif