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/SVFG.h
CHANGED
|
@@ -79,8 +79,8 @@ public:
|
|
|
79
79
|
typedef NodeBS ActualOUTSVFGNodeSet;
|
|
80
80
|
typedef NodeBS FormalINSVFGNodeSet;
|
|
81
81
|
typedef NodeBS FormalOUTSVFGNodeSet;
|
|
82
|
-
typedef Map<const
|
|
83
|
-
typedef Map<const
|
|
82
|
+
typedef Map<const CallICFGNode*, ActualINSVFGNodeSet> CallSiteToActualINsMapTy;
|
|
83
|
+
typedef Map<const CallICFGNode*, ActualOUTSVFGNodeSet> CallSiteToActualOUTsMapTy;
|
|
84
84
|
typedef Map<const SVFFunction*, FormalINSVFGNodeSet> FunctionToFormalINsMapTy;
|
|
85
85
|
typedef Map<const SVFFunction*, FormalOUTSVFGNodeSet> FunctionToFormalOUTsMapTy;
|
|
86
86
|
typedef MemSSA::MUSet MUSet;
|
|
@@ -159,13 +159,13 @@ public:
|
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
/// Get all inter value flow edges of a indirect call site
|
|
162
|
-
void getInterVFEdgesForIndirectCallSite(const
|
|
162
|
+
void getInterVFEdgesForIndirectCallSite(const CallICFGNode* cs, const SVFFunction* callee, SVFGEdgeSetTy& edges);
|
|
163
163
|
|
|
164
164
|
/// Dump graph into dot file
|
|
165
165
|
void dump(const std::string& file, bool simple = false);
|
|
166
166
|
|
|
167
167
|
/// Connect SVFG nodes between caller and callee for indirect call site
|
|
168
|
-
virtual void connectCallerAndCallee(const
|
|
168
|
+
virtual void connectCallerAndCallee(const CallICFGNode* cs, const SVFFunction* callee, SVFGEdgeSetTy& edges);
|
|
169
169
|
|
|
170
170
|
/// Given a pagNode, return its definition site
|
|
171
171
|
inline const SVFGNode* getDefSVFGNode(const PAGNode* pagNode) const
|
|
@@ -183,12 +183,12 @@ public:
|
|
|
183
183
|
|
|
184
184
|
/// Has a SVFGNode
|
|
185
185
|
//@{
|
|
186
|
-
inline bool hasActualINSVFGNodes(const
|
|
186
|
+
inline bool hasActualINSVFGNodes(const CallICFGNode* cs) const
|
|
187
187
|
{
|
|
188
188
|
return callSiteToActualINMap.find(cs)!=callSiteToActualINMap.end();
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
-
inline bool hasActualOUTSVFGNodes(const
|
|
191
|
+
inline bool hasActualOUTSVFGNodes(const CallICFGNode* cs) const
|
|
192
192
|
{
|
|
193
193
|
return callSiteToActualOUTMap.find(cs)!=callSiteToActualOUTMap.end();
|
|
194
194
|
}
|
|
@@ -206,12 +206,12 @@ public:
|
|
|
206
206
|
|
|
207
207
|
/// Get SVFGNode set
|
|
208
208
|
//@{
|
|
209
|
-
inline ActualINSVFGNodeSet& getActualINSVFGNodes(const
|
|
209
|
+
inline ActualINSVFGNodeSet& getActualINSVFGNodes(const CallICFGNode* cs)
|
|
210
210
|
{
|
|
211
211
|
return callSiteToActualINMap[cs];
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
-
inline ActualOUTSVFGNodeSet& getActualOUTSVFGNodes(const
|
|
214
|
+
inline ActualOUTSVFGNodeSet& getActualOUTSVFGNodes(const CallICFGNode* cs)
|
|
215
215
|
{
|
|
216
216
|
return callSiteToActualOUTMap[cs];
|
|
217
217
|
}
|
|
@@ -231,7 +231,7 @@ public:
|
|
|
231
231
|
const SVFFunction* isFunEntrySVFGNode(const SVFGNode* node) const;
|
|
232
232
|
|
|
233
233
|
/// Whether a node is callsite return SVFGNode
|
|
234
|
-
const
|
|
234
|
+
const CallICFGNode* isCallSiteRetSVFGNode(const SVFGNode* node) const;
|
|
235
235
|
|
|
236
236
|
/// Remove a SVFG edge
|
|
237
237
|
inline void removeSVFGEdge(SVFGEdge* edge)
|
|
@@ -301,7 +301,7 @@ protected:
|
|
|
301
301
|
|
|
302
302
|
/// Get inter value flow edges between indirect call site and callee.
|
|
303
303
|
//@{
|
|
304
|
-
virtual inline void getInterVFEdgeAtIndCSFromAPToFP(const PAGNode* cs_arg, const PAGNode* fun_arg, const
|
|
304
|
+
virtual inline void getInterVFEdgeAtIndCSFromAPToFP(const PAGNode* cs_arg, const PAGNode* fun_arg, const CallICFGNode*, CallSiteID csId, SVFGEdgeSetTy& edges)
|
|
305
305
|
{
|
|
306
306
|
SVFGNode* actualParam = getSVFGNode(getDef(cs_arg));
|
|
307
307
|
SVFGNode* formalParam = getSVFGNode(getDef(fun_arg));
|
|
@@ -394,7 +394,7 @@ protected:
|
|
|
394
394
|
}
|
|
395
395
|
|
|
396
396
|
/// Add memory Function entry chi SVFG node
|
|
397
|
-
inline void addFormalINSVFGNode(const
|
|
397
|
+
inline void addFormalINSVFGNode(const FunEntryICFGNode* funEntry, const MRVer* resVer, const NodeID nodeId)
|
|
398
398
|
{
|
|
399
399
|
FormalINSVFGNode* sNode = new FormalINSVFGNode(nodeId, resVer, funEntry);
|
|
400
400
|
addSVFGNode(sNode, pag->getICFG()->getFunEntryBlockNode(funEntry->getFun()));
|
|
@@ -403,7 +403,7 @@ protected:
|
|
|
403
403
|
}
|
|
404
404
|
|
|
405
405
|
/// Add memory Function return mu SVFG node
|
|
406
|
-
inline void addFormalOUTSVFGNode(const
|
|
406
|
+
inline void addFormalOUTSVFGNode(const FunExitICFGNode* funExit, const MRVer* ver, const NodeID nodeId)
|
|
407
407
|
{
|
|
408
408
|
FormalOUTSVFGNode* sNode = new FormalOUTSVFGNode(nodeId, ver, funExit);
|
|
409
409
|
addSVFGNode(sNode,pag->getICFG()->getFunExitBlockNode(funExit->getFun()));
|
|
@@ -411,7 +411,7 @@ protected:
|
|
|
411
411
|
}
|
|
412
412
|
|
|
413
413
|
/// Add memory callsite mu SVFG node
|
|
414
|
-
inline void addActualINSVFGNode(const
|
|
414
|
+
inline void addActualINSVFGNode(const CallICFGNode* callsite, const MRVer* ver, const NodeID nodeId)
|
|
415
415
|
{
|
|
416
416
|
ActualINSVFGNode* sNode = new ActualINSVFGNode(nodeId, callsite, ver);
|
|
417
417
|
addSVFGNode(sNode,pag->getICFG()->getCallBlockNode(callsite->getCallSite()));
|
|
@@ -419,7 +419,7 @@ protected:
|
|
|
419
419
|
}
|
|
420
420
|
|
|
421
421
|
/// Add memory callsite chi SVFG node
|
|
422
|
-
inline void addActualOUTSVFGNode(const
|
|
422
|
+
inline void addActualOUTSVFGNode(const CallICFGNode* callsite, const MRVer* resVer, const NodeID nodeId)
|
|
423
423
|
{
|
|
424
424
|
ActualOUTSVFGNode* sNode = new ActualOUTSVFGNode(nodeId, callsite, resVer);
|
|
425
425
|
addSVFGNode(sNode, pag->getICFG()->getRetBlockNode(callsite->getCallSite()));
|
|
@@ -448,11 +448,11 @@ protected:
|
|
|
448
448
|
{
|
|
449
449
|
return (funToFormalOUTMap.find(func) != funToFormalOUTMap.end());
|
|
450
450
|
}
|
|
451
|
-
inline bool hasCallSiteChi(const
|
|
451
|
+
inline bool hasCallSiteChi(const CallICFGNode* cs) const
|
|
452
452
|
{
|
|
453
453
|
return (callSiteToActualOUTMap.find(cs) != callSiteToActualOUTMap.end());
|
|
454
454
|
}
|
|
455
|
-
inline bool hasCallSiteMu(const
|
|
455
|
+
inline bool hasCallSiteMu(const CallICFGNode* cs) const
|
|
456
456
|
{
|
|
457
457
|
return (callSiteToActualINMap.find(cs) != callSiteToActualINMap.end());
|
|
458
458
|
}
|
|
@@ -91,11 +91,11 @@ class FormalINSVFGNode : public MRSVFGNode
|
|
|
91
91
|
{
|
|
92
92
|
private:
|
|
93
93
|
const MRVer* ver;
|
|
94
|
-
const
|
|
94
|
+
const FunEntryICFGNode* funEntryNode;
|
|
95
95
|
|
|
96
96
|
public:
|
|
97
97
|
/// Constructor
|
|
98
|
-
FormalINSVFGNode(NodeID id, const MRVer* resVer, const
|
|
98
|
+
FormalINSVFGNode(NodeID id, const MRVer* resVer, const FunEntryICFGNode* funEntry): MRSVFGNode(id, FPIN)
|
|
99
99
|
{
|
|
100
100
|
cpts = resVer->getMR()->getPointsTo();
|
|
101
101
|
ver = resVer;
|
|
@@ -105,7 +105,7 @@ public:
|
|
|
105
105
|
{
|
|
106
106
|
return ver;
|
|
107
107
|
}
|
|
108
|
-
inline const
|
|
108
|
+
inline const FunEntryICFGNode* getFunEntryNode() const
|
|
109
109
|
{
|
|
110
110
|
return funEntryNode;
|
|
111
111
|
}
|
|
@@ -136,13 +136,13 @@ class FormalOUTSVFGNode : public MRSVFGNode
|
|
|
136
136
|
{
|
|
137
137
|
private:
|
|
138
138
|
const MRVer* ver;
|
|
139
|
-
const
|
|
139
|
+
const FunExitICFGNode* funExitNode;
|
|
140
140
|
|
|
141
141
|
public:
|
|
142
142
|
/// Constructor
|
|
143
|
-
FormalOUTSVFGNode(NodeID id, const MRVer* ver, const
|
|
143
|
+
FormalOUTSVFGNode(NodeID id, const MRVer* ver, const FunExitICFGNode* funExitNode);
|
|
144
144
|
|
|
145
|
-
inline const
|
|
145
|
+
inline const FunExitICFGNode* getFunExitNode() const
|
|
146
146
|
{
|
|
147
147
|
return funExitNode;
|
|
148
148
|
}
|
|
@@ -177,18 +177,18 @@ public:
|
|
|
177
177
|
class ActualINSVFGNode : public MRSVFGNode
|
|
178
178
|
{
|
|
179
179
|
private:
|
|
180
|
-
const
|
|
180
|
+
const CallICFGNode* cs;
|
|
181
181
|
const MRVer* ver;
|
|
182
182
|
public:
|
|
183
183
|
/// Constructor
|
|
184
|
-
ActualINSVFGNode(NodeID id, const
|
|
184
|
+
ActualINSVFGNode(NodeID id, const CallICFGNode* c, const MRVer* mrver):
|
|
185
185
|
MRSVFGNode(id, APIN), cs(c)
|
|
186
186
|
{
|
|
187
187
|
cpts = mrver->getMR()->getPointsTo();
|
|
188
188
|
ver = mrver;
|
|
189
189
|
}
|
|
190
190
|
/// Callsite
|
|
191
|
-
inline const
|
|
191
|
+
inline const CallICFGNode* getCallSite() const
|
|
192
192
|
{
|
|
193
193
|
return cs;
|
|
194
194
|
}
|
|
@@ -226,19 +226,19 @@ public:
|
|
|
226
226
|
class ActualOUTSVFGNode : public MRSVFGNode
|
|
227
227
|
{
|
|
228
228
|
private:
|
|
229
|
-
const
|
|
229
|
+
const CallICFGNode* cs;
|
|
230
230
|
const MRVer* ver;
|
|
231
231
|
|
|
232
232
|
public:
|
|
233
233
|
/// Constructor
|
|
234
|
-
ActualOUTSVFGNode(NodeID id, const
|
|
234
|
+
ActualOUTSVFGNode(NodeID id, const CallICFGNode* cal, const MRVer* resVer):
|
|
235
235
|
MRSVFGNode(id, APOUT), cs(cal)
|
|
236
236
|
{
|
|
237
237
|
cpts = resVer->getMR()->getPointsTo();
|
|
238
238
|
ver = resVer;
|
|
239
239
|
}
|
|
240
240
|
/// Callsite
|
|
241
|
-
inline const
|
|
241
|
+
inline const CallICFGNode* getCallSite() const
|
|
242
242
|
{
|
|
243
243
|
return cs;
|
|
244
244
|
}
|
|
@@ -425,7 +425,7 @@ public:
|
|
|
425
425
|
return fun;
|
|
426
426
|
}
|
|
427
427
|
|
|
428
|
-
inline const
|
|
428
|
+
inline const CallICFGNode* getCallSite() const
|
|
429
429
|
{
|
|
430
430
|
assert(isActualOUTPHI() && "expect a actual return phi");
|
|
431
431
|
return callInst;
|
|
@@ -459,7 +459,7 @@ public:
|
|
|
459
459
|
|
|
460
460
|
private:
|
|
461
461
|
const SVFFunction* fun;
|
|
462
|
-
const
|
|
462
|
+
const CallICFGNode* callInst;
|
|
463
463
|
};
|
|
464
464
|
|
|
465
465
|
/*
|
package/include/Graphs/SVFGOPT.h
CHANGED
|
@@ -86,7 +86,7 @@ protected:
|
|
|
86
86
|
|
|
87
87
|
/// Connect SVFG nodes between caller and callee for indirect call sites
|
|
88
88
|
//@{
|
|
89
|
-
virtual inline void connectAParamAndFParam(const PAGNode* cs_arg, const PAGNode* fun_arg, const
|
|
89
|
+
virtual inline void connectAParamAndFParam(const PAGNode* cs_arg, const PAGNode* fun_arg, const CallICFGNode*, CallSiteID csId, SVFGEdgeSetTy& edges)
|
|
90
90
|
{
|
|
91
91
|
NodeID phiId = getDef(fun_arg);
|
|
92
92
|
SVFGEdge* edge = addCallEdge(getDef(cs_arg), phiId, csId);
|
|
@@ -159,17 +159,17 @@ class ThreadCallGraph: public PTACallGraph
|
|
|
159
159
|
{
|
|
160
160
|
|
|
161
161
|
public:
|
|
162
|
-
typedef Set<const
|
|
162
|
+
typedef Set<const CallICFGNode*> InstSet;
|
|
163
163
|
typedef InstSet CallSiteSet;
|
|
164
164
|
typedef std::vector<const Instruction*> InstVector;
|
|
165
165
|
typedef Map<const Instruction*, InstSet> CallToInstMap;
|
|
166
166
|
typedef Set<CallSiteSet*> CtxSet;
|
|
167
167
|
typedef ThreadForkEdge::ForkEdgeSet ForkEdgeSet;
|
|
168
|
-
typedef Map<const
|
|
168
|
+
typedef Map<const CallICFGNode*, ForkEdgeSet> CallInstToForkEdgesMap;
|
|
169
169
|
typedef ThreadJoinEdge::JoinEdgeSet JoinEdgeSet;
|
|
170
|
-
typedef Map<const
|
|
170
|
+
typedef Map<const CallICFGNode*, JoinEdgeSet> CallInstToJoinEdgesMap;
|
|
171
171
|
typedef HareParForEdge::ParForEdgeSet ParForEdgeSet;
|
|
172
|
-
typedef Map<const
|
|
172
|
+
typedef Map<const CallICFGNode*, ParForEdgeSet> CallInstToParForEdgesMap;
|
|
173
173
|
|
|
174
174
|
/// Constructor
|
|
175
175
|
ThreadCallGraph();
|
|
@@ -199,17 +199,17 @@ public:
|
|
|
199
199
|
/// Get call graph edge via call instruction
|
|
200
200
|
//@{
|
|
201
201
|
/// whether this call instruction has a valid call graph edge
|
|
202
|
-
inline bool hasThreadForkEdge(const
|
|
202
|
+
inline bool hasThreadForkEdge(const CallICFGNode* cs) const
|
|
203
203
|
{
|
|
204
204
|
return callinstToThreadForkEdgesMap.find(cs) != callinstToThreadForkEdgesMap.end();
|
|
205
205
|
}
|
|
206
|
-
inline ForkEdgeSet::const_iterator getForkEdgeBegin(const
|
|
206
|
+
inline ForkEdgeSet::const_iterator getForkEdgeBegin(const CallICFGNode* cs) const
|
|
207
207
|
{
|
|
208
208
|
CallInstToForkEdgesMap::const_iterator it = callinstToThreadForkEdgesMap.find(cs);
|
|
209
209
|
assert(it != callinstToThreadForkEdgesMap.end() && "call instruction not found");
|
|
210
210
|
return it->second.begin();
|
|
211
211
|
}
|
|
212
|
-
inline ForkEdgeSet::const_iterator getForkEdgeEnd(const
|
|
212
|
+
inline ForkEdgeSet::const_iterator getForkEdgeEnd(const CallICFGNode* cs) const
|
|
213
213
|
{
|
|
214
214
|
CallInstToForkEdgesMap::const_iterator it = callinstToThreadForkEdgesMap.find(cs);
|
|
215
215
|
assert(it != callinstToThreadForkEdgesMap.end() && "call instruction not found");
|
|
@@ -219,17 +219,17 @@ public:
|
|
|
219
219
|
/// Get call graph edge via call instruction
|
|
220
220
|
//@{
|
|
221
221
|
/// whether this call instruction has a valid call graph edge
|
|
222
|
-
inline bool hasThreadJoinEdge(const
|
|
222
|
+
inline bool hasThreadJoinEdge(const CallICFGNode* cs) const
|
|
223
223
|
{
|
|
224
224
|
return callinstToThreadJoinEdgesMap.find(cs) != callinstToThreadJoinEdgesMap.end();
|
|
225
225
|
}
|
|
226
|
-
inline JoinEdgeSet::const_iterator getJoinEdgeBegin(const
|
|
226
|
+
inline JoinEdgeSet::const_iterator getJoinEdgeBegin(const CallICFGNode* cs) const
|
|
227
227
|
{
|
|
228
228
|
CallInstToJoinEdgesMap::const_iterator it = callinstToThreadJoinEdgesMap.find(cs);
|
|
229
229
|
assert(it != callinstToThreadJoinEdgesMap.end() && "call instruction does not have a valid callee");
|
|
230
230
|
return it->second.begin();
|
|
231
231
|
}
|
|
232
|
-
inline JoinEdgeSet::const_iterator getJoinEdgeEnd(const
|
|
232
|
+
inline JoinEdgeSet::const_iterator getJoinEdgeEnd(const CallICFGNode* cs) const
|
|
233
233
|
{
|
|
234
234
|
CallInstToJoinEdgesMap::const_iterator it = callinstToThreadJoinEdgesMap.find(cs);
|
|
235
235
|
assert(it != callinstToThreadJoinEdgesMap.end() && "call instruction does not have a valid callee");
|
|
@@ -252,15 +252,15 @@ public:
|
|
|
252
252
|
|
|
253
253
|
/// Whether a callsite is a fork or join or hare_parallel_for
|
|
254
254
|
///@{
|
|
255
|
-
inline bool isForksite(const
|
|
255
|
+
inline bool isForksite(const CallICFGNode* csInst)
|
|
256
256
|
{
|
|
257
257
|
return forksites.find(csInst) != forksites.end();
|
|
258
258
|
}
|
|
259
|
-
inline bool isJoinsite(const
|
|
259
|
+
inline bool isJoinsite(const CallICFGNode* csInst)
|
|
260
260
|
{
|
|
261
261
|
return joinsites.find(csInst) != joinsites.end();
|
|
262
262
|
}
|
|
263
|
-
inline bool isParForSite(const
|
|
263
|
+
inline bool isParForSite(const CallICFGNode* csInst)
|
|
264
264
|
{
|
|
265
265
|
return parForSites.find(csInst) != parForSites.end();
|
|
266
266
|
}
|
|
@@ -326,17 +326,17 @@ public:
|
|
|
326
326
|
|
|
327
327
|
/// Add fork sites which directly or indirectly create a thread
|
|
328
328
|
//@{
|
|
329
|
-
inline bool addForksite(const
|
|
329
|
+
inline bool addForksite(const CallICFGNode* cs)
|
|
330
330
|
{
|
|
331
331
|
callinstToThreadForkEdgesMap[cs];
|
|
332
332
|
return forksites.insert(cs).second;
|
|
333
333
|
}
|
|
334
|
-
inline bool addJoinsite(const
|
|
334
|
+
inline bool addJoinsite(const CallICFGNode* cs)
|
|
335
335
|
{
|
|
336
336
|
callinstToThreadJoinEdgesMap[cs];
|
|
337
337
|
return joinsites.insert(cs).second;
|
|
338
338
|
}
|
|
339
|
-
inline bool addParForSite(const
|
|
339
|
+
inline bool addParForSite(const CallICFGNode* cs)
|
|
340
340
|
{
|
|
341
341
|
callinstToHareParForEdgesMap[cs];
|
|
342
342
|
return parForSites.insert(cs).second;
|
|
@@ -345,24 +345,24 @@ public:
|
|
|
345
345
|
|
|
346
346
|
/// Add direct/indirect thread fork edges
|
|
347
347
|
//@{
|
|
348
|
-
void addDirectForkEdge(const
|
|
349
|
-
void addIndirectForkEdge(const
|
|
348
|
+
void addDirectForkEdge(const CallICFGNode* cs);
|
|
349
|
+
void addIndirectForkEdge(const CallICFGNode* cs, const SVFFunction* callee);
|
|
350
350
|
//@}
|
|
351
351
|
|
|
352
352
|
/// Add thread join edges
|
|
353
353
|
//@{
|
|
354
|
-
void addDirectJoinEdge(const
|
|
354
|
+
void addDirectJoinEdge(const CallICFGNode* cs,const CallSiteSet& forksite);
|
|
355
355
|
//@}
|
|
356
356
|
|
|
357
357
|
/// Add direct/indirect parallel for edges
|
|
358
358
|
//@{
|
|
359
|
-
void addDirectParForEdge(const
|
|
360
|
-
void addIndirectParForEdge(const
|
|
359
|
+
void addDirectParForEdge(const CallICFGNode* cs);
|
|
360
|
+
void addIndirectParForEdge(const CallICFGNode* cs, const SVFFunction* callee);
|
|
361
361
|
//@}
|
|
362
362
|
|
|
363
363
|
|
|
364
364
|
/// map call instruction to its CallGraphEdge map
|
|
365
|
-
inline void addThreadForkEdgeSetMap(const
|
|
365
|
+
inline void addThreadForkEdgeSetMap(const CallICFGNode* cs, ThreadForkEdge* edge)
|
|
366
366
|
{
|
|
367
367
|
if(edge!=nullptr)
|
|
368
368
|
{
|
|
@@ -372,7 +372,7 @@ public:
|
|
|
372
372
|
}
|
|
373
373
|
|
|
374
374
|
/// map call instruction to its CallGraphEdge map
|
|
375
|
-
inline void addThreadJoinEdgeSetMap(const
|
|
375
|
+
inline void addThreadJoinEdgeSetMap(const CallICFGNode* cs, ThreadJoinEdge* edge)
|
|
376
376
|
{
|
|
377
377
|
if(edge!=nullptr)
|
|
378
378
|
{
|
|
@@ -382,7 +382,7 @@ public:
|
|
|
382
382
|
}
|
|
383
383
|
|
|
384
384
|
/// map call instruction to its CallGraphEdge map
|
|
385
|
-
inline void addHareParForEdgeSetMap(const
|
|
385
|
+
inline void addHareParForEdgeSetMap(const CallICFGNode* cs, HareParForEdge* edge)
|
|
386
386
|
{
|
|
387
387
|
if(edge!=nullptr)
|
|
388
388
|
{
|
|
@@ -392,7 +392,7 @@ public:
|
|
|
392
392
|
}
|
|
393
393
|
|
|
394
394
|
/// has thread join edge
|
|
395
|
-
inline ThreadJoinEdge* hasThreadJoinEdge(const
|
|
395
|
+
inline ThreadJoinEdge* hasThreadJoinEdge(const CallICFGNode* call, PTACallGraphNode* joinFunNode, PTACallGraphNode* threadRoutineFunNode, CallSiteID csId) const
|
|
396
396
|
{
|
|
397
397
|
ThreadJoinEdge joinEdge(joinFunNode,threadRoutineFunNode, csId);
|
|
398
398
|
CallInstToJoinEdgesMap::const_iterator it = callinstToThreadJoinEdgesMap.find(call);
|
package/include/Graphs/VFG.h
CHANGED
|
@@ -41,7 +41,7 @@ namespace SVF
|
|
|
41
41
|
|
|
42
42
|
class PointerAnalysis;
|
|
43
43
|
class VFGStat;
|
|
44
|
-
class
|
|
44
|
+
class CallICFGNode;
|
|
45
45
|
|
|
46
46
|
/*!
|
|
47
47
|
* Interprocedural Control-Flow Graph (VFG)
|
|
@@ -60,7 +60,7 @@ public:
|
|
|
60
60
|
typedef Map<NodeID, VFGNode *> VFGNodeIDToNodeMapTy;
|
|
61
61
|
typedef Set<VFGNode*> VFGNodeSet;
|
|
62
62
|
typedef Map<const PAGNode*, NodeID> PAGNodeToDefMapTy;
|
|
63
|
-
typedef Map<std::pair<NodeID,const
|
|
63
|
+
typedef Map<std::pair<NodeID,const CallICFGNode*>, ActualParmVFGNode *> PAGNodeToActualParmMapTy;
|
|
64
64
|
typedef Map<const PAGNode*, ActualRetVFGNode *> PAGNodeToActualRetMapTy;
|
|
65
65
|
typedef Map<const PAGNode*, FormalParmVFGNode *> PAGNodeToFormalParmMapTy;
|
|
66
66
|
typedef Map<const PAGNode*, FormalRetVFGNode *> PAGNodeToFormalRetMapTy;
|
|
@@ -171,15 +171,15 @@ public:
|
|
|
171
171
|
void updateCallGraph(PointerAnalysis* pta);
|
|
172
172
|
|
|
173
173
|
/// Connect VFG nodes between caller and callee for indirect call site
|
|
174
|
-
virtual void connectCallerAndCallee(const
|
|
174
|
+
virtual void connectCallerAndCallee(const CallICFGNode* cs, const SVFFunction* callee, VFGEdgeSetTy& edges);
|
|
175
175
|
|
|
176
176
|
/// Get callsite given a callsiteID
|
|
177
177
|
//@{
|
|
178
|
-
inline CallSiteID getCallSiteID(const
|
|
178
|
+
inline CallSiteID getCallSiteID(const CallICFGNode* cs, const SVFFunction* func) const
|
|
179
179
|
{
|
|
180
180
|
return callgraph->getCallSiteID(cs, func);
|
|
181
181
|
}
|
|
182
|
-
inline const
|
|
182
|
+
inline const CallICFGNode* getCallSite(CallSiteID id) const
|
|
183
183
|
{
|
|
184
184
|
return callgraph->getCallSite(id);
|
|
185
185
|
}
|
|
@@ -232,7 +232,7 @@ public:
|
|
|
232
232
|
assert(it != PAGNodeToCmpVFGNodeMap.end() && "CmpVFGNode can not be found??");
|
|
233
233
|
return it->second;
|
|
234
234
|
}
|
|
235
|
-
inline ActualParmVFGNode* getActualParmVFGNode(const PAGNode* aparm,const
|
|
235
|
+
inline ActualParmVFGNode* getActualParmVFGNode(const PAGNode* aparm,const CallICFGNode* cs) const
|
|
236
236
|
{
|
|
237
237
|
PAGNodeToActualParmMapTy::const_iterator it = PAGNodeToActualParmMap.find(std::make_pair(aparm->getId(),cs));
|
|
238
238
|
assert(it!=PAGNodeToActualParmMap.end() && "actual parameter VFG node can not be found??");
|
|
@@ -377,7 +377,7 @@ protected:
|
|
|
377
377
|
/// Connect VFG nodes between caller and callee for indirect call site
|
|
378
378
|
//@{
|
|
379
379
|
/// Connect actual-param and formal param
|
|
380
|
-
virtual inline void connectAParamAndFParam(const PAGNode* csArg, const PAGNode* funArg, const
|
|
380
|
+
virtual inline void connectAParamAndFParam(const PAGNode* csArg, const PAGNode* funArg, const CallICFGNode* cbn, CallSiteID csId, VFGEdgeSetTy& edges)
|
|
381
381
|
{
|
|
382
382
|
NodeID actualParam = getActualParmVFGNode(csArg, cbn)->getId();
|
|
383
383
|
NodeID formalParam = getFormalParmVFGNode(funArg)->getId();
|
|
@@ -447,7 +447,7 @@ protected:
|
|
|
447
447
|
void connectDirectVFGEdges();
|
|
448
448
|
|
|
449
449
|
/// Create edges between VFG nodes across functions
|
|
450
|
-
void addVFGInterEdges(const
|
|
450
|
+
void addVFGInterEdges(const CallICFGNode* cs, const SVFFunction* callee);
|
|
451
451
|
|
|
452
452
|
inline bool isPhiCopyEdge(const PAGEdge* copy) const
|
|
453
453
|
{
|
|
@@ -521,7 +521,7 @@ protected:
|
|
|
521
521
|
/// Add an actual parameter VFG node
|
|
522
522
|
/// To be noted that multiple actual parameters may have same value (PAGNode)
|
|
523
523
|
/// So we need to make a pair <PAGNodeID,CallSiteID> to find the right VFGParmNode
|
|
524
|
-
inline void addActualParmVFGNode(const PAGNode* aparm, const
|
|
524
|
+
inline void addActualParmVFGNode(const PAGNode* aparm, const CallICFGNode* cs)
|
|
525
525
|
{
|
|
526
526
|
ActualParmVFGNode* sNode = new ActualParmVFGNode(totalVFGNode++,aparm,cs);
|
|
527
527
|
addVFGNode(sNode, pag->getICFG()->getCallBlockNode(cs->getCallSite()));
|
|
@@ -561,7 +561,7 @@ protected:
|
|
|
561
561
|
}
|
|
562
562
|
}
|
|
563
563
|
/// Add a callsite Receive VFG node
|
|
564
|
-
inline void addActualRetVFGNode(const PAGNode* ret,const
|
|
564
|
+
inline void addActualRetVFGNode(const PAGNode* ret,const CallICFGNode* cs)
|
|
565
565
|
{
|
|
566
566
|
ActualRetVFGNode* sNode = new ActualRetVFGNode(totalVFGNode++,ret,cs);
|
|
567
567
|
addVFGNode(sNode, pag->getICFG()->getRetBlockNode(cs->getCallSite()));
|
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
|
}
|