svf-tools 1.0.341 → 1.0.345
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/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 +8 -8
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +31 -31
- 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/SymbolTableInfo_8cpp_source.html +1 -1
- 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.html +1 -1
- 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_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_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 +131 -131
- 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_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_1SymbolTableInfo.html +1 -1
- 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 +65 -67
- package/SVF-doxygen/html/html/functions_f.html +14 -14
- package/SVF-doxygen/html/html/functions_func.html +56 -56
- package/SVF-doxygen/html/html/functions_func_c.html +28 -28
- package/SVF-doxygen/html/html/functions_func_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func_g.html +86 -86
- package/SVF-doxygen/html/html/functions_func_h.html +17 -17
- package/SVF-doxygen/html/html/functions_func_i.html +12 -12
- package/SVF-doxygen/html/html/functions_func_m.html +1 -1
- package/SVF-doxygen/html/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/html/functions_func_r.html +6 -6
- package/SVF-doxygen/html/html/functions_func_s.html +2 -2
- package/SVF-doxygen/html/html/functions_func_t.html +7 -7
- package/SVF-doxygen/html/html/functions_func_u.html +3 -3
- package/SVF-doxygen/html/html/functions_g.html +88 -88
- package/SVF-doxygen/html/html/functions_h.html +16 -16
- package/SVF-doxygen/html/html/functions_i.html +19 -19
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_p.html +10 -13
- package/SVF-doxygen/html/html/functions_r.html +6 -6
- package/SVF-doxygen/html/html/functions_s.html +21 -18
- 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/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 +2 -3
- package/SVF-doxygen/html/html/search/all_12.js +5 -5
- package/SVF-doxygen/html/html/search/all_13.js +5 -4
- package/SVF-doxygen/html/html/search/all_14.js +8 -8
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +3 -3
- package/SVF-doxygen/html/html/search/all_3.js +35 -34
- package/SVF-doxygen/html/html/search/all_6.js +12 -12
- package/SVF-doxygen/html/html/search/all_7.js +62 -61
- package/SVF-doxygen/html/html/search/all_8.js +17 -17
- package/SVF-doxygen/html/html/search/all_9.js +15 -15
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- 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/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 +12 -12
- package/SVF-doxygen/html/html/search/functions_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/functions_f.js +4 -4
- package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +21 -21
- package/SVF-doxygen/html/html/search/typedefs_5.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_8.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1.js +2 -2
- package/SVF-doxygen/html/html/search/variables_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 +2 -2
- package/SVF-doxygen/html/html/search/variables_15.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 +33 -33
- package/include/Graphs/ICFGNode.h +33 -33
- package/include/Graphs/ICFGStat.h +11 -11
- package/include/Graphs/PTACallGraph.h +19 -19
- package/include/Graphs/SVFG.h +16 -16
- package/include/Graphs/SVFGNode.h +14 -14
- package/include/Graphs/SVFGOPT.h +1 -1
- package/include/Graphs/ThreadCallGraph.h +25 -25
- package/include/Graphs/VFG.h +10 -10
- package/include/Graphs/VFGNode.h +8 -8
- package/include/MSSA/MSSAMuChi.h +6 -6
- package/include/MSSA/MemRegion.h +24 -24
- package/include/MSSA/MemSSA.h +10 -10
- package/include/MTA/LockResultValidator.h +2 -2
- package/include/MTA/MHP.h +4 -4
- package/include/MTA/PCG.h +1 -1
- package/include/MTA/TCT.h +2 -2
- package/include/MemoryModel/PointerAnalysis.h +12 -12
- package/include/MemoryModel/SVFIR.h +21 -21
- package/include/MemoryModel/SVFStatements.h +11 -11
- package/include/SABER/LeakChecker.h +4 -4
- package/include/SABER/ProgSlice.h +2 -2
- package/include/SABER/SaberCheckerAPI.h +4 -4
- package/include/SABER/SaberSVFGBuilder.h +1 -1
- package/include/SABER/SrcSnkDDA.h +1 -1
- package/include/SVF-FE/ICFGBuilder.h +4 -4
- package/include/SVF-FE/SVFIRBuilder.h +5 -5
- package/include/Util/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/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/Util/Options.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/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);
|
|
@@ -61,76 +61,76 @@ bool SVFStmt::isPTAEdge() const
|
|
|
61
61
|
const std::string SVFStmt::toString() const {
|
|
62
62
|
std::string str;
|
|
63
63
|
raw_string_ostream rawstr(str);
|
|
64
|
-
rawstr << "SVFStmt: [" << getDstID() << "<--" << getSrcID() << "]\t";
|
|
64
|
+
rawstr << "SVFStmt: [Var" << getDstID() << " <-- Var" << getSrcID() << "]\t";
|
|
65
65
|
return rawstr.str();
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
const std::string AddrStmt::toString() const{
|
|
69
69
|
std::string str;
|
|
70
70
|
raw_string_ostream rawstr(str);
|
|
71
|
-
rawstr << "AddrStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
72
|
-
if (Options::
|
|
71
|
+
rawstr << "AddrStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
72
|
+
if (Options::ShowSVFIRValue) {
|
|
73
73
|
rawstr << "\n";
|
|
74
|
+
rawstr << value2String(getValue());
|
|
74
75
|
}
|
|
75
|
-
rawstr << value2String(getValue());
|
|
76
76
|
return rawstr.str();
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
const std::string CopyStmt::toString() const{
|
|
80
80
|
std::string str;
|
|
81
81
|
raw_string_ostream rawstr(str);
|
|
82
|
-
rawstr << "CopyStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
83
|
-
if (Options::
|
|
82
|
+
rawstr << "CopyStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
83
|
+
if (Options::ShowSVFIRValue) {
|
|
84
84
|
rawstr << "\n";
|
|
85
|
+
rawstr << value2String(getValue());
|
|
85
86
|
}
|
|
86
|
-
rawstr << value2String(getValue());
|
|
87
87
|
return rawstr.str();
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
const std::string PhiStmt::toString() const{
|
|
91
91
|
std::string str;
|
|
92
92
|
raw_string_ostream rawstr(str);
|
|
93
|
-
rawstr << "PhiStmt: [" << getResID() << "<--(";
|
|
93
|
+
rawstr << "PhiStmt: [Var" << getResID() << " <-- (Var";
|
|
94
94
|
for(const SVFVar* op : getOpndVars())
|
|
95
95
|
rawstr << op->getId() << ",";
|
|
96
96
|
rawstr << ")]\t";
|
|
97
|
-
if (Options::
|
|
97
|
+
if (Options::ShowSVFIRValue) {
|
|
98
98
|
rawstr << "\n";
|
|
99
|
+
rawstr << value2String(getValue());
|
|
99
100
|
}
|
|
100
|
-
rawstr << value2String(getValue());
|
|
101
101
|
return rawstr.str();
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
const std::string CmpStmt::toString() const{
|
|
105
105
|
std::string str;
|
|
106
106
|
raw_string_ostream rawstr(str);
|
|
107
|
-
rawstr << "CmpStmt: [" << getResID() << "<--(" << getOpVarID(0) << "
|
|
108
|
-
if (Options::
|
|
107
|
+
rawstr << "CmpStmt: [Var" << getResID() << " <-- (Var" << getOpVarID(0) << " predicate" << getPredicate() << " Var" << getOpVarID(1) << ")]\t";
|
|
108
|
+
if (Options::ShowSVFIRValue) {
|
|
109
109
|
rawstr << "\n";
|
|
110
|
+
rawstr << value2String(getValue());
|
|
110
111
|
}
|
|
111
|
-
rawstr << value2String(getValue());
|
|
112
112
|
return rawstr.str();
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
const std::string BinaryOPStmt::toString() const{
|
|
116
116
|
std::string str;
|
|
117
117
|
raw_string_ostream rawstr(str);
|
|
118
|
-
rawstr << "BinaryOPStmt: [" << getResID() << "<--(" << getOpVarID(0) << "
|
|
119
|
-
if (Options::
|
|
118
|
+
rawstr << "BinaryOPStmt: [Var" << getResID() << " <-- (Var" << getOpVarID(0) << " opcode" << getOpcode() << " Var" << getOpVarID(1) << ")]\t";
|
|
119
|
+
if (Options::ShowSVFIRValue) {
|
|
120
120
|
rawstr << "\n";
|
|
121
|
+
rawstr << value2String(getValue());
|
|
121
122
|
}
|
|
122
|
-
rawstr << value2String(getValue());
|
|
123
123
|
return rawstr.str();
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
const std::string UnaryOPStmt::toString() const{
|
|
127
127
|
std::string str;
|
|
128
128
|
raw_string_ostream rawstr(str);
|
|
129
|
-
rawstr << "UnaryOPStmt: [" << getResID() << "<--" << getOpVarID() << "]\t";
|
|
130
|
-
if (Options::
|
|
129
|
+
rawstr << "UnaryOPStmt: [Var" << getResID() << " <-- " << " opcode" << getOpcode() << " Var" << getOpVarID() << "]\t";
|
|
130
|
+
if (Options::ShowSVFIRValue) {
|
|
131
131
|
rawstr << "\n";
|
|
132
|
+
rawstr << value2String(getValue());
|
|
132
133
|
}
|
|
133
|
-
rawstr << value2String(getValue());
|
|
134
134
|
return rawstr.str();
|
|
135
135
|
}
|
|
136
136
|
|
|
@@ -138,13 +138,17 @@ const std::string BranchStmt::toString() const {
|
|
|
138
138
|
std::string str;
|
|
139
139
|
raw_string_ostream rawstr(str);
|
|
140
140
|
if(isConditional())
|
|
141
|
-
rawstr << "BranchStmt: [" << getCondition()->
|
|
141
|
+
rawstr << "BranchStmt: [Condition Var" << getCondition()->getId() << "]\t";
|
|
142
142
|
else
|
|
143
143
|
rawstr << "BranchStmt: [" << " Unconditional branch" << "]\t";
|
|
144
|
-
|
|
144
|
+
|
|
145
|
+
for(u32_t i = 0; i < getNumSuccessors(); i++)
|
|
146
|
+
rawstr << "Successor " << i << " ICFGNode" << getSuccessor(i)->getId() << "\n";
|
|
147
|
+
|
|
148
|
+
if (Options::ShowSVFIRValue) {
|
|
145
149
|
rawstr << "\n";
|
|
150
|
+
rawstr << value2String(getValue());
|
|
146
151
|
}
|
|
147
|
-
rawstr << value2String(getValue());
|
|
148
152
|
return rawstr.str();
|
|
149
153
|
}
|
|
150
154
|
|
|
@@ -152,99 +156,99 @@ const std::string BranchStmt::toString() const {
|
|
|
152
156
|
const std::string LoadStmt::toString() const{
|
|
153
157
|
std::string str;
|
|
154
158
|
raw_string_ostream rawstr(str);
|
|
155
|
-
rawstr << "LoadStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
156
|
-
if (Options::
|
|
159
|
+
rawstr << "LoadStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
160
|
+
if (Options::ShowSVFIRValue) {
|
|
157
161
|
rawstr << "\n";
|
|
162
|
+
rawstr << value2String(getValue());
|
|
158
163
|
}
|
|
159
|
-
rawstr << value2String(getValue());
|
|
160
164
|
return rawstr.str();
|
|
161
165
|
}
|
|
162
166
|
|
|
163
167
|
const std::string StoreStmt::toString() const{
|
|
164
168
|
std::string str;
|
|
165
169
|
raw_string_ostream rawstr(str);
|
|
166
|
-
rawstr << "StoreStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
167
|
-
if (Options::
|
|
170
|
+
rawstr << "StoreStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
171
|
+
if (Options::ShowSVFIRValue) {
|
|
168
172
|
rawstr << "\n";
|
|
173
|
+
rawstr << value2String(getValue());
|
|
169
174
|
}
|
|
170
|
-
rawstr << value2String(getValue());
|
|
171
175
|
return rawstr.str();
|
|
172
176
|
}
|
|
173
177
|
|
|
174
178
|
const std::string GepStmt::toString() const{
|
|
175
179
|
std::string str;
|
|
176
180
|
raw_string_ostream rawstr(str);
|
|
177
|
-
rawstr << "GepStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
178
|
-
if (Options::
|
|
181
|
+
rawstr << "GepStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
182
|
+
if (Options::ShowSVFIRValue) {
|
|
179
183
|
rawstr << "\n";
|
|
184
|
+
rawstr << value2String(getValue());
|
|
180
185
|
}
|
|
181
|
-
rawstr << value2String(getValue());
|
|
182
186
|
return rawstr.str();
|
|
183
187
|
}
|
|
184
188
|
|
|
185
189
|
const std::string NormalGepStmt::toString() const{
|
|
186
190
|
std::string str;
|
|
187
191
|
raw_string_ostream rawstr(str);
|
|
188
|
-
rawstr << "NormalGepStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
189
|
-
if (Options::
|
|
192
|
+
rawstr << "NormalGepStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
193
|
+
if (Options::ShowSVFIRValue) {
|
|
190
194
|
rawstr << "\n";
|
|
195
|
+
rawstr << value2String(getValue());
|
|
191
196
|
}
|
|
192
|
-
rawstr << value2String(getValue());
|
|
193
197
|
return rawstr.str();
|
|
194
198
|
}
|
|
195
199
|
|
|
196
200
|
const std::string VariantGepStmt::toString() const{
|
|
197
201
|
std::string str;
|
|
198
202
|
raw_string_ostream rawstr(str);
|
|
199
|
-
rawstr << "VariantGepStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
200
|
-
if (Options::
|
|
203
|
+
rawstr << "VariantGepStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
204
|
+
if (Options::ShowSVFIRValue) {
|
|
201
205
|
rawstr << "\n";
|
|
206
|
+
rawstr << value2String(getValue());
|
|
202
207
|
}
|
|
203
|
-
rawstr << value2String(getValue());
|
|
204
208
|
return rawstr.str();
|
|
205
209
|
}
|
|
206
210
|
|
|
207
211
|
const std::string CallPE::toString() const{
|
|
208
212
|
std::string str;
|
|
209
213
|
raw_string_ostream rawstr(str);
|
|
210
|
-
rawstr << "CallPE: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
211
|
-
if (Options::
|
|
214
|
+
rawstr << "CallPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
215
|
+
if (Options::ShowSVFIRValue) {
|
|
212
216
|
rawstr << "\n";
|
|
217
|
+
rawstr << value2String(getValue());
|
|
213
218
|
}
|
|
214
|
-
rawstr << value2String(getValue());
|
|
215
219
|
return rawstr.str();
|
|
216
220
|
}
|
|
217
221
|
|
|
218
222
|
const std::string RetPE::toString() const{
|
|
219
223
|
std::string str;
|
|
220
224
|
raw_string_ostream rawstr(str);
|
|
221
|
-
rawstr << "RetPE: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
222
|
-
if (Options::
|
|
225
|
+
rawstr << "RetPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
226
|
+
if (Options::ShowSVFIRValue) {
|
|
223
227
|
rawstr << "\n";
|
|
228
|
+
rawstr << value2String(getValue());
|
|
224
229
|
}
|
|
225
|
-
rawstr << value2String(getValue());
|
|
226
230
|
return rawstr.str();
|
|
227
231
|
}
|
|
228
232
|
|
|
229
233
|
const std::string TDForkPE::toString() const{
|
|
230
234
|
std::string str;
|
|
231
235
|
raw_string_ostream rawstr(str);
|
|
232
|
-
rawstr << "TDForkPE: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
233
|
-
if (Options::
|
|
236
|
+
rawstr << "TDForkPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
237
|
+
if (Options::ShowSVFIRValue) {
|
|
234
238
|
rawstr << "\n";
|
|
239
|
+
rawstr << value2String(getValue());
|
|
235
240
|
}
|
|
236
|
-
rawstr << value2String(getValue());
|
|
237
241
|
return rawstr.str();
|
|
238
242
|
}
|
|
239
243
|
|
|
240
244
|
const std::string TDJoinPE::toString() const{
|
|
241
245
|
std::string str;
|
|
242
246
|
raw_string_ostream rawstr(str);
|
|
243
|
-
rawstr << "TDJoinPE: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
244
|
-
if (Options::
|
|
247
|
+
rawstr << "TDJoinPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
248
|
+
if (Options::ShowSVFIRValue) {
|
|
245
249
|
rawstr << "\n";
|
|
250
|
+
rawstr << value2String(getValue());
|
|
246
251
|
}
|
|
247
|
-
rawstr << value2String(getValue());
|
|
248
252
|
return rawstr.str();
|
|
249
253
|
}
|
|
250
254
|
|