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
|
@@ -57,7 +57,7 @@ void ThreadCallGraph::updateCallGraph(PointerAnalysis* pta)
|
|
|
57
57
|
PointerAnalysis::CallEdgeMap::const_iterator eiter = pta->getIndCallMap().end();
|
|
58
58
|
for (; iter != eiter; iter++)
|
|
59
59
|
{
|
|
60
|
-
const
|
|
60
|
+
const CallICFGNode* cs = iter->first;
|
|
61
61
|
const PTACallGraph::FunctionSet &functions = iter->second;
|
|
62
62
|
for (PTACallGraph::FunctionSet::const_iterator func_iter =
|
|
63
63
|
functions.begin(); func_iter != functions.end(); func_iter++)
|
|
@@ -144,7 +144,7 @@ void ThreadCallGraph::updateJoinEdge(PointerAnalysis* pta)
|
|
|
144
144
|
/*!
|
|
145
145
|
* Add direct fork edges
|
|
146
146
|
*/
|
|
147
|
-
void ThreadCallGraph::addDirectForkEdge(const
|
|
147
|
+
void ThreadCallGraph::addDirectForkEdge(const CallICFGNode* cs)
|
|
148
148
|
{
|
|
149
149
|
|
|
150
150
|
PTACallGraphNode* caller = getCallGraphNode(cs->getCaller());
|
|
@@ -168,7 +168,7 @@ void ThreadCallGraph::addDirectForkEdge(const CallBlockNode* cs)
|
|
|
168
168
|
/*!
|
|
169
169
|
* Add indirect fork edge to update call graph
|
|
170
170
|
*/
|
|
171
|
-
void ThreadCallGraph::addIndirectForkEdge(const
|
|
171
|
+
void ThreadCallGraph::addIndirectForkEdge(const CallICFGNode* cs, const SVFFunction* calleefun)
|
|
172
172
|
{
|
|
173
173
|
PTACallGraphNode* caller = getCallGraphNode(cs->getCaller());
|
|
174
174
|
PTACallGraphNode* callee = getCallGraphNode(calleefun);
|
|
@@ -193,7 +193,7 @@ void ThreadCallGraph::addIndirectForkEdge(const CallBlockNode* cs, const SVFFunc
|
|
|
193
193
|
* A ThreadJoinEdge is created from the functions where join sites reside in to the start routine function
|
|
194
194
|
* But we don't invoke addEdge() method to add the edge to src and dst, otherwise it makes a scc cycle
|
|
195
195
|
*/
|
|
196
|
-
void ThreadCallGraph::addDirectJoinEdge(const
|
|
196
|
+
void ThreadCallGraph::addDirectJoinEdge(const CallICFGNode* cs,const CallSiteSet& forkset)
|
|
197
197
|
{
|
|
198
198
|
|
|
199
199
|
PTACallGraphNode* joinFunNode = getCallGraphNode(cs->getCaller());
|
|
@@ -221,7 +221,7 @@ void ThreadCallGraph::addDirectJoinEdge(const CallBlockNode* cs,const CallSiteSe
|
|
|
221
221
|
/*!
|
|
222
222
|
* Add a direct ParFor edges
|
|
223
223
|
*/
|
|
224
|
-
void ThreadCallGraph::addDirectParForEdge(const
|
|
224
|
+
void ThreadCallGraph::addDirectParForEdge(const CallICFGNode* cs)
|
|
225
225
|
{
|
|
226
226
|
|
|
227
227
|
PTACallGraphNode* caller = getCallGraphNode(cs->getCaller());
|
|
@@ -248,7 +248,7 @@ void ThreadCallGraph::addDirectParForEdge(const CallBlockNode* cs)
|
|
|
248
248
|
/*!
|
|
249
249
|
* Add an indirect ParFor edge to update call graph
|
|
250
250
|
*/
|
|
251
|
-
void ThreadCallGraph::addIndirectParForEdge(const
|
|
251
|
+
void ThreadCallGraph::addIndirectParForEdge(const CallICFGNode* cs, const SVFFunction* calleefun)
|
|
252
252
|
{
|
|
253
253
|
|
|
254
254
|
PTACallGraphNode* caller = getCallGraphNode(cs->getCaller());
|
package/lib/Graphs/VFG.cpp
CHANGED
|
@@ -666,7 +666,7 @@ void VFG::connectDirectVFGEdges()
|
|
|
666
666
|
for(CallPESet::const_iterator it = formalParm->callPEBegin(), eit = formalParm->callPEEnd();
|
|
667
667
|
it!=eit; ++it)
|
|
668
668
|
{
|
|
669
|
-
const
|
|
669
|
+
const CallICFGNode* cs = (*it)->getCallSite();
|
|
670
670
|
ActualParmVFGNode* acutalParm = getActualParmVFGNode((*it)->getRHSVar(),cs);
|
|
671
671
|
addInterEdgeFromAPToFP(acutalParm,formalParm,getCallSiteID(cs, formalParm->getFun()));
|
|
672
672
|
}
|
|
@@ -680,8 +680,8 @@ void VFG::connectDirectVFGEdges()
|
|
|
680
680
|
for(RetPESet::const_iterator it = calleeRet->retPEBegin(), eit = calleeRet->retPEEnd(); it!=eit; ++it)
|
|
681
681
|
{
|
|
682
682
|
ActualRetVFGNode* callsiteRev = getActualRetVFGNode((*it)->getLHSVar());
|
|
683
|
-
const
|
|
684
|
-
|
|
683
|
+
const CallICFGNode* retBlockNode = (*it)->getCallSite();
|
|
684
|
+
CallICFGNode* callBlockNode = pag->getICFG()->getCallBlockNode(retBlockNode->getCallSite());
|
|
685
685
|
addInterEdgeFromFRToAR(calleeRet,callsiteRev, getCallSiteID(callBlockNode, calleeRet->getFun()));
|
|
686
686
|
}
|
|
687
687
|
}
|
|
@@ -800,7 +800,7 @@ void VFG::updateCallGraph(PointerAnalysis* pta)
|
|
|
800
800
|
PointerAnalysis::CallEdgeMap::const_iterator eiter = pta->getIndCallMap().end();
|
|
801
801
|
for (; iter != eiter; iter++)
|
|
802
802
|
{
|
|
803
|
-
const
|
|
803
|
+
const CallICFGNode* newcs = iter->first;
|
|
804
804
|
assert(newcs->isIndirectCall() && "this is not an indirect call?");
|
|
805
805
|
const PointerAnalysis::FunctionSet & functions = iter->second;
|
|
806
806
|
for (PointerAnalysis::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)
|
|
@@ -815,12 +815,12 @@ void VFG::updateCallGraph(PointerAnalysis* pta)
|
|
|
815
815
|
* Connect actual params/return to formal params/return for top-level variables.
|
|
816
816
|
* Also connect indirect actual in/out and formal in/out.
|
|
817
817
|
*/
|
|
818
|
-
void VFG::connectCallerAndCallee(const
|
|
818
|
+
void VFG::connectCallerAndCallee(const CallICFGNode* callBlockNode, const SVFFunction* callee, VFGEdgeSetTy& edges)
|
|
819
819
|
{
|
|
820
820
|
SVFIR * pag = SVFIR::getPAG();
|
|
821
821
|
ICFG * icfg = pag->getICFG();
|
|
822
822
|
CallSiteID csId = getCallSiteID(callBlockNode, callee);
|
|
823
|
-
|
|
823
|
+
RetICFGNode* retBlockNode = icfg->getRetBlockNode(callBlockNode->getCallSite());
|
|
824
824
|
// connect actual and formal param
|
|
825
825
|
if (pag->hasCallSiteArgsMap(callBlockNode) && pag->hasFunArgsList(callee))
|
|
826
826
|
{
|
package/lib/MSSA/MemRegion.cpp
CHANGED
|
@@ -136,7 +136,7 @@ void MRGenerator::generateMRs()
|
|
|
136
136
|
/// collect mod-ref for loads/stores
|
|
137
137
|
collectModRefForLoadStore();
|
|
138
138
|
|
|
139
|
-
DBOUT(DGENERAL, outs() << pasMsg("\tCollect ModRef For const
|
|
139
|
+
DBOUT(DGENERAL, outs() << pasMsg("\tCollect ModRef For const CallICFGNode*\n"));
|
|
140
140
|
|
|
141
141
|
/// collect mod-ref for calls
|
|
142
142
|
collectModRefForCall();
|
|
@@ -259,7 +259,7 @@ void MRGenerator::collectModRefForCall()
|
|
|
259
259
|
|
|
260
260
|
for (CallSite cs : SymbolTableInfo::SymbolInfo()->getCallSiteSet())
|
|
261
261
|
{
|
|
262
|
-
const
|
|
262
|
+
const CallICFGNode* callBlockNode = pta->getPAG()->getICFG()->getCallBlockNode(cs.getInstruction());
|
|
263
263
|
if(hasRefSideEffectOfCallSite(callBlockNode))
|
|
264
264
|
{
|
|
265
265
|
NodeBS refs = getRefSideEffectOfCallSite(callBlockNode);
|
|
@@ -428,7 +428,7 @@ void MRGenerator::addModSideEffectOfFunction(const SVFFunction* fun, const NodeB
|
|
|
428
428
|
/*!
|
|
429
429
|
* Add indirect uses an memory object in the function
|
|
430
430
|
*/
|
|
431
|
-
bool MRGenerator::addRefSideEffectOfCallSite(const
|
|
431
|
+
bool MRGenerator::addRefSideEffectOfCallSite(const CallICFGNode* cs, const NodeBS& refs)
|
|
432
432
|
{
|
|
433
433
|
if(!refs.empty())
|
|
434
434
|
{
|
|
@@ -444,7 +444,7 @@ bool MRGenerator::addRefSideEffectOfCallSite(const CallBlockNode* cs, const Node
|
|
|
444
444
|
/*!
|
|
445
445
|
* Add indirect def an memory object in the function
|
|
446
446
|
*/
|
|
447
|
-
bool MRGenerator::addModSideEffectOfCallSite(const
|
|
447
|
+
bool MRGenerator::addModSideEffectOfCallSite(const CallICFGNode* cs, const NodeBS& mods)
|
|
448
448
|
{
|
|
449
449
|
if(!mods.empty())
|
|
450
450
|
{
|
|
@@ -476,13 +476,13 @@ void MRGenerator::getCallGraphSCCRevTopoOrder(WorkList& worklist)
|
|
|
476
476
|
/*!
|
|
477
477
|
* Get all objects might pass into and pass out of callee(s) from a callsite
|
|
478
478
|
*/
|
|
479
|
-
void MRGenerator::collectCallSitePts(const
|
|
479
|
+
void MRGenerator::collectCallSitePts(const CallICFGNode* cs)
|
|
480
480
|
{
|
|
481
481
|
/// collect the pts chain of the callsite arguments
|
|
482
482
|
NodeBS& argsPts = csToCallSiteArgsPtsMap[cs];
|
|
483
483
|
SVFIR* pag = pta->getPAG();
|
|
484
|
-
|
|
485
|
-
|
|
484
|
+
CallICFGNode* callBlockNode = pag->getICFG()->getCallBlockNode(cs->getCallSite());
|
|
485
|
+
RetICFGNode* retBlockNode = pag->getICFG()->getRetBlockNode(cs->getCallSite());
|
|
486
486
|
|
|
487
487
|
WorkList worklist;
|
|
488
488
|
if (pag->hasCallSiteArgsMap(callBlockNode))
|
|
@@ -600,7 +600,7 @@ bool MRGenerator::isNonLocalObject(NodeID id, const SVFFunction* curFun) const
|
|
|
600
600
|
/*!
|
|
601
601
|
* Get Mod-Ref of a callee function
|
|
602
602
|
*/
|
|
603
|
-
bool MRGenerator::handleCallsiteModRef(NodeBS& mod, NodeBS& ref, const
|
|
603
|
+
bool MRGenerator::handleCallsiteModRef(NodeBS& mod, NodeBS& ref, const CallICFGNode* cs, const SVFFunction* callee)
|
|
604
604
|
{
|
|
605
605
|
/// if a callee is a heap allocator function, then its mod set of this callsite is the heap object.
|
|
606
606
|
if(isHeapAllocExtCall(cs->getCallSite()))
|
|
@@ -646,7 +646,7 @@ void MRGenerator::modRefAnalysis(PTACallGraphNode* callGraphNode, WorkList& work
|
|
|
646
646
|
ecit = edge->getDirectCalls().end(); cit!=ecit; ++cit)
|
|
647
647
|
{
|
|
648
648
|
NodeBS mod, ref;
|
|
649
|
-
const
|
|
649
|
+
const CallICFGNode* cs = (*cit);
|
|
650
650
|
bool modrefchanged = handleCallsiteModRef(mod, ref, cs, callGraphNode->getFunction());
|
|
651
651
|
if(modrefchanged)
|
|
652
652
|
worklist.push(edge->getSrcID());
|
|
@@ -656,7 +656,7 @@ void MRGenerator::modRefAnalysis(PTACallGraphNode* callGraphNode, WorkList& work
|
|
|
656
656
|
ecit = edge->getIndirectCalls().end(); cit!=ecit; ++cit)
|
|
657
657
|
{
|
|
658
658
|
NodeBS mod, ref;
|
|
659
|
-
const
|
|
659
|
+
const CallICFGNode* cs = (*cit);
|
|
660
660
|
bool modrefchanged = handleCallsiteModRef(mod, ref, cs, callGraphNode->getFunction());
|
|
661
661
|
if(modrefchanged)
|
|
662
662
|
worklist.push(edge->getSrcID());
|
|
@@ -667,7 +667,7 @@ void MRGenerator::modRefAnalysis(PTACallGraphNode* callGraphNode, WorkList& work
|
|
|
667
667
|
/*!
|
|
668
668
|
* Obtain the mod sets for a call, used for external ModRefInfo queries
|
|
669
669
|
*/
|
|
670
|
-
NodeBS MRGenerator::getModInfoForCall(const
|
|
670
|
+
NodeBS MRGenerator::getModInfoForCall(const CallICFGNode* cs)
|
|
671
671
|
{
|
|
672
672
|
if (isExtCall(cs->getCallSite()) && !isHeapAllocExtCall(cs->getCallSite()))
|
|
673
673
|
{
|
|
@@ -691,7 +691,7 @@ NodeBS MRGenerator::getModInfoForCall(const CallBlockNode* cs)
|
|
|
691
691
|
/*!
|
|
692
692
|
* Obtain the ref sets for a call, used for external ModRefInfo queries
|
|
693
693
|
*/
|
|
694
|
-
NodeBS MRGenerator::getRefInfoForCall(const
|
|
694
|
+
NodeBS MRGenerator::getRefInfoForCall(const CallICFGNode* cs)
|
|
695
695
|
{
|
|
696
696
|
if (isExtCall(cs->getCallSite()) && !isHeapAllocExtCall(cs->getCallSite()))
|
|
697
697
|
{
|
|
@@ -716,7 +716,7 @@ NodeBS MRGenerator::getRefInfoForCall(const CallBlockNode* cs)
|
|
|
716
716
|
* Determine whether a CallSite instruction can mod or ref
|
|
717
717
|
* any memory location
|
|
718
718
|
*/
|
|
719
|
-
ModRefInfo MRGenerator::getModRefInfo(const
|
|
719
|
+
ModRefInfo MRGenerator::getModRefInfo(const CallICFGNode* cs)
|
|
720
720
|
{
|
|
721
721
|
bool ref = !getRefInfoForCall(cs).empty();
|
|
722
722
|
bool mod = !getModInfoForCall(cs).empty();
|
|
@@ -732,10 +732,10 @@ ModRefInfo MRGenerator::getModRefInfo(const CallBlockNode* cs)
|
|
|
732
732
|
}
|
|
733
733
|
|
|
734
734
|
/*!
|
|
735
|
-
* Determine whether a const
|
|
735
|
+
* Determine whether a const CallICFGNode* instruction can mod or ref
|
|
736
736
|
* a specific memory location pointed by V
|
|
737
737
|
*/
|
|
738
|
-
ModRefInfo MRGenerator::getModRefInfo(const
|
|
738
|
+
ModRefInfo MRGenerator::getModRefInfo(const CallICFGNode* cs, const Value* V)
|
|
739
739
|
{
|
|
740
740
|
bool ref = false;
|
|
741
741
|
bool mod = false;
|
|
@@ -767,9 +767,9 @@ ModRefInfo MRGenerator::getModRefInfo(const CallBlockNode* cs, const Value* V)
|
|
|
767
767
|
}
|
|
768
768
|
|
|
769
769
|
/*!
|
|
770
|
-
* Determine mod-ref relations between two const
|
|
770
|
+
* Determine mod-ref relations between two const CallICFGNode* instructions
|
|
771
771
|
*/
|
|
772
|
-
ModRefInfo MRGenerator::getModRefInfo(const
|
|
772
|
+
ModRefInfo MRGenerator::getModRefInfo(const CallICFGNode* cs1, const CallICFGNode* cs2)
|
|
773
773
|
{
|
|
774
774
|
bool ref = false;
|
|
775
775
|
bool mod = false;
|
package/lib/MSSA/MemSSA.cpp
CHANGED
|
@@ -174,7 +174,7 @@ void MemSSA::createMUCHI(const SVFFunction& fun)
|
|
|
174
174
|
}
|
|
175
175
|
if (isNonInstricCallSite(inst))
|
|
176
176
|
{
|
|
177
|
-
const
|
|
177
|
+
const CallICFGNode* cs = pag->getICFG()->getCallBlockNode(inst);
|
|
178
178
|
if(mrGen->hasRefMRSet(cs))
|
|
179
179
|
AddCallSiteMU(cs,mrGen->getCallSiteRefMRSet(cs));
|
|
180
180
|
|
|
@@ -318,7 +318,7 @@ void MemSSA::SSARenameBB(const BasicBlock& bb)
|
|
|
318
318
|
}
|
|
319
319
|
if (isNonInstricCallSite(inst))
|
|
320
320
|
{
|
|
321
|
-
const
|
|
321
|
+
const CallICFGNode* cs = pag->getICFG()->getCallBlockNode(inst);
|
|
322
322
|
if(mrGen->hasRefMRSet(cs))
|
|
323
323
|
RenameMuSet(getMUSet(cs));
|
|
324
324
|
|
|
@@ -634,7 +634,7 @@ void MemSSA::dumpMSSA(raw_ostream& Out)
|
|
|
634
634
|
bool isAppCall = isNonInstricCallSite(&inst) && !isExtCall(&inst);
|
|
635
635
|
if (isAppCall || isHeapAllocExtCall(&inst))
|
|
636
636
|
{
|
|
637
|
-
const
|
|
637
|
+
const CallICFGNode* cs = pag->getICFG()->getCallBlockNode(&inst);
|
|
638
638
|
if(hasMU(cs))
|
|
639
639
|
{
|
|
640
640
|
if (!last_is_chi)
|
package/lib/MTA/LockAnalysis.cpp
CHANGED
|
@@ -406,7 +406,7 @@ void LockAnalysis::handleFork(const CxtStmt& cts)
|
|
|
406
406
|
{
|
|
407
407
|
const CallInst* call = SVFUtil::cast<CallInst>(cts.getStmt());
|
|
408
408
|
const CallStrCxt& curCxt = cts.getContext();
|
|
409
|
-
|
|
409
|
+
CallICFGNode* cbn = tct->getCallBlockNode(call);
|
|
410
410
|
if(getTCG()->hasThreadForkEdge(cbn))
|
|
411
411
|
{
|
|
412
412
|
for (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = getTCG()->getForkEdgeBegin(cbn),
|
|
@@ -429,7 +429,7 @@ void LockAnalysis::handleCall(const CxtStmt& cts)
|
|
|
429
429
|
|
|
430
430
|
const CallInst* call = SVFUtil::cast<CallInst>(cts.getStmt());
|
|
431
431
|
const CallStrCxt& curCxt = cts.getContext();
|
|
432
|
-
|
|
432
|
+
CallICFGNode* cbn = tct->getCallBlockNode(call);
|
|
433
433
|
if (getTCG()->hasCallGraphEdge(cbn))
|
|
434
434
|
{
|
|
435
435
|
for (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = getTCG()->getCallEdgeBegin(cbn), ecgIt = getTCG()->getCallEdgeEnd(cbn);
|
|
@@ -518,7 +518,7 @@ void LockAnalysis::pushCxt(CallStrCxt& cxt, const Instruction* call, const Funct
|
|
|
518
518
|
const Function* caller = call->getParent()->getParent();
|
|
519
519
|
const SVFFunction* svfcallee = tct->getSVFFun(callee);
|
|
520
520
|
const SVFFunction* svfcaller = tct->getSVFFun(caller);
|
|
521
|
-
|
|
521
|
+
CallICFGNode* cbn = tct->getCallBlockNode(call);
|
|
522
522
|
CallSiteID csId = getTCG()->getCallSiteID(cbn, svfcallee);
|
|
523
523
|
|
|
524
524
|
// /// handle calling context for candidate functions only
|
|
@@ -537,7 +537,7 @@ bool LockAnalysis::matchCxt(CallStrCxt& cxt, const Instruction* call, const Func
|
|
|
537
537
|
const Function* caller = call->getParent()->getParent();
|
|
538
538
|
const SVFFunction* svfcallee = tct->getSVFFun(callee);
|
|
539
539
|
const SVFFunction* svfcaller = tct->getSVFFun(caller);
|
|
540
|
-
|
|
540
|
+
CallICFGNode* cbn = tct->getCallBlockNode(call);
|
|
541
541
|
CallSiteID csId = getTCG()->getCallSiteID(cbn, svfcallee);
|
|
542
542
|
|
|
543
543
|
// /// handle calling context for candidate functions only
|
package/lib/MTA/MHP.cpp
CHANGED
|
@@ -244,7 +244,7 @@ void MHP::handleFork(const CxtThreadStmt& cts, NodeID rootTid)
|
|
|
244
244
|
const CallStrCxt& curCxt = cts.getContext();
|
|
245
245
|
|
|
246
246
|
assert(isTDFork(call));
|
|
247
|
-
|
|
247
|
+
CallICFGNode* cbn = getCBN(call);
|
|
248
248
|
if(tct->getThreadCallGraph()->hasCallGraphEdge(cbn))
|
|
249
249
|
{
|
|
250
250
|
|
|
@@ -324,7 +324,7 @@ void MHP::handleCall(const CxtThreadStmt& cts, NodeID rootTid)
|
|
|
324
324
|
|
|
325
325
|
const CallInst* call = SVFUtil::cast<CallInst>(cts.getStmt());
|
|
326
326
|
const CallStrCxt& curCxt = cts.getContext();
|
|
327
|
-
|
|
327
|
+
CallICFGNode* cbn = getCBN(call);
|
|
328
328
|
if(tct->getThreadCallGraph()->hasCallGraphEdge(cbn))
|
|
329
329
|
{
|
|
330
330
|
for (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = tcg->getCallEdgeBegin(cbn),
|
|
@@ -830,7 +830,7 @@ void ForkJoinAnalysis::handleFork(const CxtStmt& cts, NodeID rootTid)
|
|
|
830
830
|
const CallStrCxt& curCxt = cts.getContext();
|
|
831
831
|
|
|
832
832
|
assert(isTDFork(call));
|
|
833
|
-
|
|
833
|
+
CallICFGNode* cbn = getCBN(call);
|
|
834
834
|
if(getTCG()->hasThreadForkEdge(cbn))
|
|
835
835
|
{
|
|
836
836
|
for (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = getTCG()->getForkEdgeBegin(cbn),
|
|
@@ -856,7 +856,7 @@ void ForkJoinAnalysis::handleJoin(const CxtStmt& cts, NodeID rootTid)
|
|
|
856
856
|
const CallStrCxt& curCxt = cts.getContext();
|
|
857
857
|
|
|
858
858
|
assert(isTDJoin(call));
|
|
859
|
-
|
|
859
|
+
CallICFGNode* cbn = getCBN(call);
|
|
860
860
|
if(getTCG()->hasCallGraphEdge(cbn))
|
|
861
861
|
{
|
|
862
862
|
const Instruction* forkSite = tct->getTCTNode(rootTid)->getCxtThread().getThread();
|
|
@@ -915,7 +915,7 @@ void ForkJoinAnalysis::handleCall(const CxtStmt& cts, NodeID rootTid)
|
|
|
915
915
|
|
|
916
916
|
const CallInst* call = SVFUtil::cast<CallInst>(cts.getStmt());
|
|
917
917
|
const CallStrCxt& curCxt = cts.getContext();
|
|
918
|
-
|
|
918
|
+
CallICFGNode* cbn = getCBN(call);
|
|
919
919
|
if(getTCG()->hasCallGraphEdge(cbn))
|
|
920
920
|
{
|
|
921
921
|
for (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = getTCG()->getCallEdgeBegin(cbn),
|
|
@@ -96,7 +96,7 @@ CallStrCxt MTAResultValidator::getCxtArg(const Instruction* inst, unsigned int a
|
|
|
96
96
|
const SVFFunction* callee = SVFUtil::getFunction(y[1]);
|
|
97
97
|
CallSite cs = SVFUtil::getLLVMCallSite(csnumToInstMap[atoi(y[0].c_str())]);
|
|
98
98
|
assert(callee && "callee error");
|
|
99
|
-
|
|
99
|
+
CallICFGNode* cbn = mhp->getTCT()->getCallBlockNode(cs.getInstruction());
|
|
100
100
|
CallSiteID csId = tcg->getCallSiteID(cbn, callee);
|
|
101
101
|
cxt.push_back(csId);
|
|
102
102
|
}
|
package/lib/MTA/PCG.cpp
CHANGED
|
@@ -206,7 +206,7 @@ void PCG::identifyFollowers()
|
|
|
206
206
|
// if this is an call/invoke instruction but not a spawn site
|
|
207
207
|
if ((SVFUtil::isa<CallInst>(inst) || SVFUtil::isa<InvokeInst>(inst)) && !isSpawnsite(inst))
|
|
208
208
|
{
|
|
209
|
-
|
|
209
|
+
CallICFGNode* cbn = getCallBlockNode(inst);
|
|
210
210
|
if (callgraph->hasCallGraphEdge(cbn))
|
|
211
211
|
{
|
|
212
212
|
for (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = callgraph->getCallEdgeBegin(cbn),
|
|
@@ -348,7 +348,7 @@ void PointerAnalysis::dumpPts(NodeID ptr, const PointsTo& pts)
|
|
|
348
348
|
/*!
|
|
349
349
|
* Print indirect call targets at an indirect callsite
|
|
350
350
|
*/
|
|
351
|
-
void PointerAnalysis::printIndCSTargets(const
|
|
351
|
+
void PointerAnalysis::printIndCSTargets(const CallICFGNode* cs, const FunctionSet& targets)
|
|
352
352
|
{
|
|
353
353
|
outs() << "\nNodeID: " << getFunPtr(cs);
|
|
354
354
|
outs() << "\nCallSite: ";
|
|
@@ -385,7 +385,7 @@ void PointerAnalysis::printIndCSTargets()
|
|
|
385
385
|
CallEdgeMap::const_iterator eit = callEdges.end();
|
|
386
386
|
for (; it != eit; ++it)
|
|
387
387
|
{
|
|
388
|
-
const
|
|
388
|
+
const CallICFGNode* cs = it->first;
|
|
389
389
|
const FunctionSet& targets = it->second;
|
|
390
390
|
printIndCSTargets(cs, targets);
|
|
391
391
|
}
|
|
@@ -395,7 +395,7 @@ void PointerAnalysis::printIndCSTargets()
|
|
|
395
395
|
CallSiteToFunPtrMap::const_iterator csEit = indCS.end();
|
|
396
396
|
for (; csIt != csEit; ++csIt)
|
|
397
397
|
{
|
|
398
|
-
const
|
|
398
|
+
const CallICFGNode* cs = csIt->first;
|
|
399
399
|
if (hasIndCSCallees(cs) == false)
|
|
400
400
|
{
|
|
401
401
|
outs() << "\nNodeID: " << csIt->second;
|
|
@@ -412,7 +412,7 @@ void PointerAnalysis::printIndCSTargets()
|
|
|
412
412
|
/*!
|
|
413
413
|
* Resolve indirect calls
|
|
414
414
|
*/
|
|
415
|
-
void PointerAnalysis::resolveIndCalls(const
|
|
415
|
+
void PointerAnalysis::resolveIndCalls(const CallICFGNode* cs, const PointsTo& target, CallEdgeMap& newEdges, LLVMCallGraph*)
|
|
416
416
|
{
|
|
417
417
|
|
|
418
418
|
assert(pag->isIndirectCallSites(cs) && "not an indirect callsite?");
|
|
@@ -460,7 +460,7 @@ void PointerAnalysis::resolveIndCalls(const CallBlockNode* cs, const PointsTo& t
|
|
|
460
460
|
/*!
|
|
461
461
|
* Match arguments for callsite at caller and callee
|
|
462
462
|
*/
|
|
463
|
-
bool PointerAnalysis::matchArgs(const
|
|
463
|
+
bool PointerAnalysis::matchArgs(const CallICFGNode* cs, const SVFFunction* callee)
|
|
464
464
|
{
|
|
465
465
|
if(ThreadAPI::getThreadAPI()->isTDFork(cs->getCallSite()))
|
|
466
466
|
return true;
|
|
@@ -471,7 +471,7 @@ bool PointerAnalysis::matchArgs(const CallBlockNode* cs, const SVFFunction* call
|
|
|
471
471
|
/*
|
|
472
472
|
* Get virtual functions "vfns" based on CHA
|
|
473
473
|
*/
|
|
474
|
-
void PointerAnalysis::getVFnsFromCHA(const
|
|
474
|
+
void PointerAnalysis::getVFnsFromCHA(const CallICFGNode* cs, VFunSet &vfns)
|
|
475
475
|
{
|
|
476
476
|
if (chgraph->csHasVFnsBasedonCHA(SVFUtil::getLLVMCallSite(cs->getCallSite())))
|
|
477
477
|
vfns = chgraph->getCSVFsBasedonCHA(SVFUtil::getLLVMCallSite(cs->getCallSite()));
|
|
@@ -480,7 +480,7 @@ void PointerAnalysis::getVFnsFromCHA(const CallBlockNode* cs, VFunSet &vfns)
|
|
|
480
480
|
/*
|
|
481
481
|
* Get virtual functions "vfns" from PoninsTo set "target" for callsite "cs"
|
|
482
482
|
*/
|
|
483
|
-
void PointerAnalysis::getVFnsFromPts(const
|
|
483
|
+
void PointerAnalysis::getVFnsFromPts(const CallICFGNode* cs, const PointsTo &target, VFunSet &vfns)
|
|
484
484
|
{
|
|
485
485
|
|
|
486
486
|
if (chgraph->csHasVtblsBasedonCHA(SVFUtil::getLLVMCallSite(cs->getCallSite())))
|
|
@@ -506,7 +506,7 @@ void PointerAnalysis::getVFnsFromPts(const CallBlockNode* cs, const PointsTo &ta
|
|
|
506
506
|
/*
|
|
507
507
|
* Connect callsite "cs" to virtual functions in "vfns"
|
|
508
508
|
*/
|
|
509
|
-
void PointerAnalysis::connectVCallToVFns(const
|
|
509
|
+
void PointerAnalysis::connectVCallToVFns(const CallICFGNode* cs, const VFunSet &vfns, CallEdgeMap& newEdges)
|
|
510
510
|
{
|
|
511
511
|
//// connect all valid functions
|
|
512
512
|
for (VFunSet::const_iterator fit = vfns.begin(),
|
|
@@ -521,14 +521,14 @@ void PointerAnalysis::connectVCallToVFns(const CallBlockNode* cs, const VFunSet
|
|
|
521
521
|
{
|
|
522
522
|
newEdges[cs].insert(callee);
|
|
523
523
|
getIndCallMap()[cs].insert(callee);
|
|
524
|
-
const
|
|
524
|
+
const CallICFGNode* callBlockNode = pag->getICFG()->getCallBlockNode(cs->getCallSite());
|
|
525
525
|
ptaCallGraph->addIndirectCallGraphEdge(callBlockNode, cs->getCaller(),callee);
|
|
526
526
|
}
|
|
527
527
|
}
|
|
528
528
|
}
|
|
529
529
|
|
|
530
530
|
/// Resolve cpp indirect call edges
|
|
531
|
-
void PointerAnalysis::resolveCPPIndCalls(const
|
|
531
|
+
void PointerAnalysis::resolveCPPIndCalls(const CallICFGNode* cs, const PointsTo& target, CallEdgeMap& newEdges)
|
|
532
532
|
{
|
|
533
533
|
assert(isVirtualCallSite(SVFUtil::getLLVMCallSite(cs->getCallSite())) && "not cpp virtual call");
|
|
534
534
|
|
|
@@ -382,7 +382,7 @@ void BVDataPTAImpl::onTheFlyCallGraphSolve(const CallSiteToFunPtrMap& callsites,
|
|
|
382
382
|
{
|
|
383
383
|
for(CallSiteToFunPtrMap::const_iterator iter = callsites.begin(), eiter = callsites.end(); iter!=eiter; ++iter)
|
|
384
384
|
{
|
|
385
|
-
const
|
|
385
|
+
const CallICFGNode* cs = iter->first;
|
|
386
386
|
|
|
387
387
|
if (isVirtualCallSite(SVFUtil::getLLVMCallSite(cs->getCallSite())))
|
|
388
388
|
{
|
|
@@ -201,7 +201,7 @@ LoadStmt* SVFIR::addLoadStmt(NodeID src, NodeID dst)
|
|
|
201
201
|
* Add Store edge
|
|
202
202
|
* Note that two store instructions may share the same Store SVFStmt
|
|
203
203
|
*/
|
|
204
|
-
StoreStmt* SVFIR::addStoreStmt(NodeID src, NodeID dst, const
|
|
204
|
+
StoreStmt* SVFIR::addStoreStmt(NodeID src, NodeID dst, const IntraICFGNode* curVal)
|
|
205
205
|
{
|
|
206
206
|
SVFVar* srcNode = getGNode(src);
|
|
207
207
|
SVFVar* dstNode = getGNode(dst);
|
|
@@ -219,7 +219,7 @@ StoreStmt* SVFIR::addStoreStmt(NodeID src, NodeID dst, const IntraBlockNode* cur
|
|
|
219
219
|
/*!
|
|
220
220
|
* Add Call edge
|
|
221
221
|
*/
|
|
222
|
-
CallPE* SVFIR::addCallPE(NodeID src, NodeID dst, const
|
|
222
|
+
CallPE* SVFIR::addCallPE(NodeID src, NodeID dst, const CallICFGNode* cs)
|
|
223
223
|
{
|
|
224
224
|
SVFVar* srcNode = getGNode(src);
|
|
225
225
|
SVFVar* dstNode = getGNode(dst);
|
|
@@ -237,7 +237,7 @@ CallPE* SVFIR::addCallPE(NodeID src, NodeID dst, const CallBlockNode* cs)
|
|
|
237
237
|
/*!
|
|
238
238
|
* Add Return edge
|
|
239
239
|
*/
|
|
240
|
-
RetPE* SVFIR::addRetPE(NodeID src, NodeID dst, const
|
|
240
|
+
RetPE* SVFIR::addRetPE(NodeID src, NodeID dst, const CallICFGNode* cs)
|
|
241
241
|
{
|
|
242
242
|
SVFVar* srcNode = getGNode(src);
|
|
243
243
|
SVFVar* dstNode = getGNode(dst);
|
|
@@ -266,7 +266,7 @@ SVFStmt* SVFIR::addBlackHoleAddrStmt(NodeID node)
|
|
|
266
266
|
/*!
|
|
267
267
|
* Add Thread fork edge for parameter passing from a spawner to its spawnees
|
|
268
268
|
*/
|
|
269
|
-
TDForkPE* SVFIR::addThreadForkPE(NodeID src, NodeID dst, const
|
|
269
|
+
TDForkPE* SVFIR::addThreadForkPE(NodeID src, NodeID dst, const CallICFGNode* cs)
|
|
270
270
|
{
|
|
271
271
|
SVFVar* srcNode = getGNode(src);
|
|
272
272
|
SVFVar* dstNode = getGNode(dst);
|
|
@@ -284,7 +284,7 @@ TDForkPE* SVFIR::addThreadForkPE(NodeID src, NodeID dst, const CallBlockNode* cs
|
|
|
284
284
|
/*!
|
|
285
285
|
* Add Thread fork edge for parameter passing from a spawnee back to its spawners
|
|
286
286
|
*/
|
|
287
|
-
TDJoinPE* SVFIR::addThreadJoinPE(NodeID src, NodeID dst, const
|
|
287
|
+
TDJoinPE* SVFIR::addThreadJoinPE(NodeID src, NodeID dst, const CallICFGNode* cs)
|
|
288
288
|
{
|
|
289
289
|
SVFVar* srcNode = getGNode(src);
|
|
290
290
|
SVFVar* dstNode = getGNode(dst);
|