svf-tools 1.0.317 → 1.0.321
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/AndersenStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/Andersen_8cpp.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +138 -0
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +178 -0
- package/SVF-doxygen/html/html/CHGBuilder_8h.html +95 -0
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +109 -0
- package/SVF-doxygen/html/html/CHG_8cpp.html +10 -64
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +31 -108
- package/SVF-doxygen/html/html/CHG_8h.html +9 -3
- package/SVF-doxygen/html/html/CHG_8h_source.html +82 -76
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +37 -33
- package/SVF-doxygen/html/html/ConsG_8h_source.html +32 -32
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8h.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8h_source.html +8 -8
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +12 -12
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ExternalPAG_8cpp.html +1 -1
- package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +4 -4
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +6 -6
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -21
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +37 -40
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +5 -5
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +1 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +30 -33
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +31 -31
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +48 -48
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +36 -36
- package/SVF-doxygen/html/html/SVFG_8h_source.html +25 -25
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp.html +0 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -6
- package/SVF-doxygen/html/html/SVFIRBuilder_8h.html +1 -7
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +90 -85
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +70 -62
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +168 -182
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +39 -23
- package/SVF-doxygen/html/html/SVFStatements_8h.html +6 -0
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +146 -94
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/VFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h.html +2 -0
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +143 -126
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +136 -129
- package/SVF-doxygen/html/html/VFG_8h_source.html +144 -133
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/annotated.html +265 -261
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +75 -74
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +75 -74
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +73 -72
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +31 -30
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +75 -74
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +35 -34
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AddrPE-members.html +42 -39
- package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +27 -22
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +77 -76
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode-members.html +69 -68
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +30 -29
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE-members.html +49 -28
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +295 -34
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode-members.html +76 -75
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +12 -11
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +70 -22
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +633 -89
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode-members.html +164 -0
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +694 -0
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CHEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHEdge.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder-members.html +100 -0
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +777 -0
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +31 -46
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +103 -651
- package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +54 -54
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +48 -45
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +33 -28
- package/SVF-doxygen/html/html/classSVF_1_1CmpPE-members.html +49 -28
- package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +295 -34
- package/SVF-doxygen/html/html/classSVF_1_1CmpPE.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode-members.html +79 -78
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +13 -12
- package/SVF-doxygen/html/html/classSVF_1_1CommonCHGraph.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +90 -86
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CopyPE-members.html +45 -42
- package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +27 -22
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +80 -79
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +11 -10
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode-members.html +72 -71
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +76 -75
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +76 -75
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode-members.html +76 -75
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +38 -37
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode-members.html +79 -78
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +38 -37
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +8 -7
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepPE-members.html +45 -42
- package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +22 -17
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +80 -79
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +36 -37
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +149 -163
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +88 -87
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +86 -85
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +46 -45
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +85 -84
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode-members.html +84 -83
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +33 -32
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LoadPE-members.html +45 -42
- package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +27 -22
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +80 -79
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +11 -10
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode-members.html +70 -69
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode-members.html +81 -80
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +143 -0
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +669 -0
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE-members.html +47 -44
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +34 -29
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode-members.html +66 -65
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +37 -36
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +17 -16
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode-members.html +77 -76
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +44 -43
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1PhiPE-members.html +153 -0
- package/SVF-doxygen/html/html/classSVF_1_1PhiPE.html +717 -0
- package/SVF-doxygen/html/html/classSVF_1_1PhiPE.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +77 -79
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +48 -45
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +33 -28
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +90 -86
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +81 -71
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +105 -101
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +149 -138
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +106 -119
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +621 -1090
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +14 -12
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +401 -288
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +41 -35
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +174 -37
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +76 -75
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +14 -13
- package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StorePE-members.html +45 -42
- package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +27 -22
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +80 -79
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +11 -10
- package/SVF-doxygen/html/html/classSVF_1_1TCTEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +49 -46
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +22 -17
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +49 -46
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +22 -17
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE-members.html +56 -43
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +329 -30
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode-members.html +34 -32
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +63 -30
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +52 -48
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +515 -441
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode-members.html +65 -64
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +22 -18
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE-members.html +47 -44
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +28 -23
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +8 -8
- package/SVF-doxygen/html/html/classes.html +95 -94
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/dir_1870ebf480d659cc38d2dd7ac3aa8993.html +2 -2
- package/SVF-doxygen/html/html/dir_5840dc76920ee0f379cd88b55fa041fd.html +1 -1
- package/SVF-doxygen/html/html/dir_770a542efe75a1b68c109cb4e4290224.html +1 -3
- package/SVF-doxygen/html/html/dir_fa02919a30fec2d2c2d591b4d920d648.html +2 -2
- package/SVF-doxygen/html/html/files.html +18 -19
- package/SVF-doxygen/html/html/functions_0x7e.html +0 -3
- package/SVF-doxygen/html/html/functions_a.html +35 -36
- package/SVF-doxygen/html/html/functions_b.html +24 -17
- package/SVF-doxygen/html/html/functions_c.html +44 -43
- package/SVF-doxygen/html/html/functions_d.html +0 -3
- package/SVF-doxygen/html/html/functions_e.html +7 -9
- package/SVF-doxygen/html/html/functions_eval_b.html +4 -0
- package/SVF-doxygen/html/html/functions_eval_p.html +3 -0
- package/SVF-doxygen/html/html/functions_f.html +6 -15
- package/SVF-doxygen/html/html/functions_func.html +40 -38
- package/SVF-doxygen/html/html/functions_func_0x7e.html +0 -3
- package/SVF-doxygen/html/html/functions_func_b.html +14 -8
- package/SVF-doxygen/html/html/functions_func_c.html +32 -28
- package/SVF-doxygen/html/html/functions_func_d.html +0 -3
- package/SVF-doxygen/html/html/functions_func_e.html +0 -3
- package/SVF-doxygen/html/html/functions_func_g.html +92 -60
- package/SVF-doxygen/html/html/functions_func_h.html +3 -9
- package/SVF-doxygen/html/html/functions_func_i.html +12 -16
- package/SVF-doxygen/html/html/functions_func_m.html +6 -0
- package/SVF-doxygen/html/html/functions_func_o.html +11 -4
- package/SVF-doxygen/html/html/functions_func_p.html +6 -6
- package/SVF-doxygen/html/html/functions_func_r.html +3 -4
- package/SVF-doxygen/html/html/functions_func_s.html +6 -9
- package/SVF-doxygen/html/html/functions_func_t.html +14 -11
- package/SVF-doxygen/html/html/functions_g.html +91 -59
- package/SVF-doxygen/html/html/functions_h.html +2 -11
- package/SVF-doxygen/html/html/functions_i.html +12 -16
- package/SVF-doxygen/html/html/functions_l.html +6 -6
- package/SVF-doxygen/html/html/functions_m.html +9 -0
- package/SVF-doxygen/html/html/functions_n.html +6 -6
- package/SVF-doxygen/html/html/functions_o.html +31 -16
- package/SVF-doxygen/html/html/functions_p.html +23 -18
- package/SVF-doxygen/html/html/functions_r.html +4 -8
- package/SVF-doxygen/html/html/functions_rela.html +3 -0
- package/SVF-doxygen/html/html/functions_s.html +14 -16
- package/SVF-doxygen/html/html/functions_t.html +18 -15
- package/SVF-doxygen/html/html/functions_type_b.html +0 -6
- package/SVF-doxygen/html/html/functions_type_c.html +2 -7
- package/SVF-doxygen/html/html/functions_type_o.html +3 -0
- package/SVF-doxygen/html/html/functions_type_p.html +4 -1
- package/SVF-doxygen/html/html/functions_type_u.html +0 -6
- package/SVF-doxygen/html/html/functions_type_v.html +3 -0
- package/SVF-doxygen/html/html/functions_type_w.html +1 -0
- package/SVF-doxygen/html/html/functions_u.html +4 -13
- package/SVF-doxygen/html/html/functions_v.html +8 -5
- package/SVF-doxygen/html/html/functions_vars_a.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_b.html +6 -3
- package/SVF-doxygen/html/html/functions_vars_c.html +5 -4
- package/SVF-doxygen/html/html/functions_vars_e.html +1 -2
- package/SVF-doxygen/html/html/functions_vars_f.html +0 -9
- package/SVF-doxygen/html/html/functions_vars_h.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_m.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_o.html +8 -3
- package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_r.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_u.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_v.html +3 -3
- package/SVF-doxygen/html/html/functions_w.html +9 -4
- package/SVF-doxygen/html/html/globals_d.html +0 -4
- package/SVF-doxygen/html/html/globals_e.html +6 -9
- package/SVF-doxygen/html/html/globals_func_d.html +0 -3
- package/SVF-doxygen/html/html/globals_func_e.html +6 -9
- package/SVF-doxygen/html/html/globals_func_g.html +2 -5
- package/SVF-doxygen/html/html/globals_g.html +0 -3
- package/SVF-doxygen/html/html/globals_o.html +0 -9
- package/SVF-doxygen/html/html/globals_p.html +1 -1
- package/SVF-doxygen/html/html/globals_r.html +3 -3
- package/SVF-doxygen/html/html/globals_s.html +3 -3
- package/SVF-doxygen/html/html/globals_vars.html +2 -5
- package/SVF-doxygen/html/html/globals_z.html +1 -1
- package/SVF-doxygen/html/html/hierarchy.html +105 -101
- package/SVF-doxygen/html/html/menudata.js +0 -1
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +27 -37
- package/SVF-doxygen/html/html/namespacemembers_p.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type_p.html +0 -3
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +20 -21
- package/SVF-doxygen/html/html/search/all_10.js +11 -10
- package/SVF-doxygen/html/html/search/all_12.js +6 -7
- package/SVF-doxygen/html/html/search/all_13.js +13 -13
- package/SVF-doxygen/html/html/search/all_14.js +3 -3
- package/SVF-doxygen/html/html/search/all_15.js +2 -4
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_1a.js +1 -1
- package/SVF-doxygen/html/html/search/all_1b.js +0 -1
- package/SVF-doxygen/html/html/search/all_2.js +13 -10
- package/SVF-doxygen/html/html/search/all_3.js +15 -15
- package/SVF-doxygen/html/html/search/all_4.js +2 -4
- package/SVF-doxygen/html/html/search/all_5.js +3 -6
- package/SVF-doxygen/html/html/search/all_6.js +1 -4
- package/SVF-doxygen/html/html/search/all_7.js +34 -34
- package/SVF-doxygen/html/html/search/all_8.js +2 -5
- package/SVF-doxygen/html/html/search/all_9.js +4 -5
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_d.js +6 -3
- package/SVF-doxygen/html/html/search/all_e.js +6 -6
- package/SVF-doxygen/html/html/search/all_f.js +7 -8
- package/SVF-doxygen/html/html/search/classes_1.js +2 -0
- package/SVF-doxygen/html/html/search/classes_2.js +1 -0
- package/SVF-doxygen/html/html/search/classes_4.js +1 -2
- package/SVF-doxygen/html/html/search/classes_a.js +1 -0
- package/SVF-doxygen/html/html/search/classes_d.js +1 -0
- package/SVF-doxygen/html/html/search/enumvalues_1.js +1 -0
- package/SVF-doxygen/html/html/search/enumvalues_d.js +1 -0
- package/SVF-doxygen/html/html/search/files_2.js +2 -1
- package/SVF-doxygen/html/html/search/files_4.js +1 -3
- package/SVF-doxygen/html/html/search/functions_0.js +20 -20
- package/SVF-doxygen/html/html/search/functions_1.js +10 -8
- package/SVF-doxygen/html/html/search/functions_10.js +2 -3
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +1 -1
- package/SVF-doxygen/html/html/search/functions_16.js +0 -1
- package/SVF-doxygen/html/html/search/functions_2.js +8 -8
- package/SVF-doxygen/html/html/search/functions_3.js +2 -4
- package/SVF-doxygen/html/html/search/functions_4.js +0 -2
- package/SVF-doxygen/html/html/search/functions_6.js +34 -34
- package/SVF-doxygen/html/html/search/functions_7.js +2 -4
- package/SVF-doxygen/html/html/search/functions_8.js +3 -4
- package/SVF-doxygen/html/html/search/functions_b.js +2 -0
- package/SVF-doxygen/html/html/search/functions_d.js +4 -6
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/functions_f.js +2 -2
- package/SVF-doxygen/html/html/search/related_0.js +1 -2
- package/SVF-doxygen/html/html/search/related_1.js +2 -1
- package/SVF-doxygen/html/html/search/related_2.js +1 -1
- package/SVF-doxygen/html/html/search/related_3.js +1 -2
- package/SVF-doxygen/html/html/search/related_4.js +2 -1
- package/SVF-doxygen/html/html/search/related_5.js +1 -4
- package/SVF-doxygen/html/html/search/related_6.js +4 -1
- package/SVF-doxygen/html/html/search/related_7.js +1 -5
- package/SVF-doxygen/html/html/search/related_8.js +5 -2
- package/SVF-doxygen/html/html/search/related_9.js +2 -1
- package/SVF-doxygen/html/html/search/related_a.html +26 -0
- package/SVF-doxygen/html/html/search/related_a.js +4 -0
- package/SVF-doxygen/html/html/search/searchdata.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_1.js +0 -2
- package/SVF-doxygen/html/html/search/typedefs_13.js +0 -2
- package/SVF-doxygen/html/html/search/typedefs_14.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_15.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -3
- package/SVF-doxygen/html/html/search/typedefs_d.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_e.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_f.js +2 -2
- package/SVF-doxygen/html/html/search/variables_1.js +0 -1
- package/SVF-doxygen/html/html/search/variables_10.js +2 -1
- package/SVF-doxygen/html/html/search/variables_12.js +0 -1
- package/SVF-doxygen/html/html/search/variables_13.js +2 -1
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_15.js +1 -2
- package/SVF-doxygen/html/html/search/variables_16.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1a.js +1 -1
- package/SVF-doxygen/html/html/search/variables_2.js +2 -1
- package/SVF-doxygen/html/html/search/variables_3.js +2 -2
- package/SVF-doxygen/html/html/search/variables_4.js +0 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +1 -4
- package/SVF-doxygen/html/html/search/variables_8.js +0 -1
- package/SVF-doxygen/html/html/search/variables_b.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +2 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/search/variables_f.js +2 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +14 -14
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +16 -16
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +18 -18
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +11 -11
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +29 -29
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHNode_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +5 -6
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/{SVF-FE → Graphs}/CHG.h +37 -20
- package/include/Graphs/GenericGraph.h +1 -1
- package/include/Graphs/IRGraph.h +6 -15
- package/include/Graphs/SVFGOPT.h +3 -2
- package/include/Graphs/VFG.h +42 -41
- package/include/Graphs/VFGNode.h +60 -7
- package/include/MemoryModel/SVFIR.h +93 -159
- package/include/MemoryModel/SVFStatements.h +253 -21
- package/include/SVF-FE/CHGBuilder.h +69 -0
- package/include/SVF-FE/DCHG.h +1 -1
- package/include/SVF-FE/SVFIRBuilder.h +21 -8
- package/lib/Graphs/CHG.cpp +280 -0
- package/lib/Graphs/ConsG.cpp +9 -0
- package/lib/Graphs/IRGraph.cpp +23 -8
- package/lib/Graphs/VFG.cpp +45 -19
- package/lib/MSSA/SVFGBuilder.cpp +3 -2
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +9 -3
- package/lib/MemoryModel/PointerAnalysis.cpp +3 -5
- package/lib/MemoryModel/SVFIR.cpp +68 -12
- package/lib/MemoryModel/SVFStatements.cpp +65 -4
- package/lib/SVF-FE/{CHG.cpp → CHGBuilder.cpp} +82 -324
- package/lib/SVF-FE/SVFIRBuilder.cpp +58 -57
- package/lib/WPA/Andersen.cpp +1 -1
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/package.json +1 -1
- package/tools/Example/svf-ex.cpp +1 -1
- package/include/Graphs/ExternalPAG.h +0 -147
- package/include/SVF-FE/CommonCHG.h +0 -49
- package/lib/Graphs/ExternalPAG.cpp +0 -623
|
@@ -53,7 +53,7 @@ public:
|
|
|
53
53
|
/// ThreadFork/ThreadJoin is to model parameter passings between thread spawners and spawnees.
|
|
54
54
|
enum PEDGEK
|
|
55
55
|
{
|
|
56
|
-
Addr, Copy, Store, Load, Call, Ret, NormalGep, VariantGep,
|
|
56
|
+
Addr, Copy, Store, Load, Call, Ret, NormalGep, VariantGep, Phi, Cmp, BinaryOp, UnaryOp, Branch, ThreadFork, ThreadJoin
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
private:
|
|
@@ -87,11 +87,11 @@ public:
|
|
|
87
87
|
edge->getEdgeKind() == SVFStmt::Ret ||
|
|
88
88
|
edge->getEdgeKind() == SVFStmt::NormalGep ||
|
|
89
89
|
edge->getEdgeKind() == SVFStmt::VariantGep ||
|
|
90
|
-
edge->getEdgeKind() == SVFStmt::ThreadFork ||
|
|
91
|
-
edge->getEdgeKind() == SVFStmt::ThreadJoin ||
|
|
92
90
|
edge->getEdgeKind() == SVFStmt::Cmp ||
|
|
93
91
|
edge->getEdgeKind() == SVFStmt::BinaryOp ||
|
|
94
|
-
edge->getEdgeKind() == SVFStmt::UnaryOp
|
|
92
|
+
edge->getEdgeKind() == SVFStmt::UnaryOp ||
|
|
93
|
+
edge->getEdgeKind() == SVFStmt::ThreadFork ||
|
|
94
|
+
edge->getEdgeKind() == SVFStmt::ThreadJoin;
|
|
95
95
|
}
|
|
96
96
|
///@}
|
|
97
97
|
|
|
@@ -135,6 +135,15 @@ public:
|
|
|
135
135
|
}
|
|
136
136
|
//@}
|
|
137
137
|
|
|
138
|
+
/// Compute the unique edgeFlag value from edge kind and second variable operand for MultiOpndStmt.
|
|
139
|
+
static inline GEdgeFlag makeEdgeFlagWithAddionalOpnd(GEdgeKind k, const SVFVar* var)
|
|
140
|
+
{
|
|
141
|
+
Var2LabelMap::const_iterator iter = var2LabelMap.find(var);
|
|
142
|
+
u64_t label = (iter != var2LabelMap.end()) ?
|
|
143
|
+
iter->second : multiOpndLabelCounter++;
|
|
144
|
+
return (label << EdgeKindMaskBits) | k;
|
|
145
|
+
}
|
|
146
|
+
|
|
138
147
|
/// Compute the unique edgeFlag value from edge kind and call site Instruction.
|
|
139
148
|
static inline GEdgeFlag makeEdgeFlagWithCallInst(GEdgeKind k, const ICFGNode* cs)
|
|
140
149
|
{
|
|
@@ -172,13 +181,15 @@ public:
|
|
|
172
181
|
|
|
173
182
|
private:
|
|
174
183
|
typedef Map<const ICFGNode*, u32_t> Inst2LabelMap;
|
|
184
|
+
typedef Map<const SVFVar*, u32_t> Var2LabelMap;
|
|
175
185
|
static Inst2LabelMap inst2LabelMap; ///< Call site Instruction to label map
|
|
186
|
+
static Var2LabelMap var2LabelMap; ///< Second operand of MultiOpndStmt to label map
|
|
176
187
|
static u64_t callEdgeLabelCounter; ///< Call site Instruction counter
|
|
177
188
|
static u64_t storeEdgeLabelCounter; ///< Store Instruction counter
|
|
189
|
+
static u64_t multiOpndLabelCounter; ///< MultiOpndStmt counter
|
|
178
190
|
};
|
|
179
191
|
|
|
180
192
|
|
|
181
|
-
|
|
182
193
|
/*!
|
|
183
194
|
* Copy edge
|
|
184
195
|
*/
|
|
@@ -210,7 +221,7 @@ public:
|
|
|
210
221
|
{
|
|
211
222
|
}
|
|
212
223
|
|
|
213
|
-
virtual const std::string toString() const;
|
|
224
|
+
virtual const std::string toString() const override;
|
|
214
225
|
};
|
|
215
226
|
|
|
216
227
|
|
|
@@ -245,19 +256,133 @@ public:
|
|
|
245
256
|
{
|
|
246
257
|
}
|
|
247
258
|
|
|
248
|
-
virtual const std::string toString() const;
|
|
259
|
+
virtual const std::string toString() const override;
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
class MultiOpndStmt : public SVFStmt{
|
|
263
|
+
public:
|
|
264
|
+
typedef std::vector<SVFVar*> OPVars;
|
|
265
|
+
protected:
|
|
266
|
+
OPVars opVars;
|
|
267
|
+
public:
|
|
268
|
+
/// Constructor, only used by subclassess but not external users
|
|
269
|
+
MultiOpndStmt(SVFVar* r, const OPVars& opnds, GEdgeFlag k): SVFStmt(opnds.at(0), r, k), opVars(opnds)
|
|
270
|
+
{
|
|
271
|
+
}
|
|
272
|
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
273
|
+
//@{
|
|
274
|
+
static inline bool classof(const MultiOpndStmt *)
|
|
275
|
+
{
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
static inline bool classof(const SVFStmt *node)
|
|
279
|
+
{
|
|
280
|
+
return node->getEdgeKind() == Phi ||
|
|
281
|
+
node->getEdgeKind() == BinaryOp ||
|
|
282
|
+
node->getEdgeKind() == Cmp;
|
|
283
|
+
}
|
|
284
|
+
static inline bool classof(const GenericPAGEdgeTy *node)
|
|
285
|
+
{
|
|
286
|
+
return node->getEdgeKind() == Phi ||
|
|
287
|
+
node->getEdgeKind() == BinaryOp ||
|
|
288
|
+
node->getEdgeKind() == Cmp;
|
|
289
|
+
}
|
|
290
|
+
//@}
|
|
291
|
+
/// Operands and result at a BinaryNode e.g., p = q + r, `p` is resVar and `r` is OpVar
|
|
292
|
+
//@{
|
|
293
|
+
/// Operand SVFVars
|
|
294
|
+
inline const SVFVar* getOpVar(u32_t pos) const
|
|
295
|
+
{
|
|
296
|
+
return opVars.at(pos);
|
|
297
|
+
}
|
|
298
|
+
/// Result SVFVar
|
|
299
|
+
inline const SVFVar* getRes() const
|
|
300
|
+
{
|
|
301
|
+
return getDstNode();
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
NodeID getOpVarID(u32_t pos) const;
|
|
305
|
+
NodeID getResID() const;
|
|
306
|
+
|
|
307
|
+
inline u32_t getOpVarNum() const
|
|
308
|
+
{
|
|
309
|
+
return opVars.size();
|
|
310
|
+
}
|
|
311
|
+
inline const OPVars& getOpndVars() const{
|
|
312
|
+
return opVars;
|
|
313
|
+
}
|
|
314
|
+
inline OPVars::const_iterator opVarBegin() const
|
|
315
|
+
{
|
|
316
|
+
return opVars.begin();
|
|
317
|
+
}
|
|
318
|
+
inline OPVars::const_iterator opVerEnd() const
|
|
319
|
+
{
|
|
320
|
+
return opVars.end();
|
|
321
|
+
}
|
|
322
|
+
//@}
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
/*!
|
|
326
|
+
* Phi instruction edge
|
|
327
|
+
*/
|
|
328
|
+
class PhiPE: public MultiOpndStmt
|
|
329
|
+
{
|
|
330
|
+
private:
|
|
331
|
+
PhiPE(); ///< place holder
|
|
332
|
+
PhiPE(const PhiPE &); ///< place holder
|
|
333
|
+
void operator=(const PhiPE &); ///< place holder
|
|
334
|
+
SVFVar* getSrcNode(); ///< place holder, not allowed since this SVFStmt has multiple operands but not a single source
|
|
335
|
+
SVFVar* getDstNode(); ///< place holder, use getRes() instead
|
|
336
|
+
SVFVar* getSrcID(); ///< place holder, use getOpVarID(pos) instead
|
|
337
|
+
SVFVar* getDstID(); ///< place holder, use getResID() instead
|
|
338
|
+
|
|
339
|
+
public:
|
|
340
|
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
341
|
+
//@{
|
|
342
|
+
static inline bool classof(const PhiPE *)
|
|
343
|
+
{
|
|
344
|
+
return true;
|
|
345
|
+
}
|
|
346
|
+
static inline bool classof(const SVFStmt *edge)
|
|
347
|
+
{
|
|
348
|
+
return edge->getEdgeKind() == SVFStmt::Phi;
|
|
349
|
+
}
|
|
350
|
+
static inline bool classof(const MultiOpndStmt *edge)
|
|
351
|
+
{
|
|
352
|
+
return edge->getEdgeKind() == SVFStmt::Phi;
|
|
353
|
+
}
|
|
354
|
+
static inline bool classof(const GenericPAGEdgeTy *edge)
|
|
355
|
+
{
|
|
356
|
+
return edge->getEdgeKind() == SVFStmt::Phi;
|
|
357
|
+
}
|
|
358
|
+
//@}
|
|
359
|
+
|
|
360
|
+
/// constructor
|
|
361
|
+
PhiPE(SVFVar* s, const OPVars& opnds) : MultiOpndStmt(s,opnds,SVFStmt::Phi)
|
|
362
|
+
{
|
|
363
|
+
}
|
|
364
|
+
void addOpVar(SVFVar* op){
|
|
365
|
+
opVars.push_back(op);
|
|
366
|
+
}
|
|
367
|
+
virtual const std::string toString() const override;
|
|
249
368
|
};
|
|
250
369
|
|
|
251
370
|
|
|
252
371
|
/*!
|
|
253
372
|
* Compare instruction edge
|
|
254
373
|
*/
|
|
255
|
-
class CmpPE: public
|
|
374
|
+
class CmpPE: public MultiOpndStmt
|
|
256
375
|
{
|
|
257
376
|
private:
|
|
258
377
|
CmpPE(); ///< place holder
|
|
259
378
|
CmpPE(const CmpPE &); ///< place holder
|
|
260
379
|
void operator=(const CmpPE &); ///< place holder
|
|
380
|
+
SVFVar* getSrcNode(); ///< place holder, not allowed since this SVFStmt has multiple operands but not a single source
|
|
381
|
+
SVFVar* getDstNode(); ///< place holder, use getRes() instead
|
|
382
|
+
SVFVar* getSrcID(); ///< place holder, use getOpVarID(pos) instead
|
|
383
|
+
SVFVar* getDstID(); ///< place holder, use getResID() instead
|
|
384
|
+
|
|
385
|
+
u32_t opcode;
|
|
261
386
|
public:
|
|
262
387
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
263
388
|
//@{
|
|
@@ -269,6 +394,10 @@ public:
|
|
|
269
394
|
{
|
|
270
395
|
return edge->getEdgeKind() == SVFStmt::Cmp;
|
|
271
396
|
}
|
|
397
|
+
static inline bool classof(const MultiOpndStmt *edge)
|
|
398
|
+
{
|
|
399
|
+
return edge->getEdgeKind() == SVFStmt::Cmp;
|
|
400
|
+
}
|
|
272
401
|
static inline bool classof(const GenericPAGEdgeTy *edge)
|
|
273
402
|
{
|
|
274
403
|
return edge->getEdgeKind() == SVFStmt::Cmp;
|
|
@@ -276,23 +405,35 @@ public:
|
|
|
276
405
|
//@}
|
|
277
406
|
|
|
278
407
|
/// constructor
|
|
279
|
-
CmpPE(SVFVar* s,
|
|
408
|
+
CmpPE(SVFVar* s, const OPVars& opnds, u32_t oc) : MultiOpndStmt(s,opnds,SVFStmt::Cmp), opcode(oc)
|
|
280
409
|
{
|
|
281
410
|
}
|
|
282
411
|
|
|
283
|
-
|
|
412
|
+
u32_t getOpcode() const
|
|
413
|
+
{
|
|
414
|
+
return opcode;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
virtual const std::string toString() const override;
|
|
284
418
|
};
|
|
285
419
|
|
|
286
420
|
|
|
287
421
|
/*!
|
|
288
422
|
* Binary instruction edge
|
|
289
423
|
*/
|
|
290
|
-
class BinaryOPPE: public
|
|
424
|
+
class BinaryOPPE: public MultiOpndStmt
|
|
291
425
|
{
|
|
292
426
|
private:
|
|
293
427
|
BinaryOPPE(); ///< place holder
|
|
294
428
|
BinaryOPPE(const BinaryOPPE &); ///< place holder
|
|
295
429
|
void operator=(const BinaryOPPE &); ///< place holder
|
|
430
|
+
SVFVar* getSrcNode(); ///< place holder, not allowed since this SVFStmt has multiple operands but not a single source
|
|
431
|
+
SVFVar* getDstNode(); ///< place holder, use getRes() instead
|
|
432
|
+
SVFVar* getSrcID(); ///< place holder, use getOpVarID(pos) instead
|
|
433
|
+
SVFVar* getDstID(); ///< place holder, use getResID() instead
|
|
434
|
+
|
|
435
|
+
u32_t opcode;
|
|
436
|
+
|
|
296
437
|
public:
|
|
297
438
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
298
439
|
//@{
|
|
@@ -304,6 +445,10 @@ public:
|
|
|
304
445
|
{
|
|
305
446
|
return edge->getEdgeKind() == SVFStmt::BinaryOp;
|
|
306
447
|
}
|
|
448
|
+
static inline bool classof(const MultiOpndStmt *edge)
|
|
449
|
+
{
|
|
450
|
+
return edge->getEdgeKind() == SVFStmt::BinaryOp;
|
|
451
|
+
}
|
|
307
452
|
static inline bool classof(const GenericPAGEdgeTy *edge)
|
|
308
453
|
{
|
|
309
454
|
return edge->getEdgeKind() == SVFStmt::BinaryOp;
|
|
@@ -311,11 +456,16 @@ public:
|
|
|
311
456
|
//@}
|
|
312
457
|
|
|
313
458
|
/// constructor
|
|
314
|
-
BinaryOPPE(SVFVar* s,
|
|
459
|
+
BinaryOPPE(SVFVar* s, const OPVars& opnds, u32_t oc) : MultiOpndStmt(s,opnds,SVFStmt::BinaryOp), opcode(oc)
|
|
315
460
|
{
|
|
316
461
|
}
|
|
317
462
|
|
|
318
|
-
|
|
463
|
+
u32_t getOpcode() const
|
|
464
|
+
{
|
|
465
|
+
return opcode;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
virtual const std::string toString() const override;
|
|
319
469
|
};
|
|
320
470
|
|
|
321
471
|
/*!
|
|
@@ -327,6 +477,12 @@ private:
|
|
|
327
477
|
UnaryOPPE(); ///< place holder
|
|
328
478
|
UnaryOPPE(const UnaryOPPE &); ///< place holder
|
|
329
479
|
void operator=(const UnaryOPPE &); ///< place holder
|
|
480
|
+
SVFVar* getSrcNode(); ///< place holder, use getOpVar() instead
|
|
481
|
+
SVFVar* getDstNode(); ///< place holder, use getRes() instead
|
|
482
|
+
SVFVar* getSrcID(); ///< place holder, use getOpVarID() instead
|
|
483
|
+
SVFVar* getDstID(); ///< place holder, use getResID() instead
|
|
484
|
+
|
|
485
|
+
u32_t opcode;
|
|
330
486
|
public:
|
|
331
487
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
332
488
|
//@{
|
|
@@ -345,14 +501,90 @@ public:
|
|
|
345
501
|
//@}
|
|
346
502
|
|
|
347
503
|
/// constructor
|
|
348
|
-
UnaryOPPE(SVFVar* s, SVFVar* d) : SVFStmt(s,d,SVFStmt::UnaryOp)
|
|
504
|
+
UnaryOPPE(SVFVar* s, SVFVar* d, u32_t oc) : SVFStmt(s,d,SVFStmt::UnaryOp), opcode(oc)
|
|
349
505
|
{
|
|
350
506
|
}
|
|
351
507
|
|
|
352
|
-
|
|
508
|
+
u32_t getOpcode() const
|
|
509
|
+
{
|
|
510
|
+
return opcode;
|
|
511
|
+
}
|
|
512
|
+
inline const SVFVar* getOpVar() const{
|
|
513
|
+
return SVFStmt::getSrcNode();
|
|
514
|
+
}
|
|
515
|
+
inline const SVFVar* getRes() const{
|
|
516
|
+
return SVFStmt::getDstNode();
|
|
517
|
+
}
|
|
518
|
+
NodeID getOpVarID() const;
|
|
519
|
+
NodeID getResID() const;
|
|
520
|
+
|
|
521
|
+
virtual const std::string toString() const override;
|
|
353
522
|
};
|
|
354
523
|
|
|
355
524
|
|
|
525
|
+
/*!
|
|
526
|
+
* Branch statements including if/else and switch
|
|
527
|
+
*/
|
|
528
|
+
class BranchStmt: public SVFStmt
|
|
529
|
+
{
|
|
530
|
+
private:
|
|
531
|
+
BranchStmt(); ///< place holder
|
|
532
|
+
BranchStmt(const BranchStmt &); ///< place holder
|
|
533
|
+
void operator=(const BranchStmt &); ///< place holder
|
|
534
|
+
SVFVar* getSrcNode(); ///< place holder, not allowed
|
|
535
|
+
SVFVar* getDstNode(); ///< place holder, not allowed
|
|
536
|
+
SVFVar* getSrcID(); ///< place holder, not allowed
|
|
537
|
+
SVFVar* getDstID(); ///< place holder, not allowed
|
|
538
|
+
|
|
539
|
+
std::vector<const ICFGNode*> successors;
|
|
540
|
+
const SVFVar* cond;
|
|
541
|
+
const SVFVar* brInst;
|
|
542
|
+
public:
|
|
543
|
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
544
|
+
//@{
|
|
545
|
+
static inline bool classof(const BranchStmt *)
|
|
546
|
+
{
|
|
547
|
+
return true;
|
|
548
|
+
}
|
|
549
|
+
static inline bool classof(const SVFStmt *edge)
|
|
550
|
+
{
|
|
551
|
+
return edge->getEdgeKind() == SVFStmt::Branch;
|
|
552
|
+
}
|
|
553
|
+
static inline bool classof(const GenericPAGEdgeTy *edge)
|
|
554
|
+
{
|
|
555
|
+
return edge->getEdgeKind() == SVFStmt::Branch;
|
|
556
|
+
}
|
|
557
|
+
//@}
|
|
558
|
+
|
|
559
|
+
/// constructor
|
|
560
|
+
BranchStmt(SVFVar* inst, SVFVar* c, const std::vector<const ICFGNode*>& succs) : SVFStmt(c,inst,SVFStmt::Branch), successors(succs), cond(c), brInst(inst)
|
|
561
|
+
{
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
/// The branch is unconditional if cond is a null value
|
|
565
|
+
bool isUnconditional() const;
|
|
566
|
+
/// The branch is conditional if cond is not a null value
|
|
567
|
+
bool isConditional() const;
|
|
568
|
+
/// Return the condition
|
|
569
|
+
const SVFVar* getCondition() const;
|
|
570
|
+
const SVFVar* getBranchInst() const{
|
|
571
|
+
return brInst;
|
|
572
|
+
}
|
|
573
|
+
/// Successors of this branch statement
|
|
574
|
+
///@{
|
|
575
|
+
u32_t getNumSuccessors() const{
|
|
576
|
+
return successors.size();
|
|
577
|
+
}
|
|
578
|
+
const std::vector<const ICFGNode*>& getSuccessors() const{
|
|
579
|
+
return successors;
|
|
580
|
+
}
|
|
581
|
+
const ICFGNode* getSuccessor (u32_t i) const{
|
|
582
|
+
return successors.at(i);
|
|
583
|
+
}
|
|
584
|
+
///@}
|
|
585
|
+
virtual const std::string toString() const override;
|
|
586
|
+
};
|
|
587
|
+
|
|
356
588
|
/*!
|
|
357
589
|
* Store edge
|
|
358
590
|
*/
|
|
@@ -386,7 +618,7 @@ public:
|
|
|
386
618
|
{
|
|
387
619
|
}
|
|
388
620
|
|
|
389
|
-
virtual const std::string toString() const;
|
|
621
|
+
virtual const std::string toString() const override;
|
|
390
622
|
};
|
|
391
623
|
|
|
392
624
|
|
|
@@ -422,7 +654,7 @@ public:
|
|
|
422
654
|
{
|
|
423
655
|
}
|
|
424
656
|
|
|
425
|
-
virtual const std::string toString() const;
|
|
657
|
+
virtual const std::string toString() const override;
|
|
426
658
|
};
|
|
427
659
|
|
|
428
660
|
|
|
@@ -513,7 +745,7 @@ public:
|
|
|
513
745
|
return ls;
|
|
514
746
|
}
|
|
515
747
|
|
|
516
|
-
virtual const std::string toString() const;
|
|
748
|
+
virtual const std::string toString() const override;
|
|
517
749
|
};
|
|
518
750
|
|
|
519
751
|
/*!
|
|
@@ -550,7 +782,7 @@ public:
|
|
|
550
782
|
/// constructor
|
|
551
783
|
VariantGepPE(SVFVar* s, SVFVar* d) : GepPE(s,d,SVFStmt::VariantGep) {}
|
|
552
784
|
|
|
553
|
-
virtual const std::string toString() const;
|
|
785
|
+
virtual const std::string toString() const override;
|
|
554
786
|
|
|
555
787
|
};
|
|
556
788
|
|
|
@@ -603,7 +835,7 @@ public:
|
|
|
603
835
|
}
|
|
604
836
|
//@}
|
|
605
837
|
|
|
606
|
-
virtual const std::string toString() const;
|
|
838
|
+
virtual const std::string toString() const override;
|
|
607
839
|
};
|
|
608
840
|
|
|
609
841
|
|
|
@@ -655,7 +887,7 @@ public:
|
|
|
655
887
|
}
|
|
656
888
|
//@}
|
|
657
889
|
|
|
658
|
-
virtual const std::string toString() const;
|
|
890
|
+
virtual const std::string toString() const override;
|
|
659
891
|
};
|
|
660
892
|
|
|
661
893
|
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
//===----- CHGBuiler.h -- Class hierarchy graph builder ---------------------------//
|
|
2
|
+
//
|
|
3
|
+
// SVF: Static Value-Flow Analysis
|
|
4
|
+
//
|
|
5
|
+
// Copyright (C) <2013-> <Yulei Sui>
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
// This program is free software: you can redistribute it and/or modify
|
|
9
|
+
// it under the terms of the GNU General Public License as published by
|
|
10
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
11
|
+
// (at your option) any later version.
|
|
12
|
+
|
|
13
|
+
// This program is distributed in the hope that it will be useful,
|
|
14
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
// GNU General Public License for more details.
|
|
17
|
+
|
|
18
|
+
// You should have received a copy of the GNU General Public License
|
|
19
|
+
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
+
//
|
|
21
|
+
//===----------------------------------------------------------------------===//
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
* CHGBuiler.h
|
|
25
|
+
*
|
|
26
|
+
* Created on: Jun 4, 2021
|
|
27
|
+
* Author: Yulei Sui
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
#include "Graphs/CHG.h"
|
|
31
|
+
|
|
32
|
+
namespace SVF{
|
|
33
|
+
|
|
34
|
+
class CHGBuilder{
|
|
35
|
+
|
|
36
|
+
private:
|
|
37
|
+
CHGraph* chg;
|
|
38
|
+
|
|
39
|
+
public:
|
|
40
|
+
typedef CHGraph::CHNodeSetTy CHNodeSetTy;
|
|
41
|
+
typedef CHGraph::WorkList WorkList;
|
|
42
|
+
|
|
43
|
+
CHGBuilder(CHGraph* c): chg(c)
|
|
44
|
+
{
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
void buildCHG();
|
|
48
|
+
void buildCHGNodes(const GlobalValue *V);
|
|
49
|
+
void buildCHGNodes(const SVFFunction* F);
|
|
50
|
+
void buildCHGEdges(const SVFFunction* F);
|
|
51
|
+
void buildInternalMaps();
|
|
52
|
+
void readInheritanceMetadataFromModule(const Module &M);
|
|
53
|
+
|
|
54
|
+
CHNode *createNode(const std::string name);
|
|
55
|
+
|
|
56
|
+
void connectInheritEdgeViaCall(const SVFFunction* caller, CallSite cs);
|
|
57
|
+
void connectInheritEdgeViaStore(const SVFFunction* caller, const StoreInst* store);
|
|
58
|
+
|
|
59
|
+
void buildClassNameToAncestorsDescendantsMap();
|
|
60
|
+
const CHGraph::CHNodeSetTy& getInstancesAndDescendants(const std::string className);
|
|
61
|
+
|
|
62
|
+
void analyzeVTables(const Module &M);
|
|
63
|
+
void buildVirtualFunctionToIDMap();
|
|
64
|
+
void buildCSToCHAVtblsAndVfnsMap();
|
|
65
|
+
const CHNodeSetTy& getCSClasses(CallSite cs);
|
|
66
|
+
void addFuncToFuncVector(CHNode::FuncVector &v, const SVFFunction *f);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
}
|
package/include/SVF-FE/DCHG.h
CHANGED
|
@@ -267,6 +267,8 @@ public:
|
|
|
267
267
|
return nullPtr;
|
|
268
268
|
}
|
|
269
269
|
|
|
270
|
+
public:
|
|
271
|
+
|
|
270
272
|
NodeID getGepValNode(const Value* val, const LocationSet& ls, const Type *baseType, u32_t fieldidx);
|
|
271
273
|
|
|
272
274
|
void setCurrentBBAndValueForPAGEdge(PAGEdge* edge);
|
|
@@ -293,23 +295,36 @@ public:
|
|
|
293
295
|
return edge;
|
|
294
296
|
}
|
|
295
297
|
/// Add Copy edge
|
|
296
|
-
inline
|
|
298
|
+
inline PhiPE* addPhiNode(NodeID res, NodeID opnd)
|
|
297
299
|
{
|
|
298
|
-
|
|
300
|
+
PhiPE *edge = pag->addPhiNode(res,opnd);
|
|
299
301
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
300
302
|
return edge;
|
|
301
303
|
}
|
|
302
304
|
/// Add Copy edge
|
|
303
|
-
inline
|
|
305
|
+
inline CmpPE* addCmpEdge(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)
|
|
304
306
|
{
|
|
305
|
-
|
|
307
|
+
CmpPE *edge = pag->addCmpPE(op1, op2, dst, opcode);
|
|
308
|
+
setCurrentBBAndValueForPAGEdge(edge);
|
|
309
|
+
return edge;
|
|
310
|
+
}
|
|
311
|
+
/// Add Copy edge
|
|
312
|
+
inline BinaryOPPE* addBinaryOPEdge(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)
|
|
313
|
+
{
|
|
314
|
+
BinaryOPPE *edge = pag->addBinaryOPPE(op1, op2, dst, opcode);
|
|
306
315
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
307
316
|
return edge;
|
|
308
317
|
}
|
|
309
318
|
/// Add Unary edge
|
|
310
|
-
inline UnaryOPPE* addUnaryOPEdge(NodeID src, NodeID dst)
|
|
319
|
+
inline UnaryOPPE* addUnaryOPEdge(NodeID src, NodeID dst, u32_t opcode)
|
|
311
320
|
{
|
|
312
|
-
UnaryOPPE *edge = pag->addUnaryOPPE(src, dst);
|
|
321
|
+
UnaryOPPE *edge = pag->addUnaryOPPE(src, dst, opcode);
|
|
322
|
+
setCurrentBBAndValueForPAGEdge(edge);
|
|
323
|
+
return edge;
|
|
324
|
+
}
|
|
325
|
+
/// Add Branch statement
|
|
326
|
+
inline BranchStmt* addBranchStmt(NodeID br, NodeID cond, const std::vector<const ICFGNode*> succs){
|
|
327
|
+
BranchStmt *edge = pag->addBranchStmt(br, cond, succs);
|
|
313
328
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
314
329
|
return edge;
|
|
315
330
|
}
|
|
@@ -385,8 +400,6 @@ public:
|
|
|
385
400
|
|
|
386
401
|
};
|
|
387
402
|
|
|
388
|
-
typedef SVFIRBuilder PAGBuilder;
|
|
389
|
-
|
|
390
403
|
} // End namespace SVF
|
|
391
404
|
|
|
392
405
|
#endif /* PAGBUILDER_H_ */
|