svf-lib 1.0.1376 → 1.0.1377
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-osx/Release-build/svf-llvm/libSvfLLVM.a +0 -0
- package/package.json +1 -1
- package/SVF-linux/svf/include/include/AbstractExecution/AbstractValue.h +0 -79
- package/SVF-linux/svf/include/include/AbstractExecution/AddressValue.h +0 -210
- package/SVF-linux/svf/include/include/AbstractExecution/ExeState.h +0 -223
- package/SVF-linux/svf/include/include/AbstractExecution/IntervalExeState.h +0 -425
- package/SVF-linux/svf/include/include/AbstractExecution/IntervalValue.h +0 -868
- package/SVF-linux/svf/include/include/AbstractExecution/NumericLiteral.h +0 -406
- package/SVF-linux/svf/include/include/AbstractExecution/RelExeState.h +0 -225
- package/SVF-linux/svf/include/include/AbstractExecution/RelationSolver.h +0 -68
- package/SVF-linux/svf/include/include/AbstractExecution/SVFIR2ItvExeState.h +0 -186
- package/SVF-linux/svf/include/include/AbstractExecution/WTO.h +0 -845
- package/SVF-linux/svf/include/include/CFL/CFGNormalizer.h +0 -84
- package/SVF-linux/svf/include/include/CFL/CFLAlias.h +0 -176
- package/SVF-linux/svf/include/include/CFL/CFLBase.h +0 -115
- package/SVF-linux/svf/include/include/CFL/CFLData.h +0 -316
- package/SVF-linux/svf/include/include/CFL/CFLDataBuilder.h +0 -91
- package/SVF-linux/svf/include/include/CFL/CFLGramGraphChecker.h +0 -74
- package/SVF-linux/svf/include/include/CFL/CFLGrammar.h +0 -468
- package/SVF-linux/svf/include/include/CFL/CFLGrammar.txt +0 -15
- package/SVF-linux/svf/include/include/CFL/CFLGraphBuilder.h +0 -193
- package/SVF-linux/svf/include/include/CFL/CFLSolver.h +0 -136
- package/SVF-linux/svf/include/include/CFL/CFLStat.h +0 -67
- package/SVF-linux/svf/include/include/CFL/CFLVF.h +0 -65
- package/SVF-linux/svf/include/include/CFL/GrammarBuilder.h +0 -100
- package/SVF-linux/svf/include/include/CFL/PEGGrammar.txt +0 -11
- package/SVF-linux/svf/include/include/CFL/VFG.txt +0 -7
- package/SVF-linux/svf/include/include/DDA/ContextDDA.h +0 -230
- package/SVF-linux/svf/include/include/DDA/DDAClient.h +0 -168
- package/SVF-linux/svf/include/include/DDA/DDAPass.h +0 -99
- package/SVF-linux/svf/include/include/DDA/DDAStat.h +0 -138
- package/SVF-linux/svf/include/include/DDA/DDAVFSolver.h +0 -789
- package/SVF-linux/svf/include/include/DDA/FlowDDA.h +0 -178
- package/SVF-linux/svf/include/include/FastCluster/LICENSE.TXT +0 -13
- package/SVF-linux/svf/include/include/FastCluster/fastcluster.h +0 -80
- package/SVF-linux/svf/include/include/Graphs/CFLGraph.h +0 -215
- package/SVF-linux/svf/include/include/Graphs/CHG.h +0 -351
- package/SVF-linux/svf/include/include/Graphs/ConsG.h +0 -408
- package/SVF-linux/svf/include/include/Graphs/ConsGEdge.h +0 -353
- package/SVF-linux/svf/include/include/Graphs/ConsGNode.h +0 -391
- package/SVF-linux/svf/include/include/Graphs/DOTGraphTraits.h +0 -188
- package/SVF-linux/svf/include/include/Graphs/GenericGraph.h +0 -620
- package/SVF-linux/svf/include/include/Graphs/GraphPrinter.h +0 -111
- package/SVF-linux/svf/include/include/Graphs/GraphTraits.h +0 -150
- package/SVF-linux/svf/include/include/Graphs/GraphWriter.h +0 -380
- package/SVF-linux/svf/include/include/Graphs/ICFG.h +0 -331
- package/SVF-linux/svf/include/include/Graphs/ICFGEdge.h +0 -264
- package/SVF-linux/svf/include/include/Graphs/ICFGNode.h +0 -523
- package/SVF-linux/svf/include/include/Graphs/ICFGStat.h +0 -164
- package/SVF-linux/svf/include/include/Graphs/IRGraph.h +0 -243
- package/SVF-linux/svf/include/include/Graphs/PTACallGraph.h +0 -471
- package/SVF-linux/svf/include/include/Graphs/SVFG.h +0 -490
- package/SVF-linux/svf/include/include/Graphs/SVFGEdge.h +0 -237
- package/SVF-linux/svf/include/include/Graphs/SVFGNode.h +0 -513
- package/SVF-linux/svf/include/include/Graphs/SVFGOPT.h +0 -362
- package/SVF-linux/svf/include/include/Graphs/SVFGStat.h +0 -273
- package/SVF-linux/svf/include/include/Graphs/ThreadCallGraph.h +0 -422
- package/SVF-linux/svf/include/include/Graphs/VFG.h +0 -664
- package/SVF-linux/svf/include/include/Graphs/VFGEdge.h +0 -295
- package/SVF-linux/svf/include/include/Graphs/VFGNode.h +0 -1197
- package/SVF-linux/svf/include/include/MSSA/MSSAMuChi.h +0 -722
- package/SVF-linux/svf/include/include/MSSA/MemPartition.h +0 -169
- package/SVF-linux/svf/include/include/MSSA/MemRegion.h +0 -491
- package/SVF-linux/svf/include/include/MSSA/MemSSA.h +0 -452
- package/SVF-linux/svf/include/include/MSSA/SVFGBuilder.h +0 -98
- package/SVF-linux/svf/include/include/MTA/FSMPTA.h +0 -270
- package/SVF-linux/svf/include/include/MTA/LockAnalysis.h +0 -517
- package/SVF-linux/svf/include/include/MTA/MHP.h +0 -565
- package/SVF-linux/svf/include/include/MTA/MTA.h +0 -101
- package/SVF-linux/svf/include/include/MTA/MTAResultValidator.h +0 -448
- package/SVF-linux/svf/include/include/MTA/MTAStat.h +0 -74
- package/SVF-linux/svf/include/include/MTA/PCG.h +0 -229
- package/SVF-linux/svf/include/include/MTA/TCT.h +0 -599
- package/SVF-linux/svf/include/include/MemoryModel/AbstractPointsToDS.h +0 -316
- package/SVF-linux/svf/include/include/MemoryModel/ConditionalPT.h +0 -878
- package/SVF-linux/svf/include/include/MemoryModel/LocationSet.h +0 -148
- package/SVF-linux/svf/include/include/MemoryModel/MutablePointsToDS.h +0 -1025
- package/SVF-linux/svf/include/include/MemoryModel/PersistentPointsToCache.h +0 -463
- package/SVF-linux/svf/include/include/MemoryModel/PersistentPointsToDS.h +0 -955
- package/SVF-linux/svf/include/include/MemoryModel/PointerAnalysis.h +0 -452
- package/SVF-linux/svf/include/include/MemoryModel/PointerAnalysisImpl.h +0 -590
- package/SVF-linux/svf/include/include/MemoryModel/PointsTo.h +0 -255
- package/SVF-linux/svf/include/include/MemoryModel/SVFLoop.h +0 -164
- package/SVF-linux/svf/include/include/SABER/DoubleFreeChecker.h +0 -76
- package/SVF-linux/svf/include/include/SABER/FileChecker.h +0 -82
- package/SVF-linux/svf/include/include/SABER/LeakChecker.h +0 -124
- package/SVF-linux/svf/include/include/SABER/ProgSlice.h +0 -313
- package/SVF-linux/svf/include/include/SABER/SaberCheckerAPI.h +0 -166
- package/SVF-linux/svf/include/include/SABER/SaberCondAllocator.h +0 -310
- package/SVF-linux/svf/include/include/SABER/SaberSVFGBuilder.h +0 -104
- package/SVF-linux/svf/include/include/SABER/SrcSnkDDA.h +0 -321
- package/SVF-linux/svf/include/include/SABER/SrcSnkSolver.h +0 -186
- package/SVF-linux/svf/include/include/SVFIR/PAGBuilderFromFile.h +0 -80
- package/SVF-linux/svf/include/include/SVFIR/SVFIR.h +0 -659
- package/SVF-linux/svf/include/include/SVFIR/SVFModule.h +0 -233
- package/SVF-linux/svf/include/include/SVFIR/SVFStatements.h +0 -1136
- package/SVF-linux/svf/include/include/SVFIR/SVFType.h +0 -527
- package/SVF-linux/svf/include/include/SVFIR/SVFValue.h +0 -1120
- package/SVF-linux/svf/include/include/SVFIR/SVFVariables.h +0 -721
- package/SVF-linux/svf/include/include/SVFIR/SymbolTableInfo.h +0 -597
- package/SVF-linux/svf/include/include/Util/Annotator.h +0 -180
- package/SVF-linux/svf/include/include/Util/BitVector.h +0 -55
- package/SVF-linux/svf/include/include/Util/CallGraphBuilder.h +0 -74
- package/SVF-linux/svf/include/include/Util/Casting.h +0 -426
- package/SVF-linux/svf/include/include/Util/CommandLine.h +0 -530
- package/SVF-linux/svf/include/include/Util/CoreBitVector.h +0 -214
- package/SVF-linux/svf/include/include/Util/CppUtil.h +0 -81
- package/SVF-linux/svf/include/include/Util/CxtStmt.h +0 -501
- package/SVF-linux/svf/include/include/Util/DPItem.h +0 -618
- package/SVF-linux/svf/include/include/Util/ExtAPI.h +0 -339
- package/SVF-linux/svf/include/include/Util/ExtAPI.json +0 -5707
- package/SVF-linux/svf/include/include/Util/GraphReachSolver.h +0 -186
- package/SVF-linux/svf/include/include/Util/NodeIDAllocator.h +0 -194
- package/SVF-linux/svf/include/include/Util/Options.h +0 -266
- package/SVF-linux/svf/include/include/Util/PTAStat.h +0 -65
- package/SVF-linux/svf/include/include/Util/SCC.h +0 -354
- package/SVF-linux/svf/include/include/Util/SVFStat.h +0 -100
- package/SVF-linux/svf/include/include/Util/SVFUtil.h +0 -660
- package/SVF-linux/svf/include/include/Util/SparseBitVector.h +0 -1202
- package/SVF-linux/svf/include/include/Util/ThreadAPI.h +0 -330
- package/SVF-linux/svf/include/include/Util/WorkList.h +0 -317
- package/SVF-linux/svf/include/include/Util/Z3Expr.h +0 -318
- package/SVF-linux/svf/include/include/Util/cJSON.h +0 -300
- package/SVF-linux/svf/include/include/Util/iterator.h +0 -407
- package/SVF-linux/svf/include/include/Util/iterator_range.h +0 -76
- package/SVF-linux/svf/include/include/WPA/Andersen.h +0 -416
- package/SVF-linux/svf/include/include/WPA/AndersenPWC.h +0 -160
- package/SVF-linux/svf/include/include/WPA/CSC.h +0 -95
- package/SVF-linux/svf/include/include/WPA/FlowSensitive.h +0 -317
- package/SVF-linux/svf/include/include/WPA/Steensgaard.h +0 -126
- package/SVF-linux/svf/include/include/WPA/TypeAnalysis.h +0 -83
- package/SVF-linux/svf/include/include/WPA/VersionedFlowSensitive.h +0 -287
- package/SVF-linux/svf/include/include/WPA/WPAFSSolver.h +0 -254
- package/SVF-linux/svf/include/include/WPA/WPAPass.h +0 -119
- package/SVF-linux/svf/include/include/WPA/WPASolver.h +0 -205
- package/SVF-linux/svf/include/include/WPA/WPAStat.h +0 -222
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/BasicTypes.h +0 -250
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/BreakConstantExpr.h +0 -94
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/CHGBuilder.h +0 -73
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/DCHG.h +0 -484
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/GEPTypeBridgeIterator.h +0 -183
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/ICFGBuilder.h +0 -106
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/LLVMLoopAnalysis.h +0 -61
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/LLVMModule.h +0 -360
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/LLVMUtil.h +0 -466
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/SVFIRBuilder.h +0 -417
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/SymbolTableBuilder.h +0 -110
- package/SVF-osx/svf/include/include/AbstractExecution/AbstractValue.h +0 -79
- package/SVF-osx/svf/include/include/AbstractExecution/AddressValue.h +0 -210
- package/SVF-osx/svf/include/include/AbstractExecution/ExeState.h +0 -223
- package/SVF-osx/svf/include/include/AbstractExecution/IntervalExeState.h +0 -425
- package/SVF-osx/svf/include/include/AbstractExecution/IntervalValue.h +0 -868
- package/SVF-osx/svf/include/include/AbstractExecution/NumericLiteral.h +0 -406
- package/SVF-osx/svf/include/include/AbstractExecution/RelExeState.h +0 -225
- package/SVF-osx/svf/include/include/AbstractExecution/RelationSolver.h +0 -68
- package/SVF-osx/svf/include/include/AbstractExecution/SVFIR2ItvExeState.h +0 -186
- package/SVF-osx/svf/include/include/AbstractExecution/WTO.h +0 -845
- package/SVF-osx/svf/include/include/CFL/CFGNormalizer.h +0 -84
- package/SVF-osx/svf/include/include/CFL/CFLAlias.h +0 -176
- package/SVF-osx/svf/include/include/CFL/CFLBase.h +0 -115
- package/SVF-osx/svf/include/include/CFL/CFLData.h +0 -316
- package/SVF-osx/svf/include/include/CFL/CFLDataBuilder.h +0 -91
- package/SVF-osx/svf/include/include/CFL/CFLGramGraphChecker.h +0 -74
- package/SVF-osx/svf/include/include/CFL/CFLGrammar.h +0 -468
- package/SVF-osx/svf/include/include/CFL/CFLGrammar.txt +0 -15
- package/SVF-osx/svf/include/include/CFL/CFLGraphBuilder.h +0 -193
- package/SVF-osx/svf/include/include/CFL/CFLSolver.h +0 -136
- package/SVF-osx/svf/include/include/CFL/CFLStat.h +0 -67
- package/SVF-osx/svf/include/include/CFL/CFLVF.h +0 -65
- package/SVF-osx/svf/include/include/CFL/GrammarBuilder.h +0 -100
- package/SVF-osx/svf/include/include/CFL/PEGGrammar.txt +0 -11
- package/SVF-osx/svf/include/include/CFL/VFG.txt +0 -7
- package/SVF-osx/svf/include/include/DDA/ContextDDA.h +0 -230
- package/SVF-osx/svf/include/include/DDA/DDAClient.h +0 -168
- package/SVF-osx/svf/include/include/DDA/DDAPass.h +0 -99
- package/SVF-osx/svf/include/include/DDA/DDAStat.h +0 -138
- package/SVF-osx/svf/include/include/DDA/DDAVFSolver.h +0 -789
- package/SVF-osx/svf/include/include/DDA/FlowDDA.h +0 -178
- package/SVF-osx/svf/include/include/FastCluster/LICENSE.TXT +0 -13
- package/SVF-osx/svf/include/include/FastCluster/fastcluster.h +0 -80
- package/SVF-osx/svf/include/include/Graphs/CFLGraph.h +0 -215
- package/SVF-osx/svf/include/include/Graphs/CHG.h +0 -351
- package/SVF-osx/svf/include/include/Graphs/ConsG.h +0 -408
- package/SVF-osx/svf/include/include/Graphs/ConsGEdge.h +0 -353
- package/SVF-osx/svf/include/include/Graphs/ConsGNode.h +0 -391
- package/SVF-osx/svf/include/include/Graphs/DOTGraphTraits.h +0 -188
- package/SVF-osx/svf/include/include/Graphs/GenericGraph.h +0 -620
- package/SVF-osx/svf/include/include/Graphs/GraphPrinter.h +0 -111
- package/SVF-osx/svf/include/include/Graphs/GraphTraits.h +0 -150
- package/SVF-osx/svf/include/include/Graphs/GraphWriter.h +0 -380
- package/SVF-osx/svf/include/include/Graphs/ICFG.h +0 -331
- package/SVF-osx/svf/include/include/Graphs/ICFGEdge.h +0 -264
- package/SVF-osx/svf/include/include/Graphs/ICFGNode.h +0 -523
- package/SVF-osx/svf/include/include/Graphs/ICFGStat.h +0 -164
- package/SVF-osx/svf/include/include/Graphs/IRGraph.h +0 -243
- package/SVF-osx/svf/include/include/Graphs/PTACallGraph.h +0 -471
- package/SVF-osx/svf/include/include/Graphs/SVFG.h +0 -490
- package/SVF-osx/svf/include/include/Graphs/SVFGEdge.h +0 -237
- package/SVF-osx/svf/include/include/Graphs/SVFGNode.h +0 -513
- package/SVF-osx/svf/include/include/Graphs/SVFGOPT.h +0 -362
- package/SVF-osx/svf/include/include/Graphs/SVFGStat.h +0 -273
- package/SVF-osx/svf/include/include/Graphs/ThreadCallGraph.h +0 -422
- package/SVF-osx/svf/include/include/Graphs/VFG.h +0 -664
- package/SVF-osx/svf/include/include/Graphs/VFGEdge.h +0 -295
- package/SVF-osx/svf/include/include/Graphs/VFGNode.h +0 -1197
- package/SVF-osx/svf/include/include/MSSA/MSSAMuChi.h +0 -722
- package/SVF-osx/svf/include/include/MSSA/MemPartition.h +0 -169
- package/SVF-osx/svf/include/include/MSSA/MemRegion.h +0 -491
- package/SVF-osx/svf/include/include/MSSA/MemSSA.h +0 -452
- package/SVF-osx/svf/include/include/MSSA/SVFGBuilder.h +0 -98
- package/SVF-osx/svf/include/include/MTA/FSMPTA.h +0 -270
- package/SVF-osx/svf/include/include/MTA/LockAnalysis.h +0 -517
- package/SVF-osx/svf/include/include/MTA/MHP.h +0 -565
- package/SVF-osx/svf/include/include/MTA/MTA.h +0 -101
- package/SVF-osx/svf/include/include/MTA/MTAResultValidator.h +0 -448
- package/SVF-osx/svf/include/include/MTA/MTAStat.h +0 -74
- package/SVF-osx/svf/include/include/MTA/PCG.h +0 -229
- package/SVF-osx/svf/include/include/MTA/TCT.h +0 -599
- package/SVF-osx/svf/include/include/MemoryModel/AbstractPointsToDS.h +0 -316
- package/SVF-osx/svf/include/include/MemoryModel/ConditionalPT.h +0 -878
- package/SVF-osx/svf/include/include/MemoryModel/LocationSet.h +0 -148
- package/SVF-osx/svf/include/include/MemoryModel/MutablePointsToDS.h +0 -1025
- package/SVF-osx/svf/include/include/MemoryModel/PersistentPointsToCache.h +0 -463
- package/SVF-osx/svf/include/include/MemoryModel/PersistentPointsToDS.h +0 -955
- package/SVF-osx/svf/include/include/MemoryModel/PointerAnalysis.h +0 -452
- package/SVF-osx/svf/include/include/MemoryModel/PointerAnalysisImpl.h +0 -590
- package/SVF-osx/svf/include/include/MemoryModel/PointsTo.h +0 -255
- package/SVF-osx/svf/include/include/MemoryModel/SVFLoop.h +0 -164
- package/SVF-osx/svf/include/include/SABER/DoubleFreeChecker.h +0 -76
- package/SVF-osx/svf/include/include/SABER/FileChecker.h +0 -82
- package/SVF-osx/svf/include/include/SABER/LeakChecker.h +0 -124
- package/SVF-osx/svf/include/include/SABER/ProgSlice.h +0 -313
- package/SVF-osx/svf/include/include/SABER/SaberCheckerAPI.h +0 -166
- package/SVF-osx/svf/include/include/SABER/SaberCondAllocator.h +0 -310
- package/SVF-osx/svf/include/include/SABER/SaberSVFGBuilder.h +0 -104
- package/SVF-osx/svf/include/include/SABER/SrcSnkDDA.h +0 -321
- package/SVF-osx/svf/include/include/SABER/SrcSnkSolver.h +0 -186
- package/SVF-osx/svf/include/include/SVFIR/PAGBuilderFromFile.h +0 -80
- package/SVF-osx/svf/include/include/SVFIR/SVFIR.h +0 -659
- package/SVF-osx/svf/include/include/SVFIR/SVFModule.h +0 -233
- package/SVF-osx/svf/include/include/SVFIR/SVFStatements.h +0 -1136
- package/SVF-osx/svf/include/include/SVFIR/SVFType.h +0 -527
- package/SVF-osx/svf/include/include/SVFIR/SVFValue.h +0 -1120
- package/SVF-osx/svf/include/include/SVFIR/SVFVariables.h +0 -721
- package/SVF-osx/svf/include/include/SVFIR/SymbolTableInfo.h +0 -597
- package/SVF-osx/svf/include/include/Util/Annotator.h +0 -180
- package/SVF-osx/svf/include/include/Util/BitVector.h +0 -55
- package/SVF-osx/svf/include/include/Util/CallGraphBuilder.h +0 -74
- package/SVF-osx/svf/include/include/Util/Casting.h +0 -426
- package/SVF-osx/svf/include/include/Util/CommandLine.h +0 -530
- package/SVF-osx/svf/include/include/Util/CoreBitVector.h +0 -214
- package/SVF-osx/svf/include/include/Util/CppUtil.h +0 -81
- package/SVF-osx/svf/include/include/Util/CxtStmt.h +0 -501
- package/SVF-osx/svf/include/include/Util/DPItem.h +0 -618
- package/SVF-osx/svf/include/include/Util/ExtAPI.h +0 -339
- package/SVF-osx/svf/include/include/Util/ExtAPI.json +0 -5707
- package/SVF-osx/svf/include/include/Util/GraphReachSolver.h +0 -186
- package/SVF-osx/svf/include/include/Util/NodeIDAllocator.h +0 -194
- package/SVF-osx/svf/include/include/Util/Options.h +0 -266
- package/SVF-osx/svf/include/include/Util/PTAStat.h +0 -65
- package/SVF-osx/svf/include/include/Util/SCC.h +0 -354
- package/SVF-osx/svf/include/include/Util/SVFStat.h +0 -100
- package/SVF-osx/svf/include/include/Util/SVFUtil.h +0 -660
- package/SVF-osx/svf/include/include/Util/SparseBitVector.h +0 -1202
- package/SVF-osx/svf/include/include/Util/ThreadAPI.h +0 -330
- package/SVF-osx/svf/include/include/Util/WorkList.h +0 -317
- package/SVF-osx/svf/include/include/Util/Z3Expr.h +0 -318
- package/SVF-osx/svf/include/include/Util/cJSON.h +0 -300
- package/SVF-osx/svf/include/include/Util/iterator.h +0 -407
- package/SVF-osx/svf/include/include/Util/iterator_range.h +0 -76
- package/SVF-osx/svf/include/include/WPA/Andersen.h +0 -416
- package/SVF-osx/svf/include/include/WPA/AndersenPWC.h +0 -160
- package/SVF-osx/svf/include/include/WPA/CSC.h +0 -95
- package/SVF-osx/svf/include/include/WPA/FlowSensitive.h +0 -317
- package/SVF-osx/svf/include/include/WPA/Steensgaard.h +0 -126
- package/SVF-osx/svf/include/include/WPA/TypeAnalysis.h +0 -83
- package/SVF-osx/svf/include/include/WPA/VersionedFlowSensitive.h +0 -287
- package/SVF-osx/svf/include/include/WPA/WPAFSSolver.h +0 -254
- package/SVF-osx/svf/include/include/WPA/WPAPass.h +0 -119
- package/SVF-osx/svf/include/include/WPA/WPASolver.h +0 -205
- package/SVF-osx/svf/include/include/WPA/WPAStat.h +0 -222
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/BasicTypes.h +0 -250
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/BreakConstantExpr.h +0 -94
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/CHGBuilder.h +0 -73
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/DCHG.h +0 -484
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/GEPTypeBridgeIterator.h +0 -183
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/ICFGBuilder.h +0 -106
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/LLVMLoopAnalysis.h +0 -61
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/LLVMModule.h +0 -360
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/LLVMUtil.h +0 -466
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/SVFIRBuilder.h +0 -417
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/SymbolTableBuilder.h +0 -110
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
//===----- CFLDataBuilder.h -- CFL Data Builder --------------//
|
|
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 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 General Public License for more details.
|
|
17
|
-
|
|
18
|
-
// You should have received a copy of the GNU General Public License
|
|
19
|
-
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
-
//
|
|
21
|
-
//===----------------------------------------------------------------------===//
|
|
22
|
-
|
|
23
|
-
/*
|
|
24
|
-
* CFLGraphBuilder.h
|
|
25
|
-
*
|
|
26
|
-
* Created on: Nov 6, 2022
|
|
27
|
-
* Author: Pei Xu
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
#ifndef INCLUDE_CFL_CFLDATABUILDER_H_
|
|
31
|
-
#define INCLUDE_CFL_CFLDATABUILDER_H_
|
|
32
|
-
|
|
33
|
-
#include "CFL/CFLData.h"
|
|
34
|
-
#include "Graphs/CFLGraph.h"
|
|
35
|
-
|
|
36
|
-
namespace SVF
|
|
37
|
-
{
|
|
38
|
-
|
|
39
|
-
/*!
|
|
40
|
-
* Build CFLData from CFL graph
|
|
41
|
-
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
class CFLDataBuilder
|
|
45
|
-
{
|
|
46
|
-
protected:
|
|
47
|
-
CFLData* _cflData;
|
|
48
|
-
CFLGraph* _graph;
|
|
49
|
-
|
|
50
|
-
public:
|
|
51
|
-
/// Constructor
|
|
52
|
-
CFLDataBuilder(CFLGraph* cflgraph) : _cflData(NULL), _graph(cflgraph)
|
|
53
|
-
{
|
|
54
|
-
if (!_cflData)
|
|
55
|
-
_cflData = new CFLData();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/// Destructor
|
|
59
|
-
virtual ~CFLDataBuilder()
|
|
60
|
-
{
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
CFLData* cflData()
|
|
64
|
-
{
|
|
65
|
-
return _cflData;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
//CFL data operations
|
|
69
|
-
//@{
|
|
70
|
-
virtual bool addEdge(const NodeID srcId, const NodeID dstId, const Label ty)
|
|
71
|
-
{
|
|
72
|
-
return cflData()->addEdge(srcId, dstId, ty);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
virtual NodeBS addEdges(const NodeID srcId, const NodeBS& dstData, const Label ty)
|
|
76
|
-
{
|
|
77
|
-
return cflData()->addEdges(srcId, dstData, ty);
|
|
78
|
-
}
|
|
79
|
-
//@}
|
|
80
|
-
CFLData* build()
|
|
81
|
-
{
|
|
82
|
-
for (CFLEdge* edge: _graph->getCFLEdges())
|
|
83
|
-
addEdge(edge->getSrcID(), edge->getDstID(), edge->getEdgeKind());
|
|
84
|
-
return cflData();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
};
|
|
89
|
-
}// SVF
|
|
90
|
-
|
|
91
|
-
#endif /* INCLUDE_CFL_CFLGRAPHBUILDER_H_*/
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
//===----- CFLGramGraphChecker.h -- CFL Checker for Grammar and graphBuilder alignment --------------//
|
|
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 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 General Public License for more details.
|
|
17
|
-
|
|
18
|
-
// You should have received a copy of the GNU General Public License
|
|
19
|
-
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
-
//
|
|
21
|
-
//===----------------------------------------------------------------------===//
|
|
22
|
-
|
|
23
|
-
/*
|
|
24
|
-
* CFLGramGraphChecker.h
|
|
25
|
-
*
|
|
26
|
-
* Created on: May 23, 2022
|
|
27
|
-
* Author: Pei Xu
|
|
28
|
-
*/
|
|
29
|
-
#ifndef INCLUDE_CFL_CFLGRAMGRAPHCHECKER_H_
|
|
30
|
-
#define INCLUDE_CFL_CFLGRAMGRAPHCHECKER_H_
|
|
31
|
-
|
|
32
|
-
#include "CFL/CFLGrammar.h"
|
|
33
|
-
#include "Graphs/CFLGraph.h"
|
|
34
|
-
namespace SVF
|
|
35
|
-
{
|
|
36
|
-
|
|
37
|
-
class CFLGramGraphChecker
|
|
38
|
-
{
|
|
39
|
-
public:
|
|
40
|
-
void check(GrammarBase *grammar, CFLGraphBuilder *graphBuilder, CFLGraph *graph)
|
|
41
|
-
{
|
|
42
|
-
/// Check all kinds in grammar in graphBuilder with the same label
|
|
43
|
-
for(auto pairV : grammar->getTerminals())
|
|
44
|
-
{
|
|
45
|
-
if (graphBuilder->getLabel2KindMap().find(pairV.first) != graphBuilder->getLabel2KindMap().end())
|
|
46
|
-
{
|
|
47
|
-
assert(graphBuilder->getLabel2KindMap()[pairV.first] == pairV.second);
|
|
48
|
-
assert(graphBuilder->getKind2LabelMap()[pairV.second] == pairV.first);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
for(auto pairV : grammar->getNonterminals())
|
|
53
|
-
{
|
|
54
|
-
if (graphBuilder->getLabel2KindMap().find(pairV.first) != graphBuilder->getLabel2KindMap().end())
|
|
55
|
-
{
|
|
56
|
-
assert(graphBuilder->getLabel2KindMap()[pairV.first] == pairV.second);
|
|
57
|
-
assert(graphBuilder->getKind2LabelMap()[pairV.second] == pairV.first);
|
|
58
|
-
}
|
|
59
|
-
else
|
|
60
|
-
{
|
|
61
|
-
graphBuilder->getLabel2KindMap().insert(std::make_pair (pairV.first,pairV.second));
|
|
62
|
-
graphBuilder->getKind2LabelMap().insert(std::make_pair (pairV.second, pairV.first));
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/// Get Kind2Attrs Map from Graph to Grammar
|
|
67
|
-
grammar->setKind2AttrsMap(graphBuilder->getKind2AttrsMap());
|
|
68
|
-
graph->startKind = grammar->getStartKind();
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
}// SVF
|
|
73
|
-
|
|
74
|
-
#endif /* INCLUDE_CFL_CFLGRAMGRAPHCHECKER_H_*/
|
|
@@ -1,468 +0,0 @@
|
|
|
1
|
-
//===----- CFLGrammar.h -- Context-free grammar --------------------------//
|
|
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 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 General Public License for more details.
|
|
17
|
-
|
|
18
|
-
// You should have received a copy of the GNU General Public License
|
|
19
|
-
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
-
//
|
|
21
|
-
//===----------------------------------------------------------------------===//
|
|
22
|
-
|
|
23
|
-
/*
|
|
24
|
-
* CFLGrammar.h
|
|
25
|
-
*
|
|
26
|
-
* Created on: March 5, 2022
|
|
27
|
-
* Author: Yulei Sui
|
|
28
|
-
*/
|
|
29
|
-
#ifndef CFLGrammar_H_
|
|
30
|
-
#define CFLGrammar_H_
|
|
31
|
-
#include "SVFIR/SVFType.h"
|
|
32
|
-
|
|
33
|
-
namespace SVF
|
|
34
|
-
{
|
|
35
|
-
|
|
36
|
-
class GrammarBase
|
|
37
|
-
{
|
|
38
|
-
public:
|
|
39
|
-
typedef u32_t Kind;
|
|
40
|
-
typedef u32_t Attribute;
|
|
41
|
-
typedef u32_t VariableAttribute;
|
|
42
|
-
typedef struct Symbol
|
|
43
|
-
{
|
|
44
|
-
Kind kind: 8;
|
|
45
|
-
Attribute attribute: 16;
|
|
46
|
-
VariableAttribute variableAttribute: 8;
|
|
47
|
-
|
|
48
|
-
/// Default Value for Symbol is 0.
|
|
49
|
-
Symbol() : kind(0), attribute(0), variableAttribute(0) {}
|
|
50
|
-
|
|
51
|
-
/// Contruct from u32_t move the bit to right field
|
|
52
|
-
Symbol(const u32_t& num) : kind(num & 0xFF), attribute((num >> 8 ) & 0xFFFF), variableAttribute((num >> 24)) {}
|
|
53
|
-
|
|
54
|
-
/// Conversion of u32_t
|
|
55
|
-
operator u32_t()
|
|
56
|
-
{
|
|
57
|
-
static_assert(sizeof(struct Symbol)==sizeof(u32_t), "sizeof(struct Symbol)!=sizeof(u32_t)");
|
|
58
|
-
u32_t num = 0;
|
|
59
|
-
num += this->variableAttribute << 24;
|
|
60
|
-
num += this->attribute << 8;
|
|
61
|
-
num += this->kind;
|
|
62
|
-
return num;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
operator u32_t() const
|
|
66
|
-
{
|
|
67
|
-
static_assert(sizeof(struct Symbol)==sizeof(u32_t), "sizeof(struct Symbol)!=sizeof(u32_t)");
|
|
68
|
-
u32_t num = 0;
|
|
69
|
-
num += this->variableAttribute << 24;
|
|
70
|
-
num += this->attribute << 8;
|
|
71
|
-
num += this->kind;
|
|
72
|
-
return num;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
bool operator<(const Symbol& rhs)
|
|
76
|
-
{
|
|
77
|
-
return u32_t(*this) < u32_t(rhs);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
void operator=(const u32_t& i)
|
|
81
|
-
{
|
|
82
|
-
this->kind = EdgeKindMask & i;
|
|
83
|
-
this->attribute = i >> EdgeKindMaskBits;
|
|
84
|
-
this->variableAttribute = i >> AttributedKindMaskBits;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
void operator=(unsigned long long num)
|
|
88
|
-
{
|
|
89
|
-
this->kind = num & 0xFF;
|
|
90
|
-
this->attribute = (num >> 8 ) & 0xFFFF;
|
|
91
|
-
this->variableAttribute = num >> 24;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
bool operator==(const Symbol& s)
|
|
95
|
-
{
|
|
96
|
-
return ((this->kind == s.kind) && (this->attribute == s.attribute) && (this->variableAttribute == s.variableAttribute));
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
bool operator==(const Symbol& s) const
|
|
100
|
-
{
|
|
101
|
-
return ((kind == s.kind) && (attribute == s.attribute) && (variableAttribute == s.variableAttribute));
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
bool operator!=(const Symbol& s) const
|
|
105
|
-
{
|
|
106
|
-
return ! (*this == s) ;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
bool operator==(const u32_t& i)
|
|
110
|
-
{
|
|
111
|
-
return u32_t(*this) == u32_t(i);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
bool operator==(const Kind& k) const
|
|
115
|
-
{
|
|
116
|
-
return (this->kind == k);
|
|
117
|
-
}
|
|
118
|
-
} Symbol;
|
|
119
|
-
|
|
120
|
-
class SymbolHash
|
|
121
|
-
{
|
|
122
|
-
public:
|
|
123
|
-
size_t operator()(const Symbol &s) const
|
|
124
|
-
{
|
|
125
|
-
std::hash<u32_t> h;
|
|
126
|
-
return h(u32_t(s));
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
struct SymbolVectorHash
|
|
132
|
-
{
|
|
133
|
-
size_t operator()(const std::vector<Symbol> &v) const
|
|
134
|
-
{
|
|
135
|
-
size_t h = v.size();
|
|
136
|
-
|
|
137
|
-
SymbolHash hf;
|
|
138
|
-
for (const Symbol &t : v)
|
|
139
|
-
{
|
|
140
|
-
h ^= hf(t) + 0x9e3779b9 + (h << 6) + (h >> 2);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
return h;
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
|
|
147
|
-
template<typename Key, typename Value, typename Hash = SymbolHash,
|
|
148
|
-
typename KeyEqual = std::equal_to<Key>,
|
|
149
|
-
typename Allocator = std::allocator<std::pair<const Key, Value>>>
|
|
150
|
-
using SymbolMap = std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>;
|
|
151
|
-
|
|
152
|
-
template <typename Key, typename Hash = SymbolVectorHash, typename KeyEqual = std::equal_to<Key>,
|
|
153
|
-
typename Allocator = std::allocator<Key>>
|
|
154
|
-
using SymbolSet = std::unordered_set<Key, Hash, KeyEqual, Allocator>;
|
|
155
|
-
|
|
156
|
-
typedef std::vector<Symbol> Production;
|
|
157
|
-
typedef SymbolSet<Production> Productions;
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
inline Map<std::string, Kind>& getNonterminals()
|
|
161
|
-
{
|
|
162
|
-
return this->nonterminals;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
inline void setNonterminals(Map<std::string, Kind>& nonterminals)
|
|
166
|
-
{
|
|
167
|
-
this->nonterminals = nonterminals;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
inline Map<std::string, Kind>& getTerminals()
|
|
171
|
-
{
|
|
172
|
-
return this->terminals;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
inline void setTerminals(Map<std::string, Kind>& terminals)
|
|
176
|
-
{
|
|
177
|
-
this->terminals = terminals;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
inline Map<std::string, Kind>& getEBNFSigns()
|
|
181
|
-
{
|
|
182
|
-
return this->EBNFSigns;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
inline void setEBNFSigns(Map<std::string, Kind>& EBNFSigns)
|
|
186
|
-
{
|
|
187
|
-
this->EBNFSigns = EBNFSigns;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
inline SymbolMap<Symbol, Productions>& getRawProductions()
|
|
191
|
-
{
|
|
192
|
-
return this->rawProductions;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
inline const Map<Kind, Set<Attribute>>& getKind2AttrsMap() const
|
|
196
|
-
{
|
|
197
|
-
return this->kind2AttrsMap;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
inline Kind getTotalKind()
|
|
201
|
-
{
|
|
202
|
-
return this->totalKind;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
inline Kind getStartKind()
|
|
206
|
-
{
|
|
207
|
-
return this->startKind;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
inline void setStartKind(Kind startKind)
|
|
211
|
-
{
|
|
212
|
-
this->startKind = startKind;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
inline void setTotalKind(Kind totalKind)
|
|
216
|
-
{
|
|
217
|
-
this->totalKind = totalKind;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
std::string extractKindStrFromSymbolStr(const std::string symbolStr) const;
|
|
221
|
-
|
|
222
|
-
std::string extractAttributeStrFromSymbolStr(const std::string symbolStr) const;
|
|
223
|
-
|
|
224
|
-
void setRawProductions(SymbolMap<Symbol, Productions>& rawProductions);
|
|
225
|
-
|
|
226
|
-
void setKind2AttrsMap(const Map<Kind, Set<Attribute>>& kind2AttrsMap);
|
|
227
|
-
|
|
228
|
-
void setAttributeKinds(const Set<Kind>& attributeKind);
|
|
229
|
-
|
|
230
|
-
Kind str2Kind(std::string str) const;
|
|
231
|
-
|
|
232
|
-
Symbol str2Symbol(const std::string str) const;
|
|
233
|
-
|
|
234
|
-
std::string kind2Str(Kind kind) const;
|
|
235
|
-
|
|
236
|
-
std::string sym2StrDump(Symbol sym) const;
|
|
237
|
-
|
|
238
|
-
Symbol getSymbol(const Production& prod, u32_t pos)
|
|
239
|
-
{
|
|
240
|
-
return prod.at(pos);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
inline const Set<Kind>& getAttrSyms() const
|
|
244
|
-
{
|
|
245
|
-
return this->attributeKinds;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
/// Insert kind to nonterminal and return kind.
|
|
249
|
-
Kind insertNonterminalKind(std::string const kindStr);
|
|
250
|
-
|
|
251
|
-
/// From SymbolStr extract kind to inserted in nonterminal
|
|
252
|
-
/// symbolStr = <kindStr> [_] [ attributeStr | variableattributeStr ]
|
|
253
|
-
Kind insertTerminalKind(std::string strLit);
|
|
254
|
-
|
|
255
|
-
Symbol insertSymbol(std::string strLit);
|
|
256
|
-
|
|
257
|
-
Symbol insertNonTerminalSymbol(std::string strLit);
|
|
258
|
-
|
|
259
|
-
Symbol insertTerminalSymbol(std::string strLit);
|
|
260
|
-
|
|
261
|
-
Symbol insertEBNFSigns(std::string strLit);
|
|
262
|
-
|
|
263
|
-
void insertAttribute(Kind kind, Attribute a);
|
|
264
|
-
|
|
265
|
-
inline static Kind getAttributedKind(Attribute attribute, Kind kind)
|
|
266
|
-
{
|
|
267
|
-
return ((attribute << EdgeKindMaskBits)| kind );
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
inline static Kind getVariabledKind(VariableAttribute variableAttribute, Kind kind)
|
|
271
|
-
{
|
|
272
|
-
return ((variableAttribute << AttributedKindMaskBits) | kind);
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
protected:
|
|
276
|
-
static constexpr unsigned char EdgeKindMaskBits = 8; ///< We use the lower 8 bits to denote edge kind
|
|
277
|
-
static constexpr unsigned char AttributedKindMaskBits = 24; ///< We use the lower 24 bits to denote attributed kind
|
|
278
|
-
static constexpr u64_t EdgeKindMask = (~0ULL) >> (64 - EdgeKindMaskBits);
|
|
279
|
-
Kind startKind;
|
|
280
|
-
private:
|
|
281
|
-
Map<std::string, Kind> nonterminals;
|
|
282
|
-
Map<std::string, Kind> terminals;
|
|
283
|
-
Map<std::string, Kind> EBNFSigns; /// Map contains Signs' String and associated Symbols
|
|
284
|
-
Set<Kind> attributeKinds;
|
|
285
|
-
Map<Kind, Set<Attribute>> kind2AttrsMap;
|
|
286
|
-
SymbolMap<Symbol, Productions> rawProductions;
|
|
287
|
-
u32_t totalKind;
|
|
288
|
-
};
|
|
289
|
-
|
|
290
|
-
class CFLGrammar : public GrammarBase
|
|
291
|
-
{
|
|
292
|
-
|
|
293
|
-
public:
|
|
294
|
-
CFLGrammar();
|
|
295
|
-
|
|
296
|
-
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
297
|
-
//@{
|
|
298
|
-
static inline bool classof(const CFLGrammar *)
|
|
299
|
-
{
|
|
300
|
-
return true;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
static inline bool classof(const GrammarBase *node)
|
|
304
|
-
{
|
|
305
|
-
return true;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
Productions& getEpsilonProds()
|
|
309
|
-
{
|
|
310
|
-
return epsilonProds;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
SymbolMap<Symbol, Productions>& getSingleRHS2Prods()
|
|
314
|
-
{
|
|
315
|
-
return singleRHS2Prods;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
SymbolMap<Symbol, Productions>& getFirstRHS2Prods()
|
|
319
|
-
{
|
|
320
|
-
return firstRHS2Prods;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
SymbolMap<Symbol, Productions>& getSecondRHS2Prods()
|
|
324
|
-
{
|
|
325
|
-
return secondRHS2Prods;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
const bool hasProdsFromFirstRHS(const Symbol sym) const
|
|
329
|
-
{
|
|
330
|
-
auto it = firstRHS2Prods.find(sym);
|
|
331
|
-
return it!=firstRHS2Prods.end();
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
const bool hasProdsFromSingleRHS(const Symbol sym) const
|
|
335
|
-
{
|
|
336
|
-
auto it = singleRHS2Prods.find(sym);
|
|
337
|
-
return it!=singleRHS2Prods.end();
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
const bool hasProdsFromSecondRHS(const Symbol sym) const
|
|
341
|
-
{
|
|
342
|
-
auto it = secondRHS2Prods.find(sym);
|
|
343
|
-
return it!=secondRHS2Prods.end();
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
const Productions& getProdsFromSingleRHS(const Symbol sym) const
|
|
347
|
-
{
|
|
348
|
-
auto it = singleRHS2Prods.find(sym);
|
|
349
|
-
assert(it!=singleRHS2Prods.end() && "production (X -> sym) not found for sym!!");
|
|
350
|
-
return it->second;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
const Productions& getProdsFromFirstRHS(const Symbol sym) const
|
|
354
|
-
{
|
|
355
|
-
auto it = firstRHS2Prods.find(sym);
|
|
356
|
-
assert(it!=firstRHS2Prods.end() && "production (X -> sym Y ) not found for sym!!");
|
|
357
|
-
return it->second;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
const Productions& getProdsFromSecondRHS(const Symbol sym) const
|
|
361
|
-
{
|
|
362
|
-
auto it = secondRHS2Prods.find(sym);
|
|
363
|
-
assert(it!=secondRHS2Prods.end() && "production (X -> Y sym) not found for sym!!");
|
|
364
|
-
return it->second;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
const Symbol& getLHSSymbol(const Production& prod) const
|
|
369
|
-
{
|
|
370
|
-
return prod.at(0);
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
const Symbol& getFirstRHSSymbol(const Production& prod) const
|
|
374
|
-
{
|
|
375
|
-
return prod.at(1);
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
const Symbol& getSecondRHSSymbol(const Production& prod) const
|
|
379
|
-
{
|
|
380
|
-
return prod.at(2);
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
void dump() const;
|
|
384
|
-
|
|
385
|
-
void dump(std::string fileName) const;
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
const inline u32_t num_generator()
|
|
389
|
-
{
|
|
390
|
-
return newTerminalSubscript++;
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
private:
|
|
394
|
-
SymbolSet<Production> epsilonProds;
|
|
395
|
-
SymbolMap<Symbol, Productions> singleRHS2Prods;
|
|
396
|
-
SymbolMap<Symbol, Productions> firstRHS2Prods;
|
|
397
|
-
SymbolMap<Symbol, Productions> secondRHS2Prods;
|
|
398
|
-
u32_t newTerminalSubscript;
|
|
399
|
-
};
|
|
400
|
-
|
|
401
|
-
/**
|
|
402
|
-
* Worklist with "first in first out" order.
|
|
403
|
-
* New nodes will be pushed at back and popped from front.
|
|
404
|
-
* Elements in the list are unique as they're recorded by Set.
|
|
405
|
-
*/
|
|
406
|
-
template<class Data>
|
|
407
|
-
class CFLFIFOWorkList
|
|
408
|
-
{
|
|
409
|
-
typedef GrammarBase::SymbolSet<Data> DataSet;
|
|
410
|
-
typedef std::deque<Data> DataDeque;
|
|
411
|
-
public:
|
|
412
|
-
CFLFIFOWorkList() {}
|
|
413
|
-
|
|
414
|
-
~CFLFIFOWorkList() {}
|
|
415
|
-
|
|
416
|
-
inline bool empty() const
|
|
417
|
-
{
|
|
418
|
-
return data_list.empty();
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
inline bool find(Data data) const
|
|
422
|
-
{
|
|
423
|
-
return (data_set.find(data) == data_set.end() ? false : true);
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
/**
|
|
427
|
-
* Push a data into the work list.
|
|
428
|
-
*/
|
|
429
|
-
inline bool push(Data data)
|
|
430
|
-
{
|
|
431
|
-
if (data_set.find(data) == data_set.end())
|
|
432
|
-
{
|
|
433
|
-
data_list.push_back(data);
|
|
434
|
-
data_set.insert(data);
|
|
435
|
-
return true;
|
|
436
|
-
}
|
|
437
|
-
else
|
|
438
|
-
return false;
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
/**
|
|
442
|
-
* Pop a data from the END of work list.
|
|
443
|
-
*/
|
|
444
|
-
inline Data pop()
|
|
445
|
-
{
|
|
446
|
-
assert(!empty() && "work list is empty");
|
|
447
|
-
Data data = data_list.front();
|
|
448
|
-
data_list.pop_front();
|
|
449
|
-
data_set.erase(data);
|
|
450
|
-
return data;
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
/*!
|
|
454
|
-
* Clear all the data
|
|
455
|
-
*/
|
|
456
|
-
inline void clear()
|
|
457
|
-
{
|
|
458
|
-
data_list.clear();
|
|
459
|
-
data_set.clear();
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
private:
|
|
463
|
-
DataSet data_set; ///< store all data in the work list.
|
|
464
|
-
DataDeque data_list; ///< work list using std::vector.
|
|
465
|
-
};
|
|
466
|
-
|
|
467
|
-
}
|
|
468
|
-
#endif /* CFLGrammar_H_ */
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
Start:
|
|
2
|
-
V
|
|
3
|
-
Terminal:
|
|
4
|
-
addr copy store load gep vgep
|
|
5
|
-
Productions:
|
|
6
|
-
F -> epsilon | F copy | addr Memflow | F store V load | store Memflow load;
|
|
7
|
-
Fbar -> epsilon | copybar Fbar | Memflowbar addrbar | loadbar V storebar Fbar | loadbar Memflowbar storebar;
|
|
8
|
-
V -> Fbar V F | addrbar addr | gepbar_i V gep_i | gepbarpath V gep_0 | gepbar_i F gep_i | gepbar_i Fbar gep_i;
|
|
9
|
-
copy -> vgep;
|
|
10
|
-
copybar -> vgepbar;
|
|
11
|
-
gep_1 -> gep_0 F vgep | gep_0 F gep_1;
|
|
12
|
-
gepbar_1 -> gepbar_1 Fbar gepbar_0 | vgepbar Fbar gepbar_0;
|
|
13
|
-
gepbarpath -> gepbar_0 gepbar_0 | gepbarpath gepbar_0;
|
|
14
|
-
Memflow -> load store | Fbar Memflow | F Memflow Fbar | gep_i Memflow gepbar_i | gepbar_i Memflow gep_i;
|
|
15
|
-
Memflowbar -> storebar loadbar | Memflowbar F | F Memflowbar Fbar | gep_i Memflowbar gepbar_i | gepbar_i Memflowbar gep_i;
|