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.
- package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/WorkList.h +0 -0
- package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/Modules/FindZ3.cmake +93 -0
- package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFConfig.cmake +106 -0
- package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFConfigVersion.cmake +43 -0
- package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFTargets-release.cmake +101 -0
- package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFTargets.cmake +180 -0
- package/SVF-linux-aarch64/Release-build/lib/libSvfCore.so.3.1 +0 -0
- package/SVF-linux-aarch64/Release-build/lib/libSvfLLVM.so.3.1 +0 -0
- package/SVF-linux-aarch64/Release-build/lib/pkgconfig/SVF.pc +12 -0
- package/SVF-osx/Release-build/bin/ae +0 -0
- package/SVF-osx/Release-build/bin/cfl +0 -0
- package/SVF-osx/Release-build/bin/dvf +0 -0
- package/SVF-osx/Release-build/bin/llvm2svf +0 -0
- package/SVF-osx/Release-build/bin/mta +0 -0
- package/SVF-osx/Release-build/bin/saber +0 -0
- package/SVF-osx/Release-build/bin/svf-ex +0 -0
- package/SVF-osx/Release-build/bin/wpa +0 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/AbstractState.h +425 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/AbstractValue.h +157 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/AddressValue.h +225 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/ICFGWTO.h +135 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/IntervalValue.h +1055 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/NumericValue.h +1292 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/RelExeState.h +226 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/RelationSolver.h +91 -0
- package/SVF-osx/Release-build/include/SVF/AE/Svfexe/AEDetector.h +439 -0
- package/SVF-osx/Release-build/include/SVF/AE/Svfexe/AbsExtAPI.h +138 -0
- package/SVF-osx/Release-build/include/SVF/AE/Svfexe/AbstractInterpretation.h +384 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFGNormalizer.h +84 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFGrammar.h +468 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLAlias.h +168 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLBase.h +118 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLGramGraphChecker.h +74 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLGraphBuilder.h +168 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLSVFGBuilder.h +58 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLSolver.h +374 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLStat.h +67 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLVF.h +68 -0
- package/SVF-osx/Release-build/include/SVF/CFL/GrammarBuilder.h +100 -0
- package/SVF-osx/Release-build/include/SVF/DDA/ContextDDA.h +230 -0
- package/SVF-osx/Release-build/include/SVF/DDA/DDAClient.h +163 -0
- package/SVF-osx/Release-build/include/SVF/DDA/DDAPass.h +102 -0
- package/SVF-osx/Release-build/include/SVF/DDA/DDAStat.h +121 -0
- package/SVF-osx/Release-build/include/SVF/DDA/DDAVFSolver.h +794 -0
- package/SVF-osx/Release-build/include/SVF/DDA/FlowDDA.h +178 -0
- package/SVF-osx/Release-build/include/SVF/FastCluster/fastcluster.h +80 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/BasicBlockG.h +318 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/CDG.h +482 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/CFLGraph.h +232 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/CHG.h +368 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/CallGraph.h +497 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ConsG.h +402 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ConsGEdge.h +355 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ConsGNode.h +418 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/DOTGraphTraits.h +188 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/GenericGraph.h +628 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/GraphPrinter.h +111 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/GraphTraits.h +150 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/GraphWriter.h +380 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ICFG.h +331 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ICFGEdge.h +281 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ICFGNode.h +669 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ICFGStat.h +164 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/IRGraph.h +398 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/SCC.h +375 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/SVFG.h +491 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/SVFGEdge.h +237 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/SVFGNode.h +501 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/SVFGOPT.h +372 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/SVFGStat.h +273 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ThreadCallGraph.h +399 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/VFG.h +726 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/VFGEdge.h +295 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/VFGNode.h +1266 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/WTO.h +872 -0
- package/SVF-osx/Release-build/include/SVF/MSSA/MSSAMuChi.h +722 -0
- package/SVF-osx/Release-build/include/SVF/MSSA/MemPartition.h +169 -0
- package/SVF-osx/Release-build/include/SVF/MSSA/MemRegion.h +489 -0
- package/SVF-osx/Release-build/include/SVF/MSSA/MemSSA.h +452 -0
- package/SVF-osx/Release-build/include/SVF/MSSA/SVFGBuilder.h +104 -0
- package/SVF-osx/Release-build/include/SVF/MTA/LockAnalysis.h +533 -0
- package/SVF-osx/Release-build/include/SVF/MTA/MHP.h +546 -0
- package/SVF-osx/Release-build/include/SVF/MTA/MTA.h +97 -0
- package/SVF-osx/Release-build/include/SVF/MTA/MTAStat.h +73 -0
- package/SVF-osx/Release-build/include/SVF/MTA/TCT.h +620 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/AbstractPointsToDS.h +316 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/AccessPath.h +194 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/ConditionalPT.h +878 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/MutablePointsToDS.h +1025 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/PersistentPointsToCache.h +463 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/PersistentPointsToDS.h +955 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/PointerAnalysis.h +428 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/PointerAnalysisImpl.h +602 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/PointsTo.h +255 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/SVFLoop.h +167 -0
- package/SVF-osx/Release-build/include/SVF/SABER/DoubleFreeChecker.h +76 -0
- package/SVF-osx/Release-build/include/SVF/SABER/FileChecker.h +80 -0
- package/SVF-osx/Release-build/include/SVF/SABER/LeakChecker.h +122 -0
- package/SVF-osx/Release-build/include/SVF/SABER/ProgSlice.h +327 -0
- package/SVF-osx/Release-build/include/SVF/SABER/SaberCheckerAPI.h +151 -0
- package/SVF-osx/Release-build/include/SVF/SABER/SaberCondAllocator.h +317 -0
- package/SVF-osx/Release-build/include/SVF/SABER/SaberSVFGBuilder.h +114 -0
- package/SVF-osx/Release-build/include/SVF/SABER/SrcSnkDDA.h +327 -0
- package/SVF-osx/Release-build/include/SVF/SABER/SrcSnkSolver.h +186 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/BasicTypes.h +280 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/BreakConstantExpr.h +93 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/CHGBuilder.h +78 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/CppUtil.h +184 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/DCHG.h +474 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/GEPTypeBridgeIterator.h +183 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/ICFGBuilder.h +160 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/LLVMLoopAnalysis.h +60 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/LLVMModule.h +527 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/LLVMUtil.h +433 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/ObjTypeInference.h +129 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/SVFIRBuilder.h +523 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/SymbolTableBuilder.h +132 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/ObjTypeInfo.h +224 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/PAGBuilderFromFile.h +80 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/SVFIR.h +856 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/SVFStatements.h +1330 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/SVFType.h +606 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/SVFValue.h +338 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/SVFVariables.h +2212 -0
- package/SVF-osx/Release-build/include/SVF/Util/Annotator.h +180 -0
- package/SVF-osx/Release-build/include/SVF/Util/BitVector.h +55 -0
- package/SVF-osx/Release-build/include/SVF/Util/CDGBuilder.h +107 -0
- package/SVF-osx/Release-build/include/SVF/Util/CallGraphBuilder.h +61 -0
- package/SVF-osx/Release-build/include/SVF/Util/Casting.h +426 -0
- package/SVF-osx/Release-build/include/SVF/Util/CommandLine.h +530 -0
- package/SVF-osx/Release-build/include/SVF/Util/CoreBitVector.h +214 -0
- package/SVF-osx/Release-build/include/SVF/Util/CxtStmt.h +502 -0
- package/SVF-osx/Release-build/include/SVF/Util/DPItem.h +618 -0
- package/SVF-osx/Release-build/include/SVF/Util/ExtAPI.h +117 -0
- package/SVF-osx/Release-build/include/SVF/Util/GeneralType.h +127 -0
- package/SVF-osx/Release-build/include/SVF/Util/GraphReachSolver.h +186 -0
- package/SVF-osx/Release-build/include/SVF/Util/NodeIDAllocator.h +203 -0
- package/SVF-osx/Release-build/include/SVF/Util/Options.h +273 -0
- package/SVF-osx/Release-build/include/SVF/Util/PTAStat.h +83 -0
- package/SVF-osx/Release-build/include/SVF/Util/SVFBugReport.h +427 -0
- package/SVF-osx/Release-build/include/SVF/Util/SVFLoopAndDomInfo.h +169 -0
- package/SVF-osx/Release-build/include/SVF/Util/SVFStat.h +103 -0
- package/SVF-osx/Release-build/include/SVF/Util/SVFUtil.h +478 -0
- package/SVF-osx/Release-build/include/SVF/Util/SparseBitVector.h +1252 -0
- package/SVF-osx/Release-build/include/SVF/Util/ThreadAPI.h +188 -0
- package/SVF-osx/Release-build/include/SVF/Util/WorkList.h +317 -0
- package/SVF-osx/Release-build/include/SVF/Util/Z3Expr.h +325 -0
- package/SVF-osx/Release-build/include/SVF/Util/cJSON.h +300 -0
- package/SVF-osx/Release-build/include/SVF/Util/config.h +46 -0
- package/SVF-osx/Release-build/include/SVF/Util/iterator.h +407 -0
- package/SVF-osx/Release-build/include/SVF/Util/iterator_range.h +76 -0
- package/SVF-osx/Release-build/include/SVF/WPA/Andersen.h +434 -0
- package/SVF-osx/Release-build/include/SVF/WPA/AndersenPWC.h +160 -0
- package/SVF-osx/Release-build/include/SVF/WPA/CSC.h +95 -0
- package/SVF-osx/Release-build/include/SVF/WPA/FlowSensitive.h +322 -0
- package/SVF-osx/Release-build/include/SVF/WPA/Steensgaard.h +131 -0
- package/SVF-osx/Release-build/include/SVF/WPA/TypeAnalysis.h +90 -0
- package/SVF-osx/Release-build/include/SVF/WPA/VersionedFlowSensitive.h +295 -0
- package/SVF-osx/Release-build/include/SVF/WPA/WPAFSSolver.h +246 -0
- package/SVF-osx/Release-build/include/SVF/WPA/WPAPass.h +115 -0
- package/SVF-osx/Release-build/include/SVF/WPA/WPASolver.h +205 -0
- package/SVF-osx/Release-build/include/SVF/WPA/WPAStat.h +222 -0
- package/SVF-osx/Release-build/include/SVF/extapi.bc +2384 -0
- package/SVF-osx/Release-build/lib/cmake/SVF/Modules/FindZ3.cmake +93 -0
- package/SVF-osx/Release-build/lib/cmake/SVF/SVFConfig.cmake +106 -0
- package/SVF-osx/Release-build/lib/cmake/SVF/SVFConfigVersion.cmake +43 -0
- package/SVF-osx/Release-build/lib/cmake/SVF/SVFTargets-release.cmake +101 -0
- package/SVF-osx/Release-build/lib/cmake/SVF/SVFTargets.cmake +180 -0
- package/SVF-osx/Release-build/lib/libSvfCore.3.1.dylib +0 -0
- package/SVF-osx/Release-build/lib/libSvfLLVM.3.1.dylib +0 -0
- package/SVF-osx/Release-build/lib/pkgconfig/SVF.pc +12 -0
- package/package.json +1 -1
- package/SVF-linux-aarch64/Release-build/include/CFL/grammar/PAGGrammar.txt +0 -15
- package/SVF-linux-aarch64/Release-build/include/CFL/grammar/PEGGrammar.txt +0 -11
- package/SVF-linux-aarch64/Release-build/include/CFL/grammar/VFGGrammar.txt +0 -7
- package/SVF-linux-aarch64/Release-build/include/FastCluster/LICENSE.TXT +0 -13
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/AbstractState.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/AbstractValue.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/AddressValue.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/ICFGWTO.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/IntervalValue.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/NumericValue.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/RelExeState.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/RelationSolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Svfexe/AEDetector.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Svfexe/AbsExtAPI.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Svfexe/AbstractInterpretation.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFGNormalizer.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFGrammar.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLAlias.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLBase.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLGramGraphChecker.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLGraphBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLSVFGBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLSolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLVF.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/GrammarBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/ContextDDA.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAClient.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAPass.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAVFSolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/FlowDDA.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{FastCluster → SVF/FastCluster}/fastcluster.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/BasicBlockG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CDG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CFLGraph.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CHG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CallGraph.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ConsG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ConsGEdge.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ConsGNode.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/DOTGraphTraits.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GenericGraph.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GraphPrinter.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GraphTraits.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GraphWriter.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFGEdge.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFGNode.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFGStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/IRGraph.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SCC.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGEdge.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGNode.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGOPT.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ThreadCallGraph.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/VFG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/VFGEdge.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/VFGNode.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/WTO.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MSSAMuChi.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MemPartition.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MemRegion.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MemSSA.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/SVFGBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/LockAnalysis.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/MHP.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/MTA.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/MTAStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/TCT.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/AbstractPointsToDS.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/AccessPath.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/ConditionalPT.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/MutablePointsToDS.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PersistentPointsToCache.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PersistentPointsToDS.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PointerAnalysis.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PointerAnalysisImpl.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PointsTo.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/SVFLoop.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/DoubleFreeChecker.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/FileChecker.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/LeakChecker.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/ProgSlice.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SaberCheckerAPI.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SaberCondAllocator.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SaberSVFGBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SrcSnkDDA.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SrcSnkSolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/BasicTypes.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/BreakConstantExpr.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/CHGBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/CppUtil.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/DCHG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/GEPTypeBridgeIterator.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/ICFGBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/LLVMLoopAnalysis.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/LLVMModule.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/LLVMUtil.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/ObjTypeInference.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/SVFIRBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/SymbolTableBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/ObjTypeInfo.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/PAGBuilderFromFile.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFIR.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFStatements.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFType.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFValue.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFVariables.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Annotator.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/BitVector.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CDGBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CallGraphBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Casting.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CommandLine.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CoreBitVector.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CxtStmt.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/DPItem.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/ExtAPI.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/GeneralType.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/GraphReachSolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/NodeIDAllocator.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Options.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/PTAStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFBugReport.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFLoopAndDomInfo.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFUtil.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SparseBitVector.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/ThreadAPI.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Z3Expr.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/cJSON.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/iterator.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/iterator_range.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/Andersen.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/AndersenPWC.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/CSC.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/FlowSensitive.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/Steensgaard.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/TypeAnalysis.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/VersionedFlowSensitive.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPAFSSolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPAPass.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPASolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPAStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/{lib → include/SVF}/extapi.bc +0 -0
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
//===- SVFGNode.h -- Sparse value-flow graph node-------------------------------//
|
|
2
|
+
//
|
|
3
|
+
// SVF: Static Value-Flow Analysis
|
|
4
|
+
//
|
|
5
|
+
// Copyright (C) <2013-2018> <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
|
+
* SVFGNode.h
|
|
25
|
+
*
|
|
26
|
+
* Created on: 13 Sep. 2018
|
|
27
|
+
* Author: Yulei Sui
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
#ifndef INCLUDE_MSSA_SVFGNODE_H_
|
|
31
|
+
#define INCLUDE_MSSA_SVFGNODE_H_
|
|
32
|
+
|
|
33
|
+
#include "Graphs/VFGNode.h"
|
|
34
|
+
#include "Graphs/SVFGEdge.h"
|
|
35
|
+
|
|
36
|
+
namespace SVF
|
|
37
|
+
{
|
|
38
|
+
|
|
39
|
+
/*!
|
|
40
|
+
* Memory region VFGNode (for address-taken objects)
|
|
41
|
+
*/
|
|
42
|
+
class MRSVFGNode : public VFGNode
|
|
43
|
+
{
|
|
44
|
+
protected:
|
|
45
|
+
NodeBS cpts;
|
|
46
|
+
|
|
47
|
+
// This constructor can only be used by derived classes
|
|
48
|
+
MRSVFGNode(NodeID id, VFGNodeK k) : VFGNode(id, k) {}
|
|
49
|
+
|
|
50
|
+
public:
|
|
51
|
+
/// Return points-to of the MR
|
|
52
|
+
inline const NodeBS& getPointsTo() const
|
|
53
|
+
{
|
|
54
|
+
return cpts;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
inline const NodeBS getDefSVFVars() const override;
|
|
58
|
+
|
|
59
|
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
60
|
+
//@{
|
|
61
|
+
static inline bool classof(const MRSVFGNode *)
|
|
62
|
+
{
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
static inline bool classof(const VFGNode *node)
|
|
66
|
+
{
|
|
67
|
+
return isMRSVFGNodeKinds(node->getNodeKind());
|
|
68
|
+
}
|
|
69
|
+
static inline bool classof(const GenericVFGNodeTy *node)
|
|
70
|
+
{
|
|
71
|
+
return isMRSVFGNodeKinds(node->getNodeKind());
|
|
72
|
+
}
|
|
73
|
+
//@}
|
|
74
|
+
|
|
75
|
+
virtual const std::string toString() const override;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/*
|
|
79
|
+
* SVFG Node stands for entry chi node (address-taken variables)
|
|
80
|
+
*/
|
|
81
|
+
class FormalINSVFGNode : public MRSVFGNode
|
|
82
|
+
{
|
|
83
|
+
private:
|
|
84
|
+
const MRVer* ver;
|
|
85
|
+
const FunEntryICFGNode* funEntryNode;
|
|
86
|
+
|
|
87
|
+
public:
|
|
88
|
+
/// Constructor
|
|
89
|
+
FormalINSVFGNode(NodeID id, const MRVer* resVer, const FunEntryICFGNode* funEntry): MRSVFGNode(id, FPIN)
|
|
90
|
+
{
|
|
91
|
+
cpts = resVer->getMR()->getPointsTo();
|
|
92
|
+
ver = resVer;
|
|
93
|
+
funEntryNode = funEntry;
|
|
94
|
+
}
|
|
95
|
+
inline const MRVer* getMRVer() const
|
|
96
|
+
{
|
|
97
|
+
return ver;
|
|
98
|
+
}
|
|
99
|
+
inline const FunEntryICFGNode* getFunEntryNode() const
|
|
100
|
+
{
|
|
101
|
+
return funEntryNode;
|
|
102
|
+
}
|
|
103
|
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
104
|
+
//@{
|
|
105
|
+
static inline bool classof(const FormalINSVFGNode *)
|
|
106
|
+
{
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
static inline bool classof(const VFGNode *node)
|
|
110
|
+
{
|
|
111
|
+
return node->getNodeKind() == FPIN;
|
|
112
|
+
}
|
|
113
|
+
static inline bool classof(const GenericVFGNodeTy *node)
|
|
114
|
+
{
|
|
115
|
+
return node->getNodeKind() == FPIN;
|
|
116
|
+
}
|
|
117
|
+
//@}
|
|
118
|
+
|
|
119
|
+
virtual const std::string toString() const;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
/*
|
|
124
|
+
* SVFG Node stands for return mu node (address-taken variables)
|
|
125
|
+
*/
|
|
126
|
+
class FormalOUTSVFGNode : public MRSVFGNode
|
|
127
|
+
{
|
|
128
|
+
private:
|
|
129
|
+
const MRVer* ver;
|
|
130
|
+
const FunExitICFGNode* funExitNode;
|
|
131
|
+
|
|
132
|
+
public:
|
|
133
|
+
/// Constructor
|
|
134
|
+
FormalOUTSVFGNode(NodeID id, const MRVer* ver, const FunExitICFGNode* funExitNode);
|
|
135
|
+
|
|
136
|
+
inline const FunExitICFGNode* getFunExitNode() const
|
|
137
|
+
{
|
|
138
|
+
return funExitNode;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
inline const MRVer* getMRVer() const
|
|
142
|
+
{
|
|
143
|
+
return ver;
|
|
144
|
+
}
|
|
145
|
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
146
|
+
//@{
|
|
147
|
+
static inline bool classof(const FormalOUTSVFGNode *)
|
|
148
|
+
{
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
static inline bool classof(const VFGNode *node)
|
|
152
|
+
{
|
|
153
|
+
return node->getNodeKind() == FPOUT;
|
|
154
|
+
}
|
|
155
|
+
static inline bool classof(const GenericVFGNodeTy *node)
|
|
156
|
+
{
|
|
157
|
+
return node->getNodeKind() == FPOUT;
|
|
158
|
+
}
|
|
159
|
+
//@}
|
|
160
|
+
|
|
161
|
+
virtual const std::string toString() const;
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
/*
|
|
166
|
+
* SVFG Node stands for callsite mu node (address-taken variables)
|
|
167
|
+
*/
|
|
168
|
+
class ActualINSVFGNode : public MRSVFGNode
|
|
169
|
+
{
|
|
170
|
+
private:
|
|
171
|
+
const CallICFGNode* cs;
|
|
172
|
+
const MRVer* ver;
|
|
173
|
+
public:
|
|
174
|
+
/// Constructor
|
|
175
|
+
ActualINSVFGNode(NodeID id, const CallICFGNode* c, const MRVer* mrver):
|
|
176
|
+
MRSVFGNode(id, APIN), cs(c)
|
|
177
|
+
{
|
|
178
|
+
cpts = mrver->getMR()->getPointsTo();
|
|
179
|
+
ver = mrver;
|
|
180
|
+
}
|
|
181
|
+
/// Callsite
|
|
182
|
+
inline const CallICFGNode* getCallSite() const
|
|
183
|
+
{
|
|
184
|
+
return cs;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/// Ver
|
|
188
|
+
inline const MRVer* getMRVer() const
|
|
189
|
+
{
|
|
190
|
+
return ver;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
195
|
+
//@{
|
|
196
|
+
static inline bool classof(const ActualINSVFGNode *)
|
|
197
|
+
{
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
static inline bool classof(const VFGNode *node)
|
|
201
|
+
{
|
|
202
|
+
return node->getNodeKind() == APIN;
|
|
203
|
+
}
|
|
204
|
+
static inline bool classof(const GenericVFGNodeTy *node)
|
|
205
|
+
{
|
|
206
|
+
return node->getNodeKind() == APIN;
|
|
207
|
+
}
|
|
208
|
+
//@}
|
|
209
|
+
|
|
210
|
+
virtual const std::string toString() const;
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
/*
|
|
215
|
+
* SVFG Node stands for callsite chi node (address-taken variables)
|
|
216
|
+
*/
|
|
217
|
+
class ActualOUTSVFGNode : public MRSVFGNode
|
|
218
|
+
{
|
|
219
|
+
private:
|
|
220
|
+
const CallICFGNode* cs;
|
|
221
|
+
const MRVer* ver;
|
|
222
|
+
|
|
223
|
+
public:
|
|
224
|
+
/// Constructor
|
|
225
|
+
ActualOUTSVFGNode(NodeID id, const CallICFGNode* cal, const MRVer* resVer):
|
|
226
|
+
MRSVFGNode(id, APOUT), cs(cal)
|
|
227
|
+
{
|
|
228
|
+
cpts = resVer->getMR()->getPointsTo();
|
|
229
|
+
ver = resVer;
|
|
230
|
+
}
|
|
231
|
+
/// Callsite
|
|
232
|
+
inline const CallICFGNode* getCallSite() const
|
|
233
|
+
{
|
|
234
|
+
return cs;
|
|
235
|
+
}
|
|
236
|
+
/// Ver
|
|
237
|
+
inline const MRVer* getMRVer() const
|
|
238
|
+
{
|
|
239
|
+
return ver;
|
|
240
|
+
}
|
|
241
|
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
242
|
+
//@{
|
|
243
|
+
static inline bool classof(const ActualOUTSVFGNode *)
|
|
244
|
+
{
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
static inline bool classof(const VFGNode *node)
|
|
248
|
+
{
|
|
249
|
+
return node->getNodeKind() == APOUT;
|
|
250
|
+
}
|
|
251
|
+
static inline bool classof(const GenericVFGNodeTy *node)
|
|
252
|
+
{
|
|
253
|
+
return node->getNodeKind() == APOUT;
|
|
254
|
+
}
|
|
255
|
+
//@}
|
|
256
|
+
|
|
257
|
+
virtual const std::string toString() const;
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
/*
|
|
262
|
+
* SVFG Node stands for a memory ssa phi node or formalIn or ActualOut
|
|
263
|
+
*/
|
|
264
|
+
class MSSAPHISVFGNode : public MRSVFGNode
|
|
265
|
+
{
|
|
266
|
+
public:
|
|
267
|
+
typedef Map<u32_t,const MRVer*> OPVers;
|
|
268
|
+
|
|
269
|
+
protected:
|
|
270
|
+
const MRVer* ver;
|
|
271
|
+
OPVers opVers;
|
|
272
|
+
|
|
273
|
+
public:
|
|
274
|
+
/// Constructor
|
|
275
|
+
MSSAPHISVFGNode(NodeID id, const MRVer* resVer,VFGNodeK k = MPhi): MRSVFGNode(id, k)
|
|
276
|
+
{
|
|
277
|
+
cpts = resVer->getMR()->getPointsTo();
|
|
278
|
+
ver = resVer;
|
|
279
|
+
}
|
|
280
|
+
/// Ver
|
|
281
|
+
inline const MRVer* getResVer() const
|
|
282
|
+
{
|
|
283
|
+
return ver;
|
|
284
|
+
}
|
|
285
|
+
/// MSSA phi operands
|
|
286
|
+
//@{
|
|
287
|
+
inline const MRVer* getOpVer(u32_t pos) const
|
|
288
|
+
{
|
|
289
|
+
OPVers::const_iterator it = opVers.find(pos);
|
|
290
|
+
assert(it!=opVers.end() && "version is nullptr, did not rename?");
|
|
291
|
+
return it->second;
|
|
292
|
+
}
|
|
293
|
+
inline void setOpVer(u32_t pos, const MRVer* node)
|
|
294
|
+
{
|
|
295
|
+
opVers[pos] = node;
|
|
296
|
+
}
|
|
297
|
+
inline u32_t getOpVerNum() const
|
|
298
|
+
{
|
|
299
|
+
return opVers.size();
|
|
300
|
+
}
|
|
301
|
+
inline OPVers::const_iterator opVerBegin() const
|
|
302
|
+
{
|
|
303
|
+
return opVers.begin();
|
|
304
|
+
}
|
|
305
|
+
inline OPVers::const_iterator opVerEnd() const
|
|
306
|
+
{
|
|
307
|
+
return opVers.end();
|
|
308
|
+
}
|
|
309
|
+
//@}
|
|
310
|
+
|
|
311
|
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
312
|
+
//@{
|
|
313
|
+
static inline bool classof(const MSSAPHISVFGNode *)
|
|
314
|
+
{
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
317
|
+
static inline bool classof(const MRSVFGNode *node)
|
|
318
|
+
{
|
|
319
|
+
return isMSSAPHISVFGNodeKinds(node->getNodeKind());
|
|
320
|
+
}
|
|
321
|
+
static inline bool classof(const VFGNode *node)
|
|
322
|
+
{
|
|
323
|
+
return isMSSAPHISVFGNodeKinds(node->getNodeKind());
|
|
324
|
+
}
|
|
325
|
+
static inline bool classof(const GenericVFGNodeTy *node)
|
|
326
|
+
{
|
|
327
|
+
return isMSSAPHISVFGNodeKinds(node->getNodeKind());
|
|
328
|
+
}
|
|
329
|
+
//@}
|
|
330
|
+
|
|
331
|
+
virtual const std::string toString() const;
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
/*
|
|
335
|
+
* Intra MSSA PHI
|
|
336
|
+
*/
|
|
337
|
+
class IntraMSSAPHISVFGNode : public MSSAPHISVFGNode
|
|
338
|
+
{
|
|
339
|
+
|
|
340
|
+
public:
|
|
341
|
+
/// Constructor
|
|
342
|
+
IntraMSSAPHISVFGNode(NodeID id, const MRVer* resVer): MSSAPHISVFGNode(id, resVer, MIntraPhi)
|
|
343
|
+
{
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
inline const MRVer* getMRVer() const
|
|
347
|
+
{
|
|
348
|
+
return getResVer();
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
inline OPVers::const_iterator opVerBegin() const
|
|
352
|
+
{
|
|
353
|
+
return opVers.begin();
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
inline OPVers::const_iterator opVerEnd() const
|
|
357
|
+
{
|
|
358
|
+
return opVers.end();
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
362
|
+
//@{
|
|
363
|
+
static inline bool classof(const IntraMSSAPHISVFGNode *)
|
|
364
|
+
{
|
|
365
|
+
return true;
|
|
366
|
+
}
|
|
367
|
+
static inline bool classof(const MSSAPHISVFGNode * node)
|
|
368
|
+
{
|
|
369
|
+
return node->getNodeKind() == MIntraPhi;
|
|
370
|
+
}
|
|
371
|
+
static inline bool classof(const MRSVFGNode *node)
|
|
372
|
+
{
|
|
373
|
+
return node->getNodeKind() == MIntraPhi;
|
|
374
|
+
}
|
|
375
|
+
static inline bool classof(const VFGNode *node)
|
|
376
|
+
{
|
|
377
|
+
return node->getNodeKind() == MIntraPhi;
|
|
378
|
+
}
|
|
379
|
+
static inline bool classof(const GenericVFGNodeTy *node)
|
|
380
|
+
{
|
|
381
|
+
return node->getNodeKind() == MIntraPhi;
|
|
382
|
+
}
|
|
383
|
+
//@}
|
|
384
|
+
|
|
385
|
+
virtual const std::string toString() const;
|
|
386
|
+
};
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
/*
|
|
390
|
+
* Inter MSSA PHI (formalIN/ActualOUT)
|
|
391
|
+
*/
|
|
392
|
+
class InterMSSAPHISVFGNode : public MSSAPHISVFGNode
|
|
393
|
+
{
|
|
394
|
+
|
|
395
|
+
public:
|
|
396
|
+
/// Constructor interPHI for formal parameter
|
|
397
|
+
InterMSSAPHISVFGNode(NodeID id, const FormalINSVFGNode* fi) : MSSAPHISVFGNode(id, fi->getMRVer(), MInterPhi),fun(fi->getFun()),callInst(nullptr) {}
|
|
398
|
+
/// Constructor interPHI for actual return
|
|
399
|
+
InterMSSAPHISVFGNode(NodeID id, const ActualOUTSVFGNode* ao) : MSSAPHISVFGNode(id, ao->getMRVer(), MInterPhi), fun(nullptr),callInst(ao->getCallSite()) {}
|
|
400
|
+
|
|
401
|
+
inline bool isFormalINPHI() const
|
|
402
|
+
{
|
|
403
|
+
return (fun!=nullptr) && (callInst == nullptr);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
inline bool isActualOUTPHI() const
|
|
407
|
+
{
|
|
408
|
+
return (fun==nullptr) && (callInst != nullptr);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
inline const FunObjVar* getFun() const
|
|
412
|
+
{
|
|
413
|
+
assert(isFormalINPHI() && "expect a formal parameter phi");
|
|
414
|
+
return fun;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
inline const CallICFGNode* getCallSite() const
|
|
418
|
+
{
|
|
419
|
+
assert(isActualOUTPHI() && "expect a actual return phi");
|
|
420
|
+
return callInst;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
424
|
+
//@{
|
|
425
|
+
static inline bool classof(const InterMSSAPHISVFGNode *)
|
|
426
|
+
{
|
|
427
|
+
return true;
|
|
428
|
+
}
|
|
429
|
+
static inline bool classof(const MSSAPHISVFGNode * node)
|
|
430
|
+
{
|
|
431
|
+
return node->getNodeKind() == MInterPhi;
|
|
432
|
+
}
|
|
433
|
+
static inline bool classof(const MRSVFGNode *node)
|
|
434
|
+
{
|
|
435
|
+
return node->getNodeKind() == MInterPhi;
|
|
436
|
+
}
|
|
437
|
+
static inline bool classof(const VFGNode *node)
|
|
438
|
+
{
|
|
439
|
+
return node->getNodeKind() == MInterPhi;
|
|
440
|
+
}
|
|
441
|
+
static inline bool classof(const GenericVFGNodeTy *node)
|
|
442
|
+
{
|
|
443
|
+
return node->getNodeKind() == MInterPhi;
|
|
444
|
+
}
|
|
445
|
+
//@}
|
|
446
|
+
|
|
447
|
+
virtual const std::string toString() const;
|
|
448
|
+
|
|
449
|
+
private:
|
|
450
|
+
const FunObjVar* fun;
|
|
451
|
+
const CallICFGNode* callInst;
|
|
452
|
+
};
|
|
453
|
+
|
|
454
|
+
/*
|
|
455
|
+
* Dummy node which encodes propagation of an object/version pair.
|
|
456
|
+
*/
|
|
457
|
+
class DummyVersionPropSVFGNode : public VFGNode
|
|
458
|
+
{
|
|
459
|
+
public:
|
|
460
|
+
DummyVersionPropSVFGNode(NodeID id, NodeID object, Version version)
|
|
461
|
+
: VFGNode(id, DummyVProp), object(object), version(version)
|
|
462
|
+
{ }
|
|
463
|
+
|
|
464
|
+
NodeID getObject(void) const
|
|
465
|
+
{
|
|
466
|
+
return object;
|
|
467
|
+
}
|
|
468
|
+
Version getVersion(void) const
|
|
469
|
+
{
|
|
470
|
+
return version;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
/// Methods to support type inquiry through isa, cast, and dyn_cast:
|
|
474
|
+
//@{
|
|
475
|
+
static inline bool classof(const DummyVersionPropSVFGNode *)
|
|
476
|
+
{
|
|
477
|
+
return true;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
static inline bool classof(const VFGNode *node)
|
|
481
|
+
{
|
|
482
|
+
return node->getNodeKind() == DummyVProp;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
static inline bool classof(const GenericVFGNodeTy *node)
|
|
486
|
+
{
|
|
487
|
+
return node->getNodeKind() == DummyVProp;
|
|
488
|
+
}
|
|
489
|
+
//@}
|
|
490
|
+
|
|
491
|
+
const NodeBS getDefSVFVars() const override;
|
|
492
|
+
|
|
493
|
+
private:
|
|
494
|
+
const NodeID object;
|
|
495
|
+
const Version version;
|
|
496
|
+
};
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
} // End namespace SVF
|
|
500
|
+
|
|
501
|
+
#endif /* INCLUDE_MSSA_SVFGNODE_H_ */
|