svf-tools 1.0.340 → 1.0.344
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 +6 -6
- package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
- 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 +6 -6
- 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 +11 -11
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +15 -15
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
- 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 +64 -61
- package/SVF-doxygen/html/html/ICFG_8h_source.html +46 -46
- 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/LocationSet_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- 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 +27 -27
- 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 +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Options_8h_source.html +2 -2
- 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/PTAStat_8cpp_source.html +5 -5
- 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 +18 -18
- 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 +32 -32
- 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 +32 -32
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +14 -14
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +3 -3
- 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 +16 -15
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +30 -28
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +44 -42
- 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 +5 -5
- 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 +20 -20
- package/SVF-doxygen/html/html/VFG_8h_source.html +19 -19
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
- 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_1AddrStmt.html +3 -3
- 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 +47 -47
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +34 -34
- 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_1BinaryOPStmt.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +15 -12
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +5 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +2 -2
- 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 +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- 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 +3 -3
- 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_1CopyStmt.html +3 -3
- 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_1FIObjVar.html +3 -3
- 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 +43 -43
- 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_1FunEntryBlockNode.html +4 -2
- 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_1FunExitBlockNode.html +4 -2
- 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_1GepObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +3 -1
- 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 +224 -217
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +74 -71
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +10 -10
- 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 +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +7 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +2 -2
- 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_1IntraPHIVFGNode.html +1 -1
- 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_1LoadStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +1 -1
- 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 +11 -11
- 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 +198 -198
- 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_1MemObj-members.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +70 -47
- 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_1MultiOpndStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +17 -15
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +141 -106
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +26 -26
- 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_1PHIVFGNode.html +1 -1
- 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_1PTAStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +109 -109
- 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_1RetBlockNode.html +5 -3
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +2 -2
- 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 +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +160 -160
- 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 +133 -133
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +62 -62
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
- 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_1StInfo.html +24 -24
- 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 +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +17 -16
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +16 -16
- 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 +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +19 -19
- 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 +42 -42
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- 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_1ValVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +37 -37
- 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 +74 -71
- package/SVF-doxygen/html/html/functions_eval_c.html +5 -2
- 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 +88 -88
- package/SVF-doxygen/html/html/functions_func_h.html +17 -17
- package/SVF-doxygen/html/html/functions_func_i.html +31 -29
- 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 +1 -1
- 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 +37 -35
- package/SVF-doxygen/html/html/functions_m.html +2 -2
- package/SVF-doxygen/html/html/functions_n.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +10 -10
- package/SVF-doxygen/html/html/functions_p.html +21 -30
- package/SVF-doxygen/html/html/functions_r.html +6 -6
- package/SVF-doxygen/html/html/functions_s.html +15 -14
- package/SVF-doxygen/html/html/functions_t.html +13 -15
- 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 +5 -5
- 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_p.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_r.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +5 -9
- package/SVF-doxygen/html/html/hierarchy.html +7 -7
- package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +11 -11
- package/SVF-doxygen/html/html/search/all_1.js +58 -58
- package/SVF-doxygen/html/html/search/all_10.js +13 -14
- package/SVF-doxygen/html/html/search/all_12.js +5 -5
- package/SVF-doxygen/html/html/search/all_13.js +9 -8
- package/SVF-doxygen/html/html/search/all_14.js +6 -6
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +3 -3
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +37 -35
- 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 +19 -19
- package/SVF-doxygen/html/html/search/all_c.js +1 -1
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +1 -1
- package/SVF-doxygen/html/html/search/all_f.js +2 -2
- 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_2.js +2 -1
- package/SVF-doxygen/html/html/search/functions_0.js +55 -55
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- 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 +16 -16
- package/SVF-doxygen/html/html/search/functions_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +2 -2
- 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_10.js +0 -1
- package/SVF-doxygen/html/html/search/variables_12.js +1 -1
- package/SVF-doxygen/html/html/search/variables_13.js +1 -0
- 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/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +23 -23
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- 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 +32 -32
- 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 +22 -22
- package/include/MemoryModel/SVFStatements.h +11 -11
- package/include/MemoryModel/SymbolTableInfo.h +15 -9
- 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/Options.h +1 -1
- 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 +88 -71
- 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/MemoryModel/SVFStatements.cpp +53 -49
- package/lib/MemoryModel/SVFVariables.cpp +10 -10
- package/lib/MemoryModel/SymbolTableInfo.cpp +12 -7
- 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 +31 -25
- package/lib/SVF-FE/SVFIRBuilder.cpp +8 -8
- package/lib/SVF-FE/SymbolTableBuilder.cpp +2 -2
- package/lib/Util/Options.cpp +3 -3
- package/lib/Util/PTAStat.cpp +3 -3
- package/lib/Util/SVFUtil.cpp +2 -0
- 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/ICFG.h
CHANGED
|
@@ -55,21 +55,21 @@ public:
|
|
|
55
55
|
typedef ICFGNodeIDToNodeMapTy::iterator iterator;
|
|
56
56
|
typedef ICFGNodeIDToNodeMapTy::const_iterator const_iterator;
|
|
57
57
|
|
|
58
|
-
typedef Map<const SVFFunction*,
|
|
59
|
-
typedef Map<const SVFFunction*,
|
|
60
|
-
typedef Map<const Instruction*,
|
|
61
|
-
typedef Map<const Instruction*,
|
|
62
|
-
typedef Map<const Instruction*,
|
|
58
|
+
typedef Map<const SVFFunction*, FunEntryICFGNode *> FunToFunEntryNodeMapTy;
|
|
59
|
+
typedef Map<const SVFFunction*, FunExitICFGNode *> FunToFunExitNodeMapTy;
|
|
60
|
+
typedef Map<const Instruction*, CallICFGNode *> CSToCallNodeMapTy;
|
|
61
|
+
typedef Map<const Instruction*, RetICFGNode *> CSToRetNodeMapTy;
|
|
62
|
+
typedef Map<const Instruction*, IntraICFGNode *> InstToBlockNodeMapTy;
|
|
63
63
|
|
|
64
64
|
NodeID totalICFGNode;
|
|
65
65
|
|
|
66
66
|
private:
|
|
67
|
-
FunToFunEntryNodeMapTy FunToFunEntryNodeMap; ///< map a function to its
|
|
68
|
-
FunToFunExitNodeMapTy FunToFunExitNodeMap; ///< map a function to its
|
|
69
|
-
CSToCallNodeMapTy CSToCallNodeMap; ///< map a callsite to its
|
|
70
|
-
CSToRetNodeMapTy CSToRetNodeMap; ///< map a callsite to its
|
|
67
|
+
FunToFunEntryNodeMapTy FunToFunEntryNodeMap; ///< map a function to its FunExitICFGNode
|
|
68
|
+
FunToFunExitNodeMapTy FunToFunExitNodeMap; ///< map a function to its FunEntryICFGNode
|
|
69
|
+
CSToCallNodeMapTy CSToCallNodeMap; ///< map a callsite to its CallICFGNode
|
|
70
|
+
CSToRetNodeMapTy CSToRetNodeMap; ///< map a callsite to its RetICFGNode
|
|
71
71
|
InstToBlockNodeMapTy InstToBlockNodeMap; ///< map a basic block to its ICFGNode
|
|
72
|
-
|
|
72
|
+
GlobalICFGNode* globalBlockNode; ///< unique basic block for all globals
|
|
73
73
|
|
|
74
74
|
public:
|
|
75
75
|
/// Constructor
|
|
@@ -165,17 +165,17 @@ public:
|
|
|
165
165
|
//@{
|
|
166
166
|
ICFGNode* getBlockICFGNode(const Instruction* inst);
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
CallICFGNode* getCallBlockNode(const Instruction* inst);
|
|
169
169
|
|
|
170
|
-
|
|
170
|
+
RetICFGNode* getRetBlockNode(const Instruction* inst);
|
|
171
171
|
|
|
172
|
-
|
|
172
|
+
IntraICFGNode* getIntraBlockNode(const Instruction* inst);
|
|
173
173
|
|
|
174
|
-
|
|
174
|
+
FunEntryICFGNode* getFunEntryBlockNode(const SVFFunction* fun);
|
|
175
175
|
|
|
176
|
-
|
|
176
|
+
FunExitICFGNode* getFunExitBlockNode(const SVFFunction* fun);
|
|
177
177
|
|
|
178
|
-
inline
|
|
178
|
+
inline GlobalICFGNode* getGlobalBlockNode() const
|
|
179
179
|
{
|
|
180
180
|
return globalBlockNode;
|
|
181
181
|
}
|
|
@@ -184,62 +184,62 @@ public:
|
|
|
184
184
|
private:
|
|
185
185
|
|
|
186
186
|
/// Get/Add IntraBlock ICFGNode
|
|
187
|
-
inline
|
|
187
|
+
inline IntraICFGNode* getIntraBlockICFGNode(const Instruction* inst)
|
|
188
188
|
{
|
|
189
189
|
InstToBlockNodeMapTy::const_iterator it = InstToBlockNodeMap.find(inst);
|
|
190
190
|
if (it == InstToBlockNodeMap.end())
|
|
191
191
|
return nullptr;
|
|
192
192
|
return it->second;
|
|
193
193
|
}
|
|
194
|
-
inline
|
|
194
|
+
inline IntraICFGNode* addIntraBlockICFGNode(const Instruction* inst)
|
|
195
195
|
{
|
|
196
|
-
|
|
196
|
+
IntraICFGNode* sNode = new IntraICFGNode(totalICFGNode++,inst);
|
|
197
197
|
addICFGNode(sNode);
|
|
198
198
|
InstToBlockNodeMap[inst] = sNode;
|
|
199
199
|
return sNode;
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
/// Get/Add a function entry node
|
|
203
|
-
inline
|
|
203
|
+
inline FunEntryICFGNode* getFunEntryICFGNode(const SVFFunction* fun)
|
|
204
204
|
{
|
|
205
205
|
FunToFunEntryNodeMapTy::const_iterator it = FunToFunEntryNodeMap.find(fun);
|
|
206
206
|
if (it == FunToFunEntryNodeMap.end())
|
|
207
207
|
return nullptr;
|
|
208
208
|
return it->second;
|
|
209
209
|
}
|
|
210
|
-
inline
|
|
210
|
+
inline FunEntryICFGNode* addFunEntryICFGNode(const SVFFunction* fun)
|
|
211
211
|
{
|
|
212
|
-
|
|
212
|
+
FunEntryICFGNode* sNode = new FunEntryICFGNode(totalICFGNode++,fun);
|
|
213
213
|
addICFGNode(sNode);
|
|
214
214
|
FunToFunEntryNodeMap[fun] = sNode;
|
|
215
215
|
return sNode;
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
/// Get/Add a function exit node
|
|
219
|
-
inline
|
|
219
|
+
inline FunExitICFGNode* getFunExitICFGNode(const SVFFunction* fun)
|
|
220
220
|
{
|
|
221
221
|
FunToFunExitNodeMapTy::const_iterator it = FunToFunExitNodeMap.find(fun);
|
|
222
222
|
if (it == FunToFunExitNodeMap.end())
|
|
223
223
|
return nullptr;
|
|
224
224
|
return it->second;
|
|
225
225
|
}
|
|
226
|
-
inline
|
|
226
|
+
inline FunExitICFGNode* addFunExitICFGNode(const SVFFunction* fun)
|
|
227
227
|
{
|
|
228
|
-
|
|
228
|
+
FunExitICFGNode* sNode = new FunExitICFGNode(totalICFGNode++, fun);
|
|
229
229
|
addICFGNode(sNode);
|
|
230
230
|
FunToFunExitNodeMap[fun] = sNode;
|
|
231
231
|
return sNode;
|
|
232
232
|
}
|
|
233
233
|
|
|
234
234
|
/// Get/Add a call node
|
|
235
|
-
inline
|
|
235
|
+
inline CallICFGNode* addCallICFGNode(const Instruction* cs)
|
|
236
236
|
{
|
|
237
|
-
|
|
237
|
+
CallICFGNode* sNode = new CallICFGNode(totalICFGNode++, cs);
|
|
238
238
|
addICFGNode(sNode);
|
|
239
239
|
CSToCallNodeMap[cs] = sNode;
|
|
240
240
|
return sNode;
|
|
241
241
|
}
|
|
242
|
-
inline
|
|
242
|
+
inline CallICFGNode* getCallICFGNode(const Instruction* cs)
|
|
243
243
|
{
|
|
244
244
|
CSToCallNodeMapTy::const_iterator it = CSToCallNodeMap.find(cs);
|
|
245
245
|
if (it == CSToCallNodeMap.end())
|
|
@@ -248,17 +248,17 @@ private:
|
|
|
248
248
|
}
|
|
249
249
|
|
|
250
250
|
/// Get/Add a return node
|
|
251
|
-
inline
|
|
251
|
+
inline RetICFGNode* getRetICFGNode(const Instruction* cs)
|
|
252
252
|
{
|
|
253
253
|
CSToRetNodeMapTy::const_iterator it = CSToRetNodeMap.find(cs);
|
|
254
254
|
if (it == CSToRetNodeMap.end())
|
|
255
255
|
return nullptr;
|
|
256
256
|
return it->second;
|
|
257
257
|
}
|
|
258
|
-
inline
|
|
258
|
+
inline RetICFGNode* addRetICFGNode(const Instruction* cs)
|
|
259
259
|
{
|
|
260
|
-
|
|
261
|
-
|
|
260
|
+
CallICFGNode* callBlockNode = getCallBlockNode(cs);
|
|
261
|
+
RetICFGNode* sNode = new RetICFGNode(totalICFGNode++, cs, callBlockNode);
|
|
262
262
|
callBlockNode->setRetBlockNode(sNode);
|
|
263
263
|
addICFGNode(sNode);
|
|
264
264
|
CSToRetNodeMap[cs] = sNode;
|
|
@@ -38,7 +38,7 @@ namespace SVF
|
|
|
38
38
|
{
|
|
39
39
|
|
|
40
40
|
class ICFGNode;
|
|
41
|
-
class
|
|
41
|
+
class RetICFGNode;
|
|
42
42
|
class CallPE;
|
|
43
43
|
class RetPE;
|
|
44
44
|
class SVFStmt;
|
|
@@ -139,18 +139,18 @@ protected:
|
|
|
139
139
|
/*!
|
|
140
140
|
* Unique ICFG node stands for all global initializations
|
|
141
141
|
*/
|
|
142
|
-
class
|
|
142
|
+
class GlobalICFGNode : public ICFGNode
|
|
143
143
|
{
|
|
144
144
|
|
|
145
145
|
public:
|
|
146
|
-
|
|
146
|
+
GlobalICFGNode(NodeID id) : ICFGNode(id, GlobalBlock)
|
|
147
147
|
{
|
|
148
148
|
bb = nullptr;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
152
152
|
//@{
|
|
153
|
-
static inline bool classof(const
|
|
153
|
+
static inline bool classof(const GlobalICFGNode *)
|
|
154
154
|
{
|
|
155
155
|
return true;
|
|
156
156
|
}
|
|
@@ -172,13 +172,13 @@ public:
|
|
|
172
172
|
/*!
|
|
173
173
|
* ICFG node stands for a program statement
|
|
174
174
|
*/
|
|
175
|
-
class
|
|
175
|
+
class IntraICFGNode : public ICFGNode
|
|
176
176
|
{
|
|
177
177
|
private:
|
|
178
178
|
const Instruction *inst;
|
|
179
179
|
|
|
180
180
|
public:
|
|
181
|
-
|
|
181
|
+
IntraICFGNode(NodeID id, const Instruction *i) : ICFGNode(id, IntraBlock), inst(i)
|
|
182
182
|
{
|
|
183
183
|
fun = LLVMModuleSet::getLLVMModuleSet()->getSVFFunction(inst->getFunction());
|
|
184
184
|
bb = inst->getParent();
|
|
@@ -191,7 +191,7 @@ public:
|
|
|
191
191
|
|
|
192
192
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
193
193
|
//@{
|
|
194
|
-
static inline bool classof(const
|
|
194
|
+
static inline bool classof(const IntraICFGNode *)
|
|
195
195
|
{
|
|
196
196
|
return true;
|
|
197
197
|
}
|
|
@@ -210,18 +210,18 @@ public:
|
|
|
210
210
|
const std::string toString() const;
|
|
211
211
|
};
|
|
212
212
|
|
|
213
|
-
class
|
|
213
|
+
class InterICFGNode : public ICFGNode
|
|
214
214
|
{
|
|
215
215
|
|
|
216
216
|
public:
|
|
217
217
|
/// Constructor
|
|
218
|
-
|
|
218
|
+
InterICFGNode(NodeID id, ICFGNodeK k) : ICFGNode(id, k)
|
|
219
219
|
{
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
223
223
|
//@{
|
|
224
|
-
static inline bool classof(const
|
|
224
|
+
static inline bool classof(const InterICFGNode *)
|
|
225
225
|
{
|
|
226
226
|
return true;
|
|
227
227
|
}
|
|
@@ -248,7 +248,7 @@ public:
|
|
|
248
248
|
/*!
|
|
249
249
|
* Function entry ICFGNode containing a set of FormalParmVFGNodes of a function
|
|
250
250
|
*/
|
|
251
|
-
class
|
|
251
|
+
class FunEntryICFGNode : public InterICFGNode
|
|
252
252
|
{
|
|
253
253
|
|
|
254
254
|
public:
|
|
@@ -256,7 +256,7 @@ public:
|
|
|
256
256
|
private:
|
|
257
257
|
FormalParmNodeVec FPNodes;
|
|
258
258
|
public:
|
|
259
|
-
|
|
259
|
+
FunEntryICFGNode(NodeID id, const SVFFunction* f);
|
|
260
260
|
|
|
261
261
|
/// Return function
|
|
262
262
|
inline const SVFFunction* getFun() const
|
|
@@ -278,12 +278,12 @@ public:
|
|
|
278
278
|
|
|
279
279
|
///Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
280
280
|
//@{
|
|
281
|
-
static inline bool classof(const
|
|
281
|
+
static inline bool classof(const FunEntryICFGNode *)
|
|
282
282
|
{
|
|
283
283
|
return true;
|
|
284
284
|
}
|
|
285
285
|
|
|
286
|
-
static inline bool classof(const
|
|
286
|
+
static inline bool classof(const InterICFGNode *node)
|
|
287
287
|
{
|
|
288
288
|
return node->getNodeKind() == FunEntryBlock;
|
|
289
289
|
}
|
|
@@ -305,14 +305,14 @@ public:
|
|
|
305
305
|
/*!
|
|
306
306
|
* Function exit ICFGNode containing (at most one) FormalRetVFGNodes of a function
|
|
307
307
|
*/
|
|
308
|
-
class
|
|
308
|
+
class FunExitICFGNode : public InterICFGNode
|
|
309
309
|
{
|
|
310
310
|
|
|
311
311
|
private:
|
|
312
312
|
const SVFFunction* fun;
|
|
313
313
|
const SVFVar *formalRet;
|
|
314
314
|
public:
|
|
315
|
-
|
|
315
|
+
FunExitICFGNode(NodeID id, const SVFFunction* f);
|
|
316
316
|
|
|
317
317
|
/// Return function
|
|
318
318
|
inline const SVFFunction* getFun() const
|
|
@@ -334,7 +334,7 @@ public:
|
|
|
334
334
|
|
|
335
335
|
///Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
336
336
|
//@{
|
|
337
|
-
static inline bool classof(const
|
|
337
|
+
static inline bool classof(const FunEntryICFGNode *)
|
|
338
338
|
{
|
|
339
339
|
return true;
|
|
340
340
|
}
|
|
@@ -344,7 +344,7 @@ public:
|
|
|
344
344
|
return node->getNodeKind() == FunExitBlock;
|
|
345
345
|
}
|
|
346
346
|
|
|
347
|
-
static inline bool classof(const
|
|
347
|
+
static inline bool classof(const InterICFGNode *node)
|
|
348
348
|
{
|
|
349
349
|
return node->getNodeKind() == FunExitBlock;
|
|
350
350
|
}
|
|
@@ -361,17 +361,17 @@ public:
|
|
|
361
361
|
/*!
|
|
362
362
|
* Call ICFGNode containing a set of ActualParmVFGNodes at a callsite
|
|
363
363
|
*/
|
|
364
|
-
class
|
|
364
|
+
class CallICFGNode : public InterICFGNode
|
|
365
365
|
{
|
|
366
366
|
|
|
367
367
|
public:
|
|
368
368
|
typedef std::vector<const SVFVar *> ActualParmNodeVec;
|
|
369
369
|
private:
|
|
370
370
|
const Instruction* cs;
|
|
371
|
-
const
|
|
371
|
+
const RetICFGNode* ret;
|
|
372
372
|
ActualParmNodeVec APNodes;
|
|
373
373
|
public:
|
|
374
|
-
|
|
374
|
+
CallICFGNode(NodeID id, const Instruction* c) : InterICFGNode(id, FunCallBlock), cs(c), ret(nullptr)
|
|
375
375
|
{
|
|
376
376
|
fun = LLVMModuleSet::getLLVMModuleSet()->getSVFFunction(cs->getFunction());
|
|
377
377
|
bb = cs->getParent();
|
|
@@ -384,14 +384,14 @@ public:
|
|
|
384
384
|
}
|
|
385
385
|
|
|
386
386
|
/// Return callsite
|
|
387
|
-
inline const
|
|
387
|
+
inline const RetICFGNode* getRetBlockNode() const
|
|
388
388
|
{
|
|
389
|
-
assert(ret && "
|
|
389
|
+
assert(ret && "RetICFGNode not set?");
|
|
390
390
|
return ret;
|
|
391
391
|
}
|
|
392
392
|
|
|
393
393
|
/// Return callsite
|
|
394
|
-
inline void setRetBlockNode(const
|
|
394
|
+
inline void setRetBlockNode(const RetICFGNode* r)
|
|
395
395
|
{
|
|
396
396
|
ret = r;
|
|
397
397
|
}
|
|
@@ -428,7 +428,7 @@ public:
|
|
|
428
428
|
|
|
429
429
|
///Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
430
430
|
//@{
|
|
431
|
-
static inline bool classof(const
|
|
431
|
+
static inline bool classof(const CallICFGNode *)
|
|
432
432
|
{
|
|
433
433
|
return true;
|
|
434
434
|
}
|
|
@@ -438,7 +438,7 @@ public:
|
|
|
438
438
|
return node->getNodeKind() == FunCallBlock;
|
|
439
439
|
}
|
|
440
440
|
|
|
441
|
-
static inline bool classof(const
|
|
441
|
+
static inline bool classof(const InterICFGNode *node)
|
|
442
442
|
{
|
|
443
443
|
return node->getNodeKind() == FunCallBlock;
|
|
444
444
|
}
|
|
@@ -456,16 +456,16 @@ public:
|
|
|
456
456
|
/*!
|
|
457
457
|
* Return ICFGNode containing (at most one) ActualRetVFGNode at a callsite
|
|
458
458
|
*/
|
|
459
|
-
class
|
|
459
|
+
class RetICFGNode : public InterICFGNode
|
|
460
460
|
{
|
|
461
461
|
|
|
462
462
|
private:
|
|
463
463
|
const Instruction* cs;
|
|
464
464
|
const SVFVar *actualRet;
|
|
465
|
-
const
|
|
465
|
+
const CallICFGNode* callBlockNode;
|
|
466
466
|
public:
|
|
467
|
-
|
|
468
|
-
|
|
467
|
+
RetICFGNode(NodeID id, const Instruction* c, CallICFGNode* cb) :
|
|
468
|
+
InterICFGNode(id, FunRetBlock), cs(c), actualRet(nullptr), callBlockNode(cb)
|
|
469
469
|
{
|
|
470
470
|
fun = LLVMModuleSet::getLLVMModuleSet()->getSVFFunction(cs->getFunction());
|
|
471
471
|
bb = cs->getParent();
|
|
@@ -477,7 +477,7 @@ public:
|
|
|
477
477
|
return cs;
|
|
478
478
|
}
|
|
479
479
|
|
|
480
|
-
inline const
|
|
480
|
+
inline const CallICFGNode* getCallBlockNode() const
|
|
481
481
|
{
|
|
482
482
|
return callBlockNode;
|
|
483
483
|
}
|
|
@@ -495,12 +495,12 @@ public:
|
|
|
495
495
|
|
|
496
496
|
///Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
497
497
|
//@{
|
|
498
|
-
static inline bool classof(const
|
|
498
|
+
static inline bool classof(const RetICFGNode *)
|
|
499
499
|
{
|
|
500
500
|
return true;
|
|
501
501
|
}
|
|
502
502
|
|
|
503
|
-
static inline bool classof(const
|
|
503
|
+
static inline bool classof(const InterICFGNode *node)
|
|
504
504
|
{
|
|
505
505
|
return node->getNodeKind() == FunRetBlock;
|
|
506
506
|
}
|
|
@@ -78,11 +78,11 @@ public:
|
|
|
78
78
|
countStat();
|
|
79
79
|
|
|
80
80
|
PTNumStatMap["ICFGNode"] = numOfNodes;
|
|
81
|
-
PTNumStatMap["
|
|
82
|
-
PTNumStatMap["
|
|
83
|
-
PTNumStatMap["
|
|
84
|
-
PTNumStatMap["
|
|
85
|
-
PTNumStatMap["
|
|
81
|
+
PTNumStatMap["IntraICFGNode"] = numOfIntraNodes;
|
|
82
|
+
PTNumStatMap["CallICFGNode"] = numOfCallNodes;
|
|
83
|
+
PTNumStatMap["RetICFGNode"] = numOfRetNodes;
|
|
84
|
+
PTNumStatMap["FunEntryICFGNode"] = numOfEntryNodes;
|
|
85
|
+
PTNumStatMap["FunExitICFGNode"] = numOfExitNodes;
|
|
86
86
|
|
|
87
87
|
PTNumStatMap["ICFGEdge"] = numOfEdges;
|
|
88
88
|
PTNumStatMap["CallCFGEdge"] = numOfCallEdges;
|
|
@@ -97,7 +97,7 @@ public:
|
|
|
97
97
|
|
|
98
98
|
countStat();
|
|
99
99
|
PTNumStatMap["ICFGNode(N)"] = numOfNodes;
|
|
100
|
-
PTNumStatMap["
|
|
100
|
+
PTNumStatMap["CallICFGNode(Call)"] = numOfCallNodes;
|
|
101
101
|
PTNumStatMap["ICFGEdge(E)"] = numOfEdges;
|
|
102
102
|
printStat("IFDS Stat");
|
|
103
103
|
}
|
|
@@ -112,15 +112,15 @@ public:
|
|
|
112
112
|
|
|
113
113
|
ICFGNode *node = it->second;
|
|
114
114
|
|
|
115
|
-
if (SVFUtil::isa<
|
|
115
|
+
if (SVFUtil::isa<IntraICFGNode>(node))
|
|
116
116
|
numOfIntraNodes++;
|
|
117
|
-
else if (SVFUtil::isa<
|
|
117
|
+
else if (SVFUtil::isa<CallICFGNode>(node))
|
|
118
118
|
numOfCallNodes++;
|
|
119
|
-
else if (SVFUtil::isa<
|
|
119
|
+
else if (SVFUtil::isa<RetICFGNode>(node))
|
|
120
120
|
numOfRetNodes++;
|
|
121
|
-
else if (SVFUtil::isa<
|
|
121
|
+
else if (SVFUtil::isa<FunEntryICFGNode>(node))
|
|
122
122
|
numOfEntryNodes++;
|
|
123
|
-
else if (SVFUtil::isa<
|
|
123
|
+
else if (SVFUtil::isa<FunExitICFGNode>(node))
|
|
124
124
|
numOfExitNodes++;
|
|
125
125
|
|
|
126
126
|
|
|
@@ -52,7 +52,7 @@ class PTACallGraphEdge : public GenericCallGraphEdgeTy
|
|
|
52
52
|
{
|
|
53
53
|
|
|
54
54
|
public:
|
|
55
|
-
typedef Set<const
|
|
55
|
+
typedef Set<const CallICFGNode*> CallInstSet;
|
|
56
56
|
enum CEDGEK
|
|
57
57
|
{
|
|
58
58
|
CallRetEdge,TDForkEdge,TDJoinEdge,HareParForEdge
|
|
@@ -112,9 +112,9 @@ public:
|
|
|
112
112
|
|
|
113
113
|
/// Add direct and indirect callsite
|
|
114
114
|
//@{
|
|
115
|
-
void addDirectCallSite(const
|
|
115
|
+
void addDirectCallSite(const CallICFGNode* call);
|
|
116
116
|
|
|
117
|
-
void addInDirectCallSite(const
|
|
117
|
+
void addInDirectCallSite(const CallICFGNode* call);
|
|
118
118
|
//@}
|
|
119
119
|
|
|
120
120
|
/// Iterators for direct and indirect callsites
|
|
@@ -221,12 +221,12 @@ class PTACallGraph : public GenericCallGraphTy
|
|
|
221
221
|
public:
|
|
222
222
|
typedef PTACallGraphEdge::CallGraphEdgeSet CallGraphEdgeSet;
|
|
223
223
|
typedef Map<const SVFFunction*, PTACallGraphNode *> FunToCallGraphNodeMap;
|
|
224
|
-
typedef Map<const
|
|
225
|
-
typedef std::pair<const
|
|
224
|
+
typedef Map<const CallICFGNode*, CallGraphEdgeSet> CallInstToCallGraphEdgesMap;
|
|
225
|
+
typedef std::pair<const CallICFGNode*, const SVFFunction*> CallSitePair;
|
|
226
226
|
typedef Map<CallSitePair, CallSiteID> CallSiteToIdMap;
|
|
227
227
|
typedef Map<CallSiteID, CallSitePair> IdToCallSiteMap;
|
|
228
228
|
typedef Set<const SVFFunction*> FunctionSet;
|
|
229
|
-
typedef OrderedMap<const
|
|
229
|
+
typedef OrderedMap<const CallICFGNode*, FunctionSet> CallEdgeMap;
|
|
230
230
|
typedef CallGraphEdgeSet::iterator CallGraphEdgeIter;
|
|
231
231
|
typedef CallGraphEdgeSet::const_iterator CallGraphEdgeConstIter;
|
|
232
232
|
|
|
@@ -281,11 +281,11 @@ public:
|
|
|
281
281
|
{
|
|
282
282
|
return indirectCallMap;
|
|
283
283
|
}
|
|
284
|
-
inline bool hasIndCSCallees(const
|
|
284
|
+
inline bool hasIndCSCallees(const CallICFGNode* cs) const
|
|
285
285
|
{
|
|
286
286
|
return (indirectCallMap.find(cs) != indirectCallMap.end());
|
|
287
287
|
}
|
|
288
|
-
inline const FunctionSet& getIndCSCallees(const
|
|
288
|
+
inline const FunctionSet& getIndCSCallees(const CallICFGNode* cs) const
|
|
289
289
|
{
|
|
290
290
|
CallEdgeMap::const_iterator it = indirectCallMap.find(cs);
|
|
291
291
|
assert(it!=indirectCallMap.end() && "not an indirect callsite!");
|
|
@@ -327,9 +327,9 @@ public:
|
|
|
327
327
|
|
|
328
328
|
/// Add/Get CallSiteID
|
|
329
329
|
//@{
|
|
330
|
-
inline CallSiteID addCallSite(const
|
|
330
|
+
inline CallSiteID addCallSite(const CallICFGNode* cs, const SVFFunction* callee)
|
|
331
331
|
{
|
|
332
|
-
std::pair<const
|
|
332
|
+
std::pair<const CallICFGNode*, const SVFFunction*> newCS(std::make_pair(cs, callee));
|
|
333
333
|
CallSiteToIdMap::const_iterator it = csToIdMap.find(newCS);
|
|
334
334
|
//assert(it == csToIdMap.end() && "cannot add a callsite twice");
|
|
335
335
|
if(it == csToIdMap.end())
|
|
@@ -341,14 +341,14 @@ public:
|
|
|
341
341
|
}
|
|
342
342
|
return it->second;
|
|
343
343
|
}
|
|
344
|
-
inline CallSiteID getCallSiteID(const
|
|
344
|
+
inline CallSiteID getCallSiteID(const CallICFGNode* cs, const SVFFunction* callee) const
|
|
345
345
|
{
|
|
346
346
|
CallSitePair newCS(std::make_pair(cs, callee));
|
|
347
347
|
CallSiteToIdMap::const_iterator it = csToIdMap.find(newCS);
|
|
348
348
|
assert(it != csToIdMap.end() && "callsite id not found! This maybe a partially resolved callgraph, please check the indCallEdge limit");
|
|
349
349
|
return it->second;
|
|
350
350
|
}
|
|
351
|
-
inline bool hasCallSiteID(const
|
|
351
|
+
inline bool hasCallSiteID(const CallICFGNode* cs, const SVFFunction* callee) const
|
|
352
352
|
{
|
|
353
353
|
CallSitePair newCS(std::make_pair(cs, callee));
|
|
354
354
|
CallSiteToIdMap::const_iterator it = csToIdMap.find(newCS);
|
|
@@ -360,7 +360,7 @@ public:
|
|
|
360
360
|
assert(it != idToCSMap.end() && "cannot find call site for this CallSiteID");
|
|
361
361
|
return (it->second);
|
|
362
362
|
}
|
|
363
|
-
inline const
|
|
363
|
+
inline const CallICFGNode* getCallSite(CallSiteID id) const
|
|
364
364
|
{
|
|
365
365
|
return getCallSitePair(id).first;
|
|
366
366
|
}
|
|
@@ -379,7 +379,7 @@ public:
|
|
|
379
379
|
PTACallGraphEdge* getGraphEdge(PTACallGraphNode* src, PTACallGraphNode* dst,PTACallGraphEdge::CEDGEK kind, CallSiteID csId);
|
|
380
380
|
|
|
381
381
|
/// Get all callees for a callsite
|
|
382
|
-
inline void getCallees(const
|
|
382
|
+
inline void getCallees(const CallICFGNode* cs, FunctionSet& callees)
|
|
383
383
|
{
|
|
384
384
|
if(hasCallGraphEdge(cs))
|
|
385
385
|
{
|
|
@@ -394,18 +394,18 @@ public:
|
|
|
394
394
|
/// Get call graph edge via call instruction
|
|
395
395
|
//@{
|
|
396
396
|
/// whether this call instruction has a valid call graph edge
|
|
397
|
-
inline bool hasCallGraphEdge(const
|
|
397
|
+
inline bool hasCallGraphEdge(const CallICFGNode* inst) const
|
|
398
398
|
{
|
|
399
399
|
return callinstToCallGraphEdgesMap.find(inst)!=callinstToCallGraphEdgesMap.end();
|
|
400
400
|
}
|
|
401
|
-
inline CallGraphEdgeSet::const_iterator getCallEdgeBegin(const
|
|
401
|
+
inline CallGraphEdgeSet::const_iterator getCallEdgeBegin(const CallICFGNode* inst) const
|
|
402
402
|
{
|
|
403
403
|
CallInstToCallGraphEdgesMap::const_iterator it = callinstToCallGraphEdgesMap.find(inst);
|
|
404
404
|
assert(it!=callinstToCallGraphEdgesMap.end()
|
|
405
405
|
&& "call instruction does not have a valid callee");
|
|
406
406
|
return it->second.begin();
|
|
407
407
|
}
|
|
408
|
-
inline CallGraphEdgeSet::const_iterator getCallEdgeEnd(const
|
|
408
|
+
inline CallGraphEdgeSet::const_iterator getCallEdgeEnd(const CallICFGNode* inst) const
|
|
409
409
|
{
|
|
410
410
|
CallInstToCallGraphEdgesMap::const_iterator it = callinstToCallGraphEdgesMap.find(inst);
|
|
411
411
|
assert(it!=callinstToCallGraphEdgesMap.end()
|
|
@@ -422,8 +422,8 @@ public:
|
|
|
422
422
|
|
|
423
423
|
/// Add direct/indirect call edges
|
|
424
424
|
//@{
|
|
425
|
-
void addDirectCallGraphEdge(const
|
|
426
|
-
void addIndirectCallGraphEdge(const
|
|
425
|
+
void addDirectCallGraphEdge(const CallICFGNode* call, const SVFFunction* callerFun, const SVFFunction* calleeFun);
|
|
426
|
+
void addIndirectCallGraphEdge(const CallICFGNode* cs,const SVFFunction* callerFun, const SVFFunction* calleeFun);
|
|
427
427
|
//@}
|
|
428
428
|
|
|
429
429
|
/// Get callsites invoking the callee
|