svf-tools 1.0.343 → 1.0.347
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-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +7 -7
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +12 -12
- package/SVF-doxygen/html/html/ICFGNode_8h.html +7 -7
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +69 -69
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +36 -36
- package/SVF-doxygen/html/html/ICFG_8h_source.html +34 -34
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MHP_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +9 -9
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +26 -26
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +18 -18
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +12 -12
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +41 -41
- package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +47 -46
- package/SVF-doxygen/html/html/Options_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PCG_8h_source.html +4 -4
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +17 -17
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +17 -17
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +9 -9
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +31 -31
- package/SVF-doxygen/html/html/SVFG_8h_source.html +27 -27
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +13 -13
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +31 -31
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +14 -14
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TCT_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +20 -20
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/VFG_8h_source.html +19 -19
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/annotated.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1CallCHI-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +158 -0
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +852 -0
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CallMU-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +60 -60
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +52 -52
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +45 -45
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode-members.html +150 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +618 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode-members.html +149 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +624 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode-members.html +144 -0
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +413 -0
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +184 -184
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +57 -57
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode-members.html +144 -0
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +399 -0
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode-members.html +146 -0
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +494 -0
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +61 -61
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MHP-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +196 -196
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator-members.html +5 -4
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +43 -39
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +90 -90
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PCG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph-members.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +118 -118
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +107 -107
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +153 -0
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +696 -0
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +159 -159
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +76 -76
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +132 -132
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +58 -58
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TCT-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph-members.html +40 -40
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +220 -220
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +96 -96
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
- package/SVF-doxygen/html/html/classes.html +16 -16
- package/SVF-doxygen/html/html/functions_a.html +59 -59
- package/SVF-doxygen/html/html/functions_c.html +65 -67
- package/SVF-doxygen/html/html/functions_eval_r.html +3 -0
- package/SVF-doxygen/html/html/functions_f.html +14 -14
- package/SVF-doxygen/html/html/functions_func.html +56 -56
- package/SVF-doxygen/html/html/functions_func_c.html +28 -28
- package/SVF-doxygen/html/html/functions_func_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func_g.html +86 -86
- package/SVF-doxygen/html/html/functions_func_h.html +17 -17
- package/SVF-doxygen/html/html/functions_func_i.html +12 -12
- package/SVF-doxygen/html/html/functions_func_m.html +1 -1
- package/SVF-doxygen/html/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/html/functions_func_r.html +6 -6
- package/SVF-doxygen/html/html/functions_func_s.html +2 -2
- package/SVF-doxygen/html/html/functions_func_t.html +7 -7
- package/SVF-doxygen/html/html/functions_func_u.html +3 -3
- package/SVF-doxygen/html/html/functions_g.html +88 -88
- package/SVF-doxygen/html/html/functions_h.html +16 -16
- package/SVF-doxygen/html/html/functions_i.html +22 -22
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_m.html +2 -2
- package/SVF-doxygen/html/html/functions_o.html +13 -13
- package/SVF-doxygen/html/html/functions_p.html +14 -14
- package/SVF-doxygen/html/html/functions_r.html +13 -12
- package/SVF-doxygen/html/html/functions_s.html +13 -13
- package/SVF-doxygen/html/html/functions_t.html +12 -14
- package/SVF-doxygen/html/html/functions_type.html +1 -1
- package/SVF-doxygen/html/html/functions_type_c.html +24 -24
- package/SVF-doxygen/html/html/functions_type_f.html +3 -3
- package/SVF-doxygen/html/html/functions_type_i.html +2 -2
- package/SVF-doxygen/html/html/functions_type_p.html +1 -1
- package/SVF-doxygen/html/html/functions_type_s.html +1 -1
- package/SVF-doxygen/html/html/functions_type_v.html +2 -2
- package/SVF-doxygen/html/html/functions_u.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +8 -8
- package/SVF-doxygen/html/html/functions_vars_a.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_c.html +11 -11
- package/SVF-doxygen/html/html/functions_vars_f.html +5 -5
- package/SVF-doxygen/html/html/functions_vars_g.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_i.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_r.html +1 -1
- package/SVF-doxygen/html/html/functions_w.html +9 -5
- package/SVF-doxygen/html/html/hierarchy.html +7 -7
- package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
- package/SVF-doxygen/html/html/search/all_1.js +58 -58
- package/SVF-doxygen/html/html/search/all_10.js +8 -8
- package/SVF-doxygen/html/html/search/all_12.js +8 -7
- package/SVF-doxygen/html/html/search/all_13.js +11 -11
- package/SVF-doxygen/html/html/search/all_14.js +8 -8
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +4 -4
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +35 -34
- package/SVF-doxygen/html/html/search/all_6.js +12 -12
- package/SVF-doxygen/html/html/search/all_7.js +62 -61
- package/SVF-doxygen/html/html/search/all_8.js +17 -17
- package/SVF-doxygen/html/html/search/all_9.js +16 -16
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +5 -5
- package/SVF-doxygen/html/html/search/all_e.js +3 -3
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/classes_2.js +1 -1
- package/SVF-doxygen/html/html/search/classes_5.js +2 -2
- package/SVF-doxygen/html/html/search/classes_6.js +1 -1
- package/SVF-doxygen/html/html/search/classes_8.js +2 -2
- package/SVF-doxygen/html/html/search/classes_e.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_e.js +2 -1
- package/SVF-doxygen/html/html/search/functions_0.js +55 -55
- package/SVF-doxygen/html/html/search/functions_10.js +3 -3
- package/SVF-doxygen/html/html/search/functions_11.js +4 -4
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_2.js +10 -10
- package/SVF-doxygen/html/html/search/functions_5.js +4 -4
- package/SVF-doxygen/html/html/search/functions_6.js +61 -61
- package/SVF-doxygen/html/html/search/functions_7.js +17 -17
- package/SVF-doxygen/html/html/search/functions_8.js +12 -12
- package/SVF-doxygen/html/html/search/functions_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/functions_f.js +4 -4
- package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +21 -21
- package/SVF-doxygen/html/html/search/typedefs_5.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_8.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1.js +2 -2
- package/SVF-doxygen/html/html/search/variables_12.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_3.js +4 -4
- package/SVF-doxygen/html/html/search/variables_6.js +5 -5
- package/SVF-doxygen/html/html/search/variables_7.js +1 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +8 -8
- package/include/DDA/ContextDDA.h +3 -3
- package/include/DDA/DDAClient.h +2 -2
- package/include/DDA/DDAVFSolver.h +2 -2
- package/include/DDA/FlowDDA.h +2 -2
- package/include/Graphs/ICFG.h +33 -33
- package/include/Graphs/ICFGNode.h +33 -33
- package/include/Graphs/ICFGStat.h +11 -11
- package/include/Graphs/PTACallGraph.h +19 -19
- package/include/Graphs/SVFG.h +16 -16
- package/include/Graphs/SVFGNode.h +14 -14
- package/include/Graphs/SVFGOPT.h +1 -1
- package/include/Graphs/ThreadCallGraph.h +25 -25
- package/include/Graphs/VFG.h +10 -10
- package/include/Graphs/VFGNode.h +8 -8
- package/include/MSSA/MSSAMuChi.h +6 -6
- package/include/MSSA/MemRegion.h +24 -24
- package/include/MSSA/MemSSA.h +10 -10
- package/include/MTA/LockResultValidator.h +2 -2
- package/include/MTA/MHP.h +4 -4
- package/include/MTA/PCG.h +1 -1
- package/include/MTA/TCT.h +2 -2
- package/include/MemoryModel/PointerAnalysis.h +12 -12
- package/include/MemoryModel/SVFIR.h +21 -21
- package/include/MemoryModel/SVFStatements.h +11 -11
- package/include/SABER/LeakChecker.h +4 -4
- package/include/SABER/ProgSlice.h +2 -2
- package/include/SABER/SaberCheckerAPI.h +4 -4
- package/include/SABER/SaberSVFGBuilder.h +1 -1
- package/include/SABER/SrcSnkDDA.h +1 -1
- package/include/SVF-FE/ICFGBuilder.h +4 -4
- package/include/SVF-FE/SVFIRBuilder.h +5 -5
- package/include/Util/NodeIDAllocator.h +3 -0
- package/lib/DDA/ContextDDA.cpp +3 -3
- package/lib/DDA/DDAClient.cpp +1 -1
- package/lib/DDA/FlowDDA.cpp +1 -1
- package/lib/Graphs/ICFG.cpp +45 -45
- package/lib/Graphs/PTACallGraph.cpp +5 -5
- package/lib/Graphs/SVFG.cpp +7 -7
- package/lib/Graphs/ThreadCallGraph.cpp +6 -6
- package/lib/Graphs/VFG.cpp +6 -6
- package/lib/MSSA/MemRegion.cpp +17 -17
- package/lib/MSSA/MemSSA.cpp +3 -3
- package/lib/MTA/LockAnalysis.cpp +4 -4
- package/lib/MTA/MHP.cpp +5 -5
- package/lib/MTA/MTAResultValidator.cpp +1 -1
- package/lib/MTA/PCG.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +10 -10
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
- package/lib/MemoryModel/SVFIR.cpp +5 -5
- package/lib/SABER/DoubleFreeChecker.cpp +1 -1
- package/lib/SABER/FileChecker.cpp +2 -2
- package/lib/SABER/LeakChecker.cpp +8 -8
- package/lib/SABER/ProgSlice.cpp +2 -2
- package/lib/SVF-FE/CallGraphBuilder.cpp +4 -4
- package/lib/SVF-FE/Graph2Json.cpp +5 -5
- package/lib/SVF-FE/ICFGBuilder.cpp +18 -18
- package/lib/SVF-FE/SVFIRBuilder.cpp +8 -8
- package/lib/Util/NodeIDAllocator.cpp +12 -0
- package/lib/Util/Options.cpp +2 -1
- package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
- package/lib/WPA/Andersen.cpp +3 -3
- package/lib/WPA/FlowSensitive.cpp +2 -2
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
- package/lib/WPA/WPAPass.cpp +4 -4
- package/package.json +1 -1
package/include/Graphs/VFGNode.h
CHANGED
|
@@ -831,16 +831,16 @@ public:
|
|
|
831
831
|
class ActualParmVFGNode : public ArgumentVFGNode
|
|
832
832
|
{
|
|
833
833
|
private:
|
|
834
|
-
const
|
|
834
|
+
const CallICFGNode* cs;
|
|
835
835
|
public:
|
|
836
836
|
/// Constructor
|
|
837
|
-
ActualParmVFGNode(NodeID id, const PAGNode* n, const
|
|
837
|
+
ActualParmVFGNode(NodeID id, const PAGNode* n, const CallICFGNode* c) :
|
|
838
838
|
ArgumentVFGNode(id, n, AParm), cs(c)
|
|
839
839
|
{
|
|
840
840
|
}
|
|
841
841
|
|
|
842
842
|
/// Return callsite
|
|
843
|
-
inline const
|
|
843
|
+
inline const CallICFGNode* getCallSite() const
|
|
844
844
|
{
|
|
845
845
|
return cs;
|
|
846
846
|
}
|
|
@@ -948,7 +948,7 @@ public:
|
|
|
948
948
|
class ActualRetVFGNode: public ArgumentVFGNode
|
|
949
949
|
{
|
|
950
950
|
private:
|
|
951
|
-
const
|
|
951
|
+
const CallICFGNode* cs;
|
|
952
952
|
|
|
953
953
|
ActualRetVFGNode(); ///< place holder
|
|
954
954
|
ActualRetVFGNode(const ActualRetVFGNode &); ///< place holder
|
|
@@ -956,12 +956,12 @@ private:
|
|
|
956
956
|
|
|
957
957
|
public:
|
|
958
958
|
/// Constructor
|
|
959
|
-
ActualRetVFGNode(NodeID id, const PAGNode* n, const
|
|
959
|
+
ActualRetVFGNode(NodeID id, const PAGNode* n, const CallICFGNode* c) :
|
|
960
960
|
ArgumentVFGNode(id, n, ARet), cs(c)
|
|
961
961
|
{
|
|
962
962
|
}
|
|
963
963
|
/// Return callsite
|
|
964
|
-
inline const
|
|
964
|
+
inline const CallICFGNode* getCallSite() const
|
|
965
965
|
{
|
|
966
966
|
return cs;
|
|
967
967
|
}
|
|
@@ -1090,7 +1090,7 @@ public:
|
|
|
1090
1090
|
return fun;
|
|
1091
1091
|
}
|
|
1092
1092
|
|
|
1093
|
-
inline const
|
|
1093
|
+
inline const CallICFGNode* getCallSite() const
|
|
1094
1094
|
{
|
|
1095
1095
|
assert(isActualRetPHI() && "expect a actual return phi");
|
|
1096
1096
|
return callInst;
|
|
@@ -1120,7 +1120,7 @@ public:
|
|
|
1120
1120
|
|
|
1121
1121
|
private:
|
|
1122
1122
|
const SVFFunction* fun;
|
|
1123
|
-
const
|
|
1123
|
+
const CallICFGNode* callInst;
|
|
1124
1124
|
};
|
|
1125
1125
|
|
|
1126
1126
|
|
package/include/MSSA/MSSAMuChi.h
CHANGED
|
@@ -222,12 +222,12 @@ class CallMU : public MSSAMU<Cond>
|
|
|
222
222
|
{
|
|
223
223
|
|
|
224
224
|
private:
|
|
225
|
-
const
|
|
225
|
+
const CallICFGNode* callsite;
|
|
226
226
|
|
|
227
227
|
public:
|
|
228
228
|
/// Constructor/Destructor for MU
|
|
229
229
|
//@{
|
|
230
|
-
CallMU(const
|
|
230
|
+
CallMU(const CallICFGNode* cs, const MemRegion* m, Cond c = true) :
|
|
231
231
|
MSSAMU<Cond>(MSSAMU<Cond>::CallMSSAMU,m,c), callsite(cs)
|
|
232
232
|
{
|
|
233
233
|
}
|
|
@@ -238,7 +238,7 @@ public:
|
|
|
238
238
|
//@}
|
|
239
239
|
|
|
240
240
|
/// Return callsite
|
|
241
|
-
inline const
|
|
241
|
+
inline const CallICFGNode* getCallSite() const
|
|
242
242
|
{
|
|
243
243
|
return callsite;
|
|
244
244
|
}
|
|
@@ -521,11 +521,11 @@ template<class Cond>
|
|
|
521
521
|
class CallCHI : public MSSACHI<Cond>
|
|
522
522
|
{
|
|
523
523
|
private:
|
|
524
|
-
const
|
|
524
|
+
const CallICFGNode* callsite;
|
|
525
525
|
public:
|
|
526
526
|
/// Constructors for StoreCHI
|
|
527
527
|
//@{
|
|
528
|
-
CallCHI(const
|
|
528
|
+
CallCHI(const CallICFGNode* cs, const MemRegion* m, Cond c = true) :
|
|
529
529
|
MSSACHI<Cond>(MSSADEF::CallMSSACHI,m,c), callsite(cs)
|
|
530
530
|
{
|
|
531
531
|
}
|
|
@@ -541,7 +541,7 @@ public:
|
|
|
541
541
|
}
|
|
542
542
|
|
|
543
543
|
/// Return callsite
|
|
544
|
-
inline const
|
|
544
|
+
inline const CallICFGNode* getCallSite() const
|
|
545
545
|
{
|
|
546
546
|
return callsite;
|
|
547
547
|
}
|
package/include/MSSA/MemRegion.h
CHANGED
|
@@ -148,14 +148,14 @@ public:
|
|
|
148
148
|
//@{
|
|
149
149
|
typedef Map<const LoadStmt*, MRSet> LoadsToMRsMap;
|
|
150
150
|
typedef Map<const StoreStmt*, MRSet> StoresToMRsMap;
|
|
151
|
-
typedef Map<const
|
|
151
|
+
typedef Map<const CallICFGNode*, MRSet> CallSiteToMRsMap;
|
|
152
152
|
//@}
|
|
153
153
|
|
|
154
154
|
/// Map loads/stores/callsites to their cpts set
|
|
155
155
|
//@{
|
|
156
156
|
typedef Map<const LoadStmt*, NodeBS> LoadsToPointsToMap;
|
|
157
157
|
typedef Map<const StoreStmt*, NodeBS> StoresToPointsToMap;
|
|
158
|
-
typedef Map<const
|
|
158
|
+
typedef Map<const CallICFGNode*, NodeBS> CallSiteToPointsToMap;
|
|
159
159
|
//@}
|
|
160
160
|
|
|
161
161
|
/// Maps Mod-Ref analysis
|
|
@@ -163,7 +163,7 @@ public:
|
|
|
163
163
|
/// Map a function to its indirect refs/mods of memory objects
|
|
164
164
|
typedef Map<const SVFFunction*, NodeBS> FunToNodeBSMap;
|
|
165
165
|
/// Map a callsite to its indirect refs/mods of memory objects
|
|
166
|
-
typedef Map<const
|
|
166
|
+
typedef Map<const CallICFGNode*, NodeBS> CallSiteToNodeBSMap;
|
|
167
167
|
//@}
|
|
168
168
|
|
|
169
169
|
typedef Map<NodeID, NodeBS> NodeToPTSSMap;
|
|
@@ -242,18 +242,18 @@ private:
|
|
|
242
242
|
void destroy();
|
|
243
243
|
|
|
244
244
|
//Get all objects might pass into callee from a callsite
|
|
245
|
-
void collectCallSitePts(const
|
|
245
|
+
void collectCallSitePts(const CallICFGNode* cs);
|
|
246
246
|
|
|
247
247
|
//Recursive collect points-to chain
|
|
248
248
|
NodeBS& CollectPtsChain(NodeID id);
|
|
249
249
|
|
|
250
250
|
/// Return the pts chain of all callsite arguments
|
|
251
|
-
inline NodeBS& getCallSiteArgsPts(const
|
|
251
|
+
inline NodeBS& getCallSiteArgsPts(const CallICFGNode* cs)
|
|
252
252
|
{
|
|
253
253
|
return csToCallSiteArgsPtsMap[cs];
|
|
254
254
|
}
|
|
255
255
|
/// Return the pts chain of the return parameter of the callsite
|
|
256
|
-
inline NodeBS& getCallSiteRetPts(const
|
|
256
|
+
inline NodeBS& getCallSiteRetPts(const CallICFGNode* cs)
|
|
257
257
|
{
|
|
258
258
|
return csToCallSiteRetPtsMap[cs];
|
|
259
259
|
}
|
|
@@ -329,7 +329,7 @@ protected:
|
|
|
329
329
|
virtual void modRefAnalysis(PTACallGraphNode* callGraphNode, WorkList& worklist);
|
|
330
330
|
|
|
331
331
|
/// Get Mod-Ref of a callee function
|
|
332
|
-
virtual bool handleCallsiteModRef(NodeBS& mod, NodeBS& ref, const
|
|
332
|
+
virtual bool handleCallsiteModRef(NodeBS& mod, NodeBS& ref, const CallICFGNode* cs, const SVFFunction* fun);
|
|
333
333
|
|
|
334
334
|
|
|
335
335
|
/// Add cpts to store/load
|
|
@@ -346,12 +346,12 @@ protected:
|
|
|
346
346
|
funToPointsToMap[fun].insert(cpts);
|
|
347
347
|
addRefSideEffectOfFunction(fun,cpts);
|
|
348
348
|
}
|
|
349
|
-
inline void addCPtsToCallSiteRefs(NodeBS& cpts, const
|
|
349
|
+
inline void addCPtsToCallSiteRefs(NodeBS& cpts, const CallICFGNode* cs)
|
|
350
350
|
{
|
|
351
351
|
callsiteToRefPointsToMap[cs] |= cpts;
|
|
352
352
|
funToPointsToMap[cs->getCaller()].insert(cpts);
|
|
353
353
|
}
|
|
354
|
-
inline void addCPtsToCallSiteMods(NodeBS& cpts, const
|
|
354
|
+
inline void addCPtsToCallSiteMods(NodeBS& cpts, const CallICFGNode* cs)
|
|
355
355
|
{
|
|
356
356
|
callsiteToModPointsToMap[cs] |= cpts;
|
|
357
357
|
funToPointsToMap[cs->getCaller()].insert(cpts);
|
|
@@ -376,9 +376,9 @@ protected:
|
|
|
376
376
|
/// Add indirect def an memory object in the function
|
|
377
377
|
void addModSideEffectOfFunction(const SVFFunction* fun, const NodeBS& mods);
|
|
378
378
|
/// Add indirect uses an memory object in the function
|
|
379
|
-
bool addRefSideEffectOfCallSite(const
|
|
379
|
+
bool addRefSideEffectOfCallSite(const CallICFGNode* cs, const NodeBS& refs);
|
|
380
380
|
/// Add indirect def an memory object in the function
|
|
381
|
-
bool addModSideEffectOfCallSite(const
|
|
381
|
+
bool addModSideEffectOfCallSite(const CallICFGNode* cs, const NodeBS& mods);
|
|
382
382
|
|
|
383
383
|
/// Get indirect refs of a function
|
|
384
384
|
inline const NodeBS& getRefSideEffectOfFunction(const SVFFunction* fun)
|
|
@@ -391,22 +391,22 @@ protected:
|
|
|
391
391
|
return funToModsMap[fun];
|
|
392
392
|
}
|
|
393
393
|
/// Get indirect refs of a callsite
|
|
394
|
-
inline const NodeBS& getRefSideEffectOfCallSite(const
|
|
394
|
+
inline const NodeBS& getRefSideEffectOfCallSite(const CallICFGNode* cs)
|
|
395
395
|
{
|
|
396
396
|
return csToRefsMap[cs];
|
|
397
397
|
}
|
|
398
398
|
/// Get indirect mods of a callsite
|
|
399
|
-
inline const NodeBS& getModSideEffectOfCallSite(const
|
|
399
|
+
inline const NodeBS& getModSideEffectOfCallSite(const CallICFGNode* cs)
|
|
400
400
|
{
|
|
401
401
|
return csToModsMap[cs];
|
|
402
402
|
}
|
|
403
403
|
/// Has indirect refs of a callsite
|
|
404
|
-
inline bool hasRefSideEffectOfCallSite(const
|
|
404
|
+
inline bool hasRefSideEffectOfCallSite(const CallICFGNode* cs)
|
|
405
405
|
{
|
|
406
406
|
return csToRefsMap.find(cs) != csToRefsMap.end();
|
|
407
407
|
}
|
|
408
408
|
/// Has indirect mods of a callsite
|
|
409
|
-
inline bool hasModSideEffectOfCallSite(const
|
|
409
|
+
inline bool hasModSideEffectOfCallSite(const CallICFGNode* cs)
|
|
410
410
|
{
|
|
411
411
|
return csToModsMap.find(cs) != csToModsMap.end();
|
|
412
412
|
}
|
|
@@ -448,19 +448,19 @@ public:
|
|
|
448
448
|
{
|
|
449
449
|
return storesToMRsMap[store];
|
|
450
450
|
}
|
|
451
|
-
inline bool hasRefMRSet(const
|
|
451
|
+
inline bool hasRefMRSet(const CallICFGNode* cs)
|
|
452
452
|
{
|
|
453
453
|
return callsiteToRefMRsMap.find(cs)!=callsiteToRefMRsMap.end();
|
|
454
454
|
}
|
|
455
|
-
inline bool hasModMRSet(const
|
|
455
|
+
inline bool hasModMRSet(const CallICFGNode* cs)
|
|
456
456
|
{
|
|
457
457
|
return callsiteToModMRsMap.find(cs)!=callsiteToModMRsMap.end();
|
|
458
458
|
}
|
|
459
|
-
inline MRSet& getCallSiteRefMRSet(const
|
|
459
|
+
inline MRSet& getCallSiteRefMRSet(const CallICFGNode* cs)
|
|
460
460
|
{
|
|
461
461
|
return callsiteToRefMRsMap[cs];
|
|
462
462
|
}
|
|
463
|
-
inline MRSet& getCallSiteModMRSet(const
|
|
463
|
+
inline MRSet& getCallSiteModMRSet(const CallICFGNode* cs)
|
|
464
464
|
{
|
|
465
465
|
return callsiteToModMRsMap[cs];
|
|
466
466
|
}
|
|
@@ -473,11 +473,11 @@ public:
|
|
|
473
473
|
/// getModRefInfo APIs
|
|
474
474
|
//@{
|
|
475
475
|
/// Collect mod ref for external callsite other than heap alloc external call
|
|
476
|
-
NodeBS getModInfoForCall(const
|
|
477
|
-
NodeBS getRefInfoForCall(const
|
|
478
|
-
ModRefInfo getModRefInfo(const
|
|
479
|
-
ModRefInfo getModRefInfo(const
|
|
480
|
-
ModRefInfo getModRefInfo(const
|
|
476
|
+
NodeBS getModInfoForCall(const CallICFGNode* cs);
|
|
477
|
+
NodeBS getRefInfoForCall(const CallICFGNode* cs);
|
|
478
|
+
ModRefInfo getModRefInfo(const CallICFGNode* cs);
|
|
479
|
+
ModRefInfo getModRefInfo(const CallICFGNode* cs, const Value* V);
|
|
480
|
+
ModRefInfo getModRefInfo(const CallICFGNode* cs1, const CallICFGNode* cs2);
|
|
481
481
|
//@}
|
|
482
482
|
|
|
483
483
|
};
|
package/include/MSSA/MemSSA.h
CHANGED
|
@@ -73,8 +73,8 @@ public:
|
|
|
73
73
|
//@{
|
|
74
74
|
typedef Map<const LoadStmt*, MUSet> LoadToMUSetMap;
|
|
75
75
|
typedef Map<const StoreStmt*, CHISet> StoreToChiSetMap;
|
|
76
|
-
typedef Map<const
|
|
77
|
-
typedef Map<const
|
|
76
|
+
typedef Map<const CallICFGNode*, MUSet> CallSiteToMUSetMap;
|
|
77
|
+
typedef Map<const CallICFGNode*, CHISet> CallSiteToCHISetMap;
|
|
78
78
|
typedef Map<const BasicBlock*, PHISet> BBToPhiSetMap;
|
|
79
79
|
//@}
|
|
80
80
|
|
|
@@ -190,12 +190,12 @@ private:
|
|
|
190
190
|
for (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)
|
|
191
191
|
AddStoreCHI(bb,store,*iter);
|
|
192
192
|
}
|
|
193
|
-
inline void AddCallSiteMU(const
|
|
193
|
+
inline void AddCallSiteMU(const CallICFGNode* cs, const MRSet& mrSet)
|
|
194
194
|
{
|
|
195
195
|
for (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)
|
|
196
196
|
AddCallSiteMU(cs,*iter);
|
|
197
197
|
}
|
|
198
|
-
inline void AddCallSiteCHI(const
|
|
198
|
+
inline void AddCallSiteCHI(const CallICFGNode* cs, const MRSet& mrSet)
|
|
199
199
|
{
|
|
200
200
|
for (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)
|
|
201
201
|
AddCallSiteCHI(cs,*iter);
|
|
@@ -218,13 +218,13 @@ private:
|
|
|
218
218
|
collectRegUses(mr);
|
|
219
219
|
collectRegDefs(bb,mr);
|
|
220
220
|
}
|
|
221
|
-
inline void AddCallSiteMU(const
|
|
221
|
+
inline void AddCallSiteMU(const CallICFGNode* cs, const MemRegion* mr)
|
|
222
222
|
{
|
|
223
223
|
CALLMU* mu = new CALLMU(cs, mr);
|
|
224
224
|
callsiteToMuSetMap[cs].insert(mu);
|
|
225
225
|
collectRegUses(mr);
|
|
226
226
|
}
|
|
227
|
-
inline void AddCallSiteCHI(const
|
|
227
|
+
inline void AddCallSiteCHI(const CallICFGNode* cs, const MemRegion* mr)
|
|
228
228
|
{
|
|
229
229
|
CALLCHI* chi = new CALLCHI(cs, mr);
|
|
230
230
|
callsiteToChiSetMap[cs].insert(chi);
|
|
@@ -352,11 +352,11 @@ public:
|
|
|
352
352
|
else
|
|
353
353
|
return false;
|
|
354
354
|
}
|
|
355
|
-
inline bool hasMU(const
|
|
355
|
+
inline bool hasMU(const CallICFGNode* cs) const
|
|
356
356
|
{
|
|
357
357
|
return callsiteToMuSetMap.find(cs)!=callsiteToMuSetMap.end();
|
|
358
358
|
}
|
|
359
|
-
inline bool hasCHI(const
|
|
359
|
+
inline bool hasCHI(const CallICFGNode* cs) const
|
|
360
360
|
{
|
|
361
361
|
return callsiteToChiSetMap.find(cs)!=callsiteToChiSetMap.end();
|
|
362
362
|
}
|
|
@@ -393,11 +393,11 @@ public:
|
|
|
393
393
|
{
|
|
394
394
|
return store2ChiSetMap[st];
|
|
395
395
|
}
|
|
396
|
-
inline MUSet& getMUSet(const
|
|
396
|
+
inline MUSet& getMUSet(const CallICFGNode* cs)
|
|
397
397
|
{
|
|
398
398
|
return callsiteToMuSetMap[cs];
|
|
399
399
|
}
|
|
400
|
-
inline CHISet& getCHISet(const
|
|
400
|
+
inline CHISet& getCHISet(const CallICFGNode* cs)
|
|
401
401
|
{
|
|
402
402
|
return callsiteToChiSetMap[cs];
|
|
403
403
|
}
|
|
@@ -33,8 +33,8 @@ public:
|
|
|
33
33
|
return _mod;
|
|
34
34
|
}
|
|
35
35
|
private:
|
|
36
|
-
// Get
|
|
37
|
-
inline
|
|
36
|
+
// Get CallICFGNode
|
|
37
|
+
inline CallICFGNode* getCBN(const Instruction* inst) {
|
|
38
38
|
return _la->getTCT()->getCallBlockNode(inst);
|
|
39
39
|
}
|
|
40
40
|
const Instruction *getPreviousMemoryAccessInst( const Instruction *I) {
|
package/include/MTA/MHP.h
CHANGED
|
@@ -61,8 +61,8 @@ public:
|
|
|
61
61
|
return tct;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
// Get
|
|
65
|
-
inline
|
|
64
|
+
// Get CallICFGNode
|
|
65
|
+
inline CallICFGNode* getCBN(const Instruction* inst) {
|
|
66
66
|
return tct->getCallBlockNode(inst);
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -379,8 +379,8 @@ private:
|
|
|
379
379
|
{
|
|
380
380
|
return tct->getPTA()->alias(getForkedThread(forkSite), getJoinedThread(joinSite)) && isSameSCEV(forkSite,joinSite);
|
|
381
381
|
}
|
|
382
|
-
// Get
|
|
383
|
-
inline
|
|
382
|
+
// Get CallICFGNode
|
|
383
|
+
inline CallICFGNode* getCBN(const Instruction* inst) {
|
|
384
384
|
return tct->getCallBlockNode(inst);
|
|
385
385
|
}
|
|
386
386
|
/// Mark thread flags for cxtStmt
|
package/include/MTA/PCG.h
CHANGED
|
@@ -123,7 +123,7 @@ public:
|
|
|
123
123
|
{
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
|
|
126
|
+
CallICFGNode* getCallBlockNode(const Instruction* inst) {
|
|
127
127
|
return pta->getICFG()->getCallBlockNode(inst);
|
|
128
128
|
}
|
|
129
129
|
const SVFFunction* getSVFFun(const Function* fun) const {
|
package/include/MTA/TCT.h
CHANGED
|
@@ -147,8 +147,8 @@ public:
|
|
|
147
147
|
{
|
|
148
148
|
destroy();
|
|
149
149
|
}
|
|
150
|
-
/// Get
|
|
151
|
-
|
|
150
|
+
/// Get CallICFGNode given inst
|
|
151
|
+
CallICFGNode* getCallBlockNode(const Instruction* inst) {
|
|
152
152
|
return pta->getICFG()->getCallBlockNode(inst);
|
|
153
153
|
}
|
|
154
154
|
/// Get SVFFuntion given Function
|
|
@@ -105,10 +105,10 @@ public:
|
|
|
105
105
|
/// Indirect call edges type, map a callsite to a set of callees
|
|
106
106
|
//@{
|
|
107
107
|
typedef llvm::AliasAnalysis AliasAnalysis;
|
|
108
|
-
typedef Set<const
|
|
108
|
+
typedef Set<const CallICFGNode*> CallSiteSet;
|
|
109
109
|
typedef SVFIR::CallSiteToFunPtrMap CallSiteToFunPtrMap;
|
|
110
110
|
typedef Set<const SVFFunction*> FunctionSet;
|
|
111
|
-
typedef OrderedMap<const
|
|
111
|
+
typedef OrderedMap<const CallICFGNode*, FunctionSet> CallEdgeMap;
|
|
112
112
|
typedef SCCDetection<PTACallGraph*> CallGraphSCC;
|
|
113
113
|
typedef Set<const GlobalValue*> VTableSet;
|
|
114
114
|
typedef Set<const SVFFunction*> VFunSet;
|
|
@@ -263,7 +263,7 @@ public:
|
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
/// Print targets of a function pointer
|
|
266
|
-
void printIndCSTargets(const
|
|
266
|
+
void printIndCSTargets(const CallICFGNode* cs, const FunctionSet& targets);
|
|
267
267
|
|
|
268
268
|
// Debug purpose
|
|
269
269
|
//@{
|
|
@@ -282,7 +282,7 @@ protected:
|
|
|
282
282
|
return pag->getIndirectCallsites();
|
|
283
283
|
}
|
|
284
284
|
/// Return function pointer PAGNode at a callsite cs
|
|
285
|
-
inline NodeID getFunPtr(const
|
|
285
|
+
inline NodeID getFunPtr(const CallICFGNode* cs) const
|
|
286
286
|
{
|
|
287
287
|
return pag->getFunPtr(cs);
|
|
288
288
|
}
|
|
@@ -389,20 +389,20 @@ public:
|
|
|
389
389
|
{
|
|
390
390
|
return getPTACallGraph()->getIndCallMap();
|
|
391
391
|
}
|
|
392
|
-
inline bool hasIndCSCallees(const
|
|
392
|
+
inline bool hasIndCSCallees(const CallICFGNode* cs) const
|
|
393
393
|
{
|
|
394
394
|
return getPTACallGraph()->hasIndCSCallees(cs);
|
|
395
395
|
}
|
|
396
|
-
inline const FunctionSet& getIndCSCallees(const
|
|
396
|
+
inline const FunctionSet& getIndCSCallees(const CallICFGNode* cs) const
|
|
397
397
|
{
|
|
398
398
|
return getPTACallGraph()->getIndCSCallees(cs);
|
|
399
399
|
}
|
|
400
400
|
//@}
|
|
401
401
|
|
|
402
402
|
/// Resolve indirect call edges
|
|
403
|
-
virtual void resolveIndCalls(const
|
|
403
|
+
virtual void resolveIndCalls(const CallICFGNode* cs, const PointsTo& target, CallEdgeMap& newEdges,LLVMCallGraph* callgraph = nullptr);
|
|
404
404
|
/// Match arguments for callsite at caller and callee
|
|
405
|
-
bool matchArgs(const
|
|
405
|
+
bool matchArgs(const CallICFGNode* cs, const SVFFunction* callee);
|
|
406
406
|
|
|
407
407
|
/// CallGraph SCC related methods
|
|
408
408
|
//@{
|
|
@@ -446,10 +446,10 @@ public:
|
|
|
446
446
|
return chgraph;
|
|
447
447
|
}
|
|
448
448
|
|
|
449
|
-
void getVFnsFromCHA(const
|
|
450
|
-
void getVFnsFromPts(const
|
|
451
|
-
void connectVCallToVFns(const
|
|
452
|
-
virtual void resolveCPPIndCalls(const
|
|
449
|
+
void getVFnsFromCHA(const CallICFGNode* cs, VFunSet &vfns);
|
|
450
|
+
void getVFnsFromPts(const CallICFGNode* cs, const PointsTo &target, VFunSet &vfns);
|
|
451
|
+
void connectVCallToVFns(const CallICFGNode* cs, const VFunSet &vfns, CallEdgeMap& newEdges);
|
|
452
|
+
virtual void resolveCPPIndCalls(const CallICFGNode* cs,
|
|
453
453
|
const PointsTo& target,
|
|
454
454
|
CallEdgeMap& newEdges);
|
|
455
455
|
|
|
@@ -49,16 +49,16 @@ friend class PAGBuilderFromFile;
|
|
|
49
49
|
friend class TypeBasedHeapCloning;
|
|
50
50
|
|
|
51
51
|
public:
|
|
52
|
-
typedef Set<const
|
|
53
|
-
typedef OrderedMap<const
|
|
52
|
+
typedef Set<const CallICFGNode*> CallSiteSet;
|
|
53
|
+
typedef OrderedMap<const CallICFGNode*,NodeID> CallSiteToFunPtrMap;
|
|
54
54
|
typedef Map<NodeID,CallSiteSet> FunPtrToCallSitesMap;
|
|
55
55
|
typedef Map<NodeID,NodeBS> MemObjToFieldsMap;
|
|
56
56
|
typedef std::vector<const SVFStmt*> SVFStmtList;
|
|
57
57
|
typedef std::vector<const SVFVar*> SVFVarList;
|
|
58
58
|
typedef Map<const SVFVar*,PhiStmt*> PHINodeMap;
|
|
59
59
|
typedef Map<const SVFFunction*,SVFVarList> FunToArgsListMap;
|
|
60
|
-
typedef Map<const
|
|
61
|
-
typedef Map<const
|
|
60
|
+
typedef Map<const CallICFGNode*,SVFVarList> CSToArgsListMap;
|
|
61
|
+
typedef Map<const RetICFGNode*,const SVFVar*> CSToRetMap;
|
|
62
62
|
typedef Map<const SVFFunction*,const SVFVar*> FunToRetMap;
|
|
63
63
|
typedef Map<const SVFFunction*,SVFStmtSet> FunToPAGEdgeSetMap;
|
|
64
64
|
typedef Map<const ICFGNode*,SVFStmtList> ICFGNode2SVFStmtsMap;
|
|
@@ -229,7 +229,7 @@ public:
|
|
|
229
229
|
return it->second;
|
|
230
230
|
}
|
|
231
231
|
/// Callsite has argument list
|
|
232
|
-
inline bool hasCallSiteArgsMap(const
|
|
232
|
+
inline bool hasCallSiteArgsMap(const CallICFGNode* cs) const
|
|
233
233
|
{
|
|
234
234
|
return (callSiteArgsListMap.find(cs) != callSiteArgsListMap.end());
|
|
235
235
|
}
|
|
@@ -239,7 +239,7 @@ public:
|
|
|
239
239
|
return callSiteArgsListMap;
|
|
240
240
|
}
|
|
241
241
|
/// Get callsite argument list
|
|
242
|
-
inline const SVFVarList& getCallSiteArgsList(const
|
|
242
|
+
inline const SVFVarList& getCallSiteArgsList(const CallICFGNode* cs) const
|
|
243
243
|
{
|
|
244
244
|
CSToArgsListMap::const_iterator it = callSiteArgsListMap.find(cs);
|
|
245
245
|
assert(it != callSiteArgsListMap.end() && "this call site doesn't have arguments");
|
|
@@ -251,13 +251,13 @@ public:
|
|
|
251
251
|
return callSiteRetMap;
|
|
252
252
|
}
|
|
253
253
|
/// Get callsite return
|
|
254
|
-
inline const SVFVar* getCallSiteRet(const
|
|
254
|
+
inline const SVFVar* getCallSiteRet(const RetICFGNode* cs) const
|
|
255
255
|
{
|
|
256
256
|
CSToRetMap::const_iterator it = callSiteRetMap.find(cs);
|
|
257
257
|
assert(it != callSiteRetMap.end() && "this call site doesn't have return");
|
|
258
258
|
return it->second;
|
|
259
259
|
}
|
|
260
|
-
inline bool callsiteHasRet(const
|
|
260
|
+
inline bool callsiteHasRet(const RetICFGNode* cs) const
|
|
261
261
|
{
|
|
262
262
|
return callSiteRetMap.find(cs) != callSiteRetMap.end();
|
|
263
263
|
}
|
|
@@ -313,7 +313,7 @@ public:
|
|
|
313
313
|
{
|
|
314
314
|
return indCallSiteToFunPtrMap;
|
|
315
315
|
}
|
|
316
|
-
inline NodeID getFunPtr(const
|
|
316
|
+
inline NodeID getFunPtr(const CallICFGNode* cs) const
|
|
317
317
|
{
|
|
318
318
|
CallSiteToFunPtrMap::const_iterator it = indCallSiteToFunPtrMap.find(cs);
|
|
319
319
|
assert(it!=indCallSiteToFunPtrMap.end() && "indirect callsite not have a function pointer?");
|
|
@@ -325,7 +325,7 @@ public:
|
|
|
325
325
|
assert(it!=funPtrToCallSitesMap.end() && "function pointer not used at any indirect callsite?");
|
|
326
326
|
return it->second;
|
|
327
327
|
}
|
|
328
|
-
inline bool isIndirectCallSites(const
|
|
328
|
+
inline bool isIndirectCallSites(const CallICFGNode* cs) const
|
|
329
329
|
{
|
|
330
330
|
return (indCallSiteToFunPtrMap.find(cs) != indCallSiteToFunPtrMap.end());
|
|
331
331
|
}
|
|
@@ -493,31 +493,31 @@ private:
|
|
|
493
493
|
/// Add function arguments
|
|
494
494
|
inline void addFunArgs(const SVFFunction* fun, const SVFVar* arg)
|
|
495
495
|
{
|
|
496
|
-
|
|
496
|
+
FunEntryICFGNode* funEntryBlockNode = icfg->getFunEntryBlockNode(fun);
|
|
497
497
|
funEntryBlockNode->addFormalParms(arg);
|
|
498
498
|
funArgsListMap[fun].push_back(arg);
|
|
499
499
|
}
|
|
500
500
|
/// Add function returns
|
|
501
501
|
inline void addFunRet(const SVFFunction* fun, const SVFVar* ret)
|
|
502
502
|
{
|
|
503
|
-
|
|
503
|
+
FunExitICFGNode* funExitBlockNode = icfg->getFunExitBlockNode(fun);
|
|
504
504
|
funExitBlockNode->addFormalRet(ret);
|
|
505
505
|
funRetMap[fun] = ret;
|
|
506
506
|
}
|
|
507
507
|
/// Add callsite arguments
|
|
508
|
-
inline void addCallSiteArgs(
|
|
508
|
+
inline void addCallSiteArgs(CallICFGNode* callBlockNode,const SVFVar* arg)
|
|
509
509
|
{
|
|
510
510
|
callBlockNode->addActualParms(arg);
|
|
511
511
|
callSiteArgsListMap[callBlockNode].push_back(arg);
|
|
512
512
|
}
|
|
513
513
|
/// Add callsite returns
|
|
514
|
-
inline void addCallSiteRets(
|
|
514
|
+
inline void addCallSiteRets(RetICFGNode* retBlockNode,const SVFVar* arg)
|
|
515
515
|
{
|
|
516
516
|
retBlockNode->addActualRet(arg);
|
|
517
517
|
callSiteRetMap[retBlockNode]= arg;
|
|
518
518
|
}
|
|
519
519
|
/// Add indirect callsites
|
|
520
|
-
inline void addIndirectCallsites(const
|
|
520
|
+
inline void addIndirectCallsites(const CallICFGNode* cs,NodeID funPtr)
|
|
521
521
|
{
|
|
522
522
|
bool added = indCallSiteToFunPtrMap.insert(std::make_pair(cs,funPtr)).second;
|
|
523
523
|
funPtrToCallSitesMap[funPtr].insert(cs);
|
|
@@ -618,7 +618,7 @@ private:
|
|
|
618
618
|
globSVFStmtSet.insert(edge);
|
|
619
619
|
}
|
|
620
620
|
/// Add callsites
|
|
621
|
-
inline void addCallSite(const
|
|
621
|
+
inline void addCallSite(const CallICFGNode* call)
|
|
622
622
|
{
|
|
623
623
|
callSiteSet.insert(call);
|
|
624
624
|
}
|
|
@@ -641,11 +641,11 @@ private:
|
|
|
641
641
|
/// Add Load edge
|
|
642
642
|
LoadStmt* addLoadStmt(NodeID src, NodeID dst);
|
|
643
643
|
/// Add Store edge
|
|
644
|
-
StoreStmt* addStoreStmt(NodeID src, NodeID dst, const
|
|
644
|
+
StoreStmt* addStoreStmt(NodeID src, NodeID dst, const IntraICFGNode* val);
|
|
645
645
|
/// Add Call edge
|
|
646
|
-
CallPE* addCallPE(NodeID src, NodeID dst, const
|
|
646
|
+
CallPE* addCallPE(NodeID src, NodeID dst, const CallICFGNode* cs);
|
|
647
647
|
/// Add Return edge
|
|
648
|
-
RetPE* addRetPE(NodeID src, NodeID dst, const
|
|
648
|
+
RetPE* addRetPE(NodeID src, NodeID dst, const CallICFGNode* cs);
|
|
649
649
|
/// Add Gep edge
|
|
650
650
|
GepStmt* addGepStmt(NodeID src, NodeID dst, const LocationSet& ls, bool constGep);
|
|
651
651
|
/// Add Offset(Gep) edge
|
|
@@ -653,9 +653,9 @@ private:
|
|
|
653
653
|
/// Add Variant(Gep) edge
|
|
654
654
|
VariantGepStmt* addVariantGepStmt(NodeID src, NodeID dst, const LocationSet& ls);
|
|
655
655
|
/// Add Thread fork edge for parameter passing
|
|
656
|
-
TDForkPE* addThreadForkPE(NodeID src, NodeID dst, const
|
|
656
|
+
TDForkPE* addThreadForkPE(NodeID src, NodeID dst, const CallICFGNode* cs);
|
|
657
657
|
/// Add Thread join edge for parameter passing
|
|
658
|
-
TDJoinPE* addThreadJoinPE(NodeID src, NodeID dst, const
|
|
658
|
+
TDJoinPE* addThreadJoinPE(NodeID src, NodeID dst, const CallICFGNode* cs);
|
|
659
659
|
//@}
|
|
660
660
|
|
|
661
661
|
/// Set a pointer points-to black hole (e.g. int2ptr)
|