svf-tools 1.0.351 → 1.0.355
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/AndersenSFR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +44 -45
- package/SVF-doxygen/html/html/ConsG_8h_source.html +23 -23
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +13 -11
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +6 -6
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +6 -4
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +33 -31
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +17 -17
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +30 -30
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +26 -26
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +10 -9
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +19 -8
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Options_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +17 -18
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +19 -22
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +7 -8
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +8 -8
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -7
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +34 -35
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +45 -46
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +40 -41
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +21 -23
- package/SVF-doxygen/html/html/SVFStatements_8h.html +0 -4
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +150 -156
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +102 -102
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- 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/SymbolTableBuilder_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +51 -50
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +67 -62
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +16 -15
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +50 -51
- package/SVF-doxygen/html/html/VFG_8h_source.html +35 -35
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -6
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +2 -2
- package/SVF-doxygen/html/html/annotated.html +100 -102
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +24 -25
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +17 -18
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt-members.html +28 -29
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +25 -30
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +28 -29
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +23 -24
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +36 -35
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +146 -93
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +27 -28
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +24 -25
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +30 -31
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +24 -25
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +95 -96
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +24 -25
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +17 -18
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +8 -7
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +78 -80
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +63 -62
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +21 -20
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +42 -42
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +58 -55
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +170 -50
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +3 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +7 -8
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +27 -28
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +17 -18
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +22 -21
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +86 -32
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder-members.html +2 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +11 -15
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +87 -87
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +33 -34
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +32 -33
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +98 -98
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +19 -20
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +30 -31
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +23 -24
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +45 -50
- package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +27 -28
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +24 -25
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder-members.html +2 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +33 -79
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +94 -95
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +103 -97
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +24 -25
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +49 -53
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +2 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +11 -15
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +13 -6
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +263 -37
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +24 -25
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +18 -19
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +65 -64
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +90 -63
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +26 -27
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +18 -19
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +26 -27
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +18 -19
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +29 -30
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +30 -31
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +79 -80
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +13 -14
- package/SVF-doxygen/html/html/classes.html +95 -93
- package/SVF-doxygen/html/html/functions_a.html +18 -17
- package/SVF-doxygen/html/html/functions_b.html +5 -11
- package/SVF-doxygen/html/html/functions_c.html +22 -22
- package/SVF-doxygen/html/html/functions_eval_g.html +2 -1
- package/SVF-doxygen/html/html/functions_eval_n.html +0 -1
- package/SVF-doxygen/html/html/functions_eval_v.html +0 -1
- package/SVF-doxygen/html/html/functions_f.html +20 -15
- package/SVF-doxygen/html/html/functions_func.html +19 -18
- package/SVF-doxygen/html/html/functions_func_b.html +0 -6
- package/SVF-doxygen/html/html/functions_func_c.html +20 -22
- package/SVF-doxygen/html/html/functions_func_g.html +37 -24
- package/SVF-doxygen/html/html/functions_func_i.html +7 -4
- package/SVF-doxygen/html/html/functions_func_n.html +0 -3
- package/SVF-doxygen/html/html/functions_func_o.html +3 -4
- package/SVF-doxygen/html/html/functions_func_s.html +4 -4
- package/SVF-doxygen/html/html/functions_func_t.html +0 -2
- package/SVF-doxygen/html/html/functions_func_v.html +0 -3
- package/SVF-doxygen/html/html/functions_g.html +37 -23
- package/SVF-doxygen/html/html/functions_i.html +9 -6
- package/SVF-doxygen/html/html/functions_l.html +5 -5
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_n.html +0 -4
- package/SVF-doxygen/html/html/functions_o.html +12 -15
- package/SVF-doxygen/html/html/functions_p.html +12 -12
- package/SVF-doxygen/html/html/functions_r.html +9 -5
- package/SVF-doxygen/html/html/functions_s.html +24 -16
- package/SVF-doxygen/html/html/functions_t.html +10 -10
- package/SVF-doxygen/html/html/functions_type_s.html +3 -0
- package/SVF-doxygen/html/html/functions_v.html +10 -11
- package/SVF-doxygen/html/html/functions_vars_f.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_s.html +4 -1
- package/SVF-doxygen/html/html/functions_vars_v.html +3 -0
- package/SVF-doxygen/html/html/hierarchy.html +55 -57
- package/SVF-doxygen/html/html/namespaceSVF.html +0 -4
- package/SVF-doxygen/html/html/search/all_1.js +8 -8
- package/SVF-doxygen/html/html/search/all_10.js +7 -7
- package/SVF-doxygen/html/html/search/all_12.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +11 -9
- package/SVF-doxygen/html/html/search/all_14.js +7 -7
- package/SVF-doxygen/html/html/search/all_16.js +4 -4
- package/SVF-doxygen/html/html/search/all_2.js +1 -3
- package/SVF-doxygen/html/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/html/search/all_6.js +1 -0
- package/SVF-doxygen/html/html/search/all_7.js +10 -6
- package/SVF-doxygen/html/html/search/all_9.js +2 -1
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +3 -3
- package/SVF-doxygen/html/html/search/all_e.js +4 -5
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/classes_12.js +0 -1
- package/SVF-doxygen/html/html/search/classes_b.js +0 -1
- package/SVF-doxygen/html/html/search/enumvalues_12.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_6.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +8 -8
- package/SVF-doxygen/html/html/search/functions_1.js +1 -3
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +0 -1
- package/SVF-doxygen/html/html/search/functions_2.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +9 -5
- package/SVF-doxygen/html/html/search/functions_8.js +2 -1
- package/SVF-doxygen/html/html/search/functions_c.js +0 -1
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -0
- package/SVF-doxygen/html/html/search/variables_13.js +2 -1
- package/SVF-doxygen/html/html/search/variables_14.js +2 -2
- package/SVF-doxygen/html/html/search/variables_16.js +1 -0
- package/SVF-doxygen/html/html/search/variables_6.js +1 -0
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- 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 +16 -16
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -2
- package/include/DDA/DDAVFSolver.h +1 -1
- package/include/Graphs/ConsG.h +2 -2
- package/include/Graphs/ConsGEdge.h +1 -1
- package/include/Graphs/VFG.h +2 -2
- package/include/Graphs/VFGNode.h +1 -1
- package/include/MSSA/SVFGBuilder.h +0 -2
- package/include/MemoryModel/LocationSet.h +4 -0
- package/include/MemoryModel/SVFIR.h +3 -3
- package/include/MemoryModel/SVFStatements.h +40 -97
- package/include/MemoryModel/SVFVariables.h +9 -6
- package/include/MemoryModel/SymbolTableInfo.h +27 -6
- package/include/SVF-FE/DCHG.h +1 -1
- package/include/SVF-FE/SVFIRBuilder.h +6 -6
- package/include/Util/IRAnnotator.h +1 -1
- package/lib/DDA/ContextDDA.cpp +4 -5
- package/lib/DDA/DDAClient.cpp +6 -6
- package/lib/DDA/DDAStat.cpp +1 -1
- package/lib/DDA/FlowDDA.cpp +4 -5
- package/lib/Graphs/ConsG.cpp +26 -31
- package/lib/Graphs/ICFG.cpp +4 -0
- package/lib/Graphs/SVFG.cpp +2 -2
- package/lib/Graphs/VFG.cpp +36 -43
- package/lib/MSSA/SVFGBuilder.cpp +4 -11
- package/lib/MTA/MTAAnnotator.cpp +3 -3
- package/lib/MemoryModel/LocationSet.cpp +69 -7
- package/lib/MemoryModel/PointerAnalysis.cpp +0 -6
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
- package/lib/MemoryModel/SVFIR.cpp +27 -35
- package/lib/MemoryModel/SVFStatements.cpp +0 -22
- package/lib/MemoryModel/SVFVariables.cpp +1 -1
- package/lib/MemoryModel/SymbolTableInfo.cpp +24 -17
- package/lib/SABER/SrcSnkDDA.cpp +2 -2
- package/lib/SVF-FE/DCHG.cpp +1 -1
- package/lib/SVF-FE/Graph2Json.cpp +24 -27
- package/lib/SVF-FE/SVFIRBuilder.cpp +9 -4
- package/lib/Util/Options.cpp +1 -1
- package/lib/Util/PTAStat.cpp +9 -9
- package/lib/Util/TypeBasedHeapCloning.cpp +5 -5
- package/lib/WPA/AndersenSFR.cpp +2 -2
- package/lib/WPA/AndersenStat.cpp +2 -2
- package/lib/WPA/CSC.cpp +2 -2
- package/lib/WPA/FlowSensitive.cpp +7 -12
- package/lib/WPA/FlowSensitiveStat.cpp +2 -2
- package/lib/WPA/FlowSensitiveTBHC.cpp +6 -9
- package/lib/WPA/WPAPass.cpp +1 -9
- package/package.json +1 -1
- package/tools/Example/svf-ex.cpp +1 -1
|
@@ -1060,19 +1060,19 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1060
1060
|
|
|
1061
1061
|
<p>Reimplemented in <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#abcab6281cced08d90c92d67d43a37c2c">SVF::FlowSensitiveTBHC</a>.</p>
|
|
1062
1062
|
|
|
1063
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1064
|
-
<div class="fragment"><div class="line"><a name="
|
|
1063
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00086">86</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1064
|
+
<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">bool</span> limitTimerSet = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a757815a2c758695176120509ceb0ce70">SVFUtil::startAnalysisLimitTimer</a>(<a class="code" href="classSVF_1_1Options.html#ad03c4697dd4da2b6adde112e3ee1884b">Options::FsTimeLimit</a>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ad6243c1317503bed39411dab47c83da7">initialize</a>();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">"Start Solving Constraints\n"</span>));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">do</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="classSVF_1_1WPASolver.html#ab3369caa278da03e6e6697a839985cd6">numOfIteration</a>++;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span>(0 == <a class="code" href="classSVF_1_1WPASolver.html#ab3369caa278da03e6e6697a839985cd6">numOfIteration</a> % <a class="code" href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac">OnTheFlyIterBudgetForStat</a>)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#ab83b827ea42d3a61aad20b1a1485d866">dumpStat</a>();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#ae3b651799345d9d92b6d736dafb03f63">callGraphSCC</a>-><a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classSVF_1_1WPASolver.html#a7195381c3aab04890139b4fe2c561909">initWorklist</a>();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="classSVF_1_1WPASolver.html#af1bb670efde7006e3e99b3735e4fc4cc">solveWorklist</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">while</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a9d81537ec20196315a9a2541477ec5bf">updateCallGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a9d3e7753643166465b0d647a75bc145a">getIndirectCallsites</a>()));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">"Finish Solving Constraints\n"</span>));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Reset the time-up alarm; analysis is done.</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a168f7f7a3a8c70dbf2b5b4269cd4c7c5">SVFUtil::stopAnalysisLimitTimer</a>(limitTimerSet);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a4202f837e863a48712765cc346d8b514">solveTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ad148549070b042aeddafca39ee949c77">Options::CTirAliasEval</a>)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a023d0b492deaba40c593332cf1b2e3f6">printCTirAliasStats</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">finalize</a>();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> }</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a9d3e7753643166465b0d647a75bc145a"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a9d3e7753643166465b0d647a75bc145a">SVF::PointerAnalysis::getIndirectCallsites</a></div><div class="ttdeci">const CallSiteToFunPtrMap & getIndirectCallsites() const</div><div class="ttdoc">Return all indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00280">PointerAnalysis.h:280</a></div></div>
|
|
1065
1065
|
<div class="ttc" id="classSVF_1_1Options_html_ad03c4697dd4da2b6adde112e3ee1884b"><div class="ttname"><a href="classSVF_1_1Options.html#ad03c4697dd4da2b6adde112e3ee1884b">SVF::Options::FsTimeLimit</a></div><div class="ttdeci">static const llvm::cl::opt< unsigned > FsTimeLimit</div><div class="ttdoc">Time limit for the main phase (i.e., the actual solving) of FS analyses. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00071">Options.h:71</a></div></div>
|
|
1066
1066
|
<div class="ttc" id="classSVF_1_1WPASolver_html_ab3369caa278da03e6e6697a839985cd6"><div class="ttname"><a href="classSVF_1_1WPASolver.html#ab3369caa278da03e6e6697a839985cd6">SVF::WPASolver::numOfIteration</a></div><div class="ttdeci">u32_t numOfIteration</div><div class="ttdoc">num of iterations during constaint solving </div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00206">WPASolver.h:206</a></div></div>
|
|
1067
1067
|
<div class="ttc" id="classSVF_1_1WPASolver_html_af1bb670efde7006e3e99b3735e4fc4cc"><div class="ttname"><a href="classSVF_1_1WPASolver.html#af1bb670efde7006e3e99b3735e4fc4cc">SVF::WPASolver::solveWorklist</a></div><div class="ttdeci">virtual void solveWorklist()</div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00112">WPASolver.h:112</a></div></div>
|
|
1068
1068
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ab83b827ea42d3a61aad20b1a1485d866"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ab83b827ea42d3a61aad20b1a1485d866">SVF::PointerAnalysis::dumpStat</a></div><div class="ttdeci">void dumpStat()</div><div class="ttdoc">Dump the statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00187">PointerAnalysis.cpp:187</a></div></div>
|
|
1069
1069
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00101">SVFUtil.cpp:101</a></div></div>
|
|
1070
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a023d0b492deaba40c593332cf1b2e3f6"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a023d0b492deaba40c593332cf1b2e3f6">SVF::FlowSensitive::printCTirAliasStats</a></div><div class="ttdeci">virtual void printCTirAliasStats(void)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
1070
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a023d0b492deaba40c593332cf1b2e3f6"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a023d0b492deaba40c593332cf1b2e3f6">SVF::FlowSensitive::printCTirAliasStats</a></div><div class="ttdeci">virtual void printCTirAliasStats(void)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00818">FlowSensitive.cpp:818</a></div></div>
|
|
1071
1071
|
<div class="ttc" id="classSVF_1_1SCCDetection_html_a123b5006a6da7053e5e357140da3c5a3"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">SVF::SCCDetection::find</a></div><div class="ttdeci">void find(void)</div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00308">SCC.h:308</a></div></div>
|
|
1072
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_afed358369102f01f6fe88b1433e704c3"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">SVF::FlowSensitive::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
1072
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_afed358369102f01f6fe88b1433e704c3"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">SVF::FlowSensitive::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00131">FlowSensitive.cpp:131</a></div></div>
|
|
1073
1073
|
<div class="ttc" id="classSVF_1_1Options_html_ad148549070b042aeddafca39ee949c77"><div class="ttname"><a href="classSVF_1_1Options.html#ad148549070b042aeddafca39ee949c77">SVF::Options::CTirAliasEval</a></div><div class="ttdeci">static const llvm::cl::opt< bool > CTirAliasEval</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00237">Options.h:237</a></div></div>
|
|
1074
1074
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_afc320fbf269404fe128e69c98e6f9cac"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac">SVF::PointerAnalysis::OnTheFlyIterBudgetForStat</a></div><div class="ttdeci">u32_t OnTheFlyIterBudgetForStat</div><div class="ttdoc">Flag for iteration budget for on-the-fly statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00143">PointerAnalysis.h:143</a></div></div>
|
|
1075
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a9d81537ec20196315a9a2541477ec5bf"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a9d81537ec20196315a9a2541477ec5bf">SVF::FlowSensitive::updateCallGraph</a></div><div class="ttdeci">bool updateCallGraph(const CallSiteToFunPtrMap &callsites)</div><div class="ttdoc">Update call graph. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
1075
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a9d81537ec20196315a9a2541477ec5bf"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a9d81537ec20196315a9a2541477ec5bf">SVF::FlowSensitive::updateCallGraph</a></div><div class="ttdeci">bool updateCallGraph(const CallSiteToFunPtrMap &callsites)</div><div class="ttdoc">Update call graph. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00648">FlowSensitive.cpp:648</a></div></div>
|
|
1076
1076
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ad6243c1317503bed39411dab47c83da7"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ad6243c1317503bed39411dab47c83da7">SVF::FlowSensitive::initialize</a></div><div class="ttdeci">virtual void initialize()</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00048">FlowSensitive.cpp:48</a></div></div>
|
|
1077
1077
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a757815a2c758695176120509ceb0ce70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a757815a2c758695176120509ceb0ce70">SVF::SVFUtil::startAnalysisLimitTimer</a></div><div class="ttdeci">bool startAnalysisLimitTimer(unsigned timeLimit)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00425">SVFUtil.cpp:425</a></div></div>
|
|
1078
1078
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ae3b651799345d9d92b6d736dafb03f63"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ae3b651799345d9d92b6d736dafb03f63">SVF::PointerAnalysis::callGraphSCC</a></div><div class="ttdeci">CallGraphSCC * callGraphSCC</div><div class="ttdoc">SCC for CallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00159">PointerAnalysis.h:159</a></div></div>
|
|
@@ -1204,8 +1204,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1204
1204
|
|
|
1205
1205
|
<p>Reimplemented in <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#aedd12e894fb2c17d2201f4049e5f3793">SVF::VersionedFlowSensitive</a>.</p>
|
|
1206
1206
|
|
|
1207
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1208
|
-
<div class="fragment"><div class="line"><a name="
|
|
1207
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00788">788</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1208
|
+
<div class="fragment"><div class="line"><a name="l00789"></a><span class="lineno"> 789</span> {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  std::vector<std::pair<unsigned, unsigned>> keys;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> pit = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); pit != <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++pit) keys.push_back(std::make_pair(pit->first, 1));</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> </div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> nodeMapping =</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  std::make_shared<std::vector<NodeID>>(<a class="code" href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#a33d502a0bd49307cd824e34b73157b9b">NodeIDAllocator::Clusterer::cluster</a>(<a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a>, keys, <a class="code" href="classSVF_1_1FlowSensitive.html#adba7ffe68ae7edce9b3aa896f978da6b">candidateMappings</a>, <span class="stringliteral">"aux-ander"</span>));</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> reverseNodeMapping =</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  std::make_shared<std::vector<NodeID>>(<a class="code" href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#a36b25188130f4c21d145c950a70d616f">NodeIDAllocator::Clusterer::getReverseNodeMapping</a>(*nodeMapping));</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> </div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <a class="code" href="classSVF_1_1PointsTo.html#a84eca4c7fc833f8ca4d119cd4da08ca8">PointsTo::setCurrentBestNodeMapping</a>(nodeMapping, reverseNodeMapping);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
|
|
1209
1209
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
1210
1210
|
<div class="ttc" id="classSVF_1_1PointsTo_html_a849f670b38cb6f65fc23707a212591c7"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">SVF::PointsTo::MappingPtr</a></div><div class="ttdeci">std::shared_ptr< std::vector< NodeID > > MappingPtr</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00041">PointsTo.h:41</a></div></div>
|
|
1211
1211
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph< SVFVar, SVFStmt >::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00338">GenericGraph.h:338</a></div></div>
|
|
@@ -1255,8 +1255,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1255
1255
|
<p>Connect nodes in <a class="el" href="classSVF_1_1SVFG.html">SVFG</a>. </p>
|
|
1256
1256
|
<p>Handle parameter passing in <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> </p>
|
|
1257
1257
|
|
|
1258
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1259
|
-
<div class="fragment"><div class="line"><a name="
|
|
1258
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00701">701</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1259
|
+
<div class="fragment"><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  CallEdgeMap::const_iterator iter = newEdges.begin();</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  CallEdgeMap::const_iterator eiter = newEdges.end();</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">for</span> (; iter != eiter; iter++)</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  {</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = iter->first;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">FunctionSet</a> & functions = iter->second;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">for</span> (FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = *func_iter;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1SVFG.html#aefca97f043b3e220ef6012a049b83fdf">connectCallerAndCallee</a>(cs, func, edges);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  }</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00250">FlowSensitive.h:250</a></div></div>
|
|
1260
1260
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
|
|
1261
1261
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac1422cd8b449fdb4a1f7c539364e4c41"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">SVF::PointerAnalysis::FunctionSet</a></div><div class="ttdeci">Set< const SVFFunction * > FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00110">PointerAnalysis.h:110</a></div></div>
|
|
1262
1262
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
|
|
@@ -1308,8 +1308,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1308
1308
|
|
|
1309
1309
|
<p>Reimplemented in <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#abe784dfae06a7c1943b8f0a18bd79f14">SVF::FlowSensitiveTBHC</a>.</p>
|
|
1310
1310
|
|
|
1311
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1312
|
-
<div class="fragment"><div class="line"><a name="
|
|
1311
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00883">883</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1312
|
+
<div class="fragment"><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> {</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keywordflow">for</span> (std::pair<NodeID, NodeID> locPA : cmp)</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  {</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="comment">// loc doesn't make a difference for FSPTA.</span></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> p = locPA.second;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <span class="keywordflow">for</span> (std::pair<NodeID, NodeID> locPB : cmp)</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  {</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keywordflow">if</span> (locPB == locPA) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> </div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> q = locPB.second;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> </div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="keywordflow">switch</span> (<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">alias</a>(p, q))</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  {</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <span class="keywordflow">case</span> llvm::AliasResult::NoAlias:</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  ++(*noAliases);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="keywordflow">case</span> llvm::AliasResult::MayAlias:</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  ++(*mayAliases);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="stringliteral">"Not May/NoAlias?"</span>);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  }</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  }</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  }</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> </div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> }</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
1313
1313
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1314
1314
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ad06fbd9a51499c668662b533eeb2e4ac"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Location infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00452">PointerAnalysisImpl.cpp:452</a></div></div>
|
|
1315
1315
|
</div><!-- fragment -->
|
|
@@ -1342,7 +1342,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1342
1342
|
<p>Create signle instance of flow-sensitive pointer analysis. </p>
|
|
1343
1343
|
|
|
1344
1344
|
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8h_source.html#l00084">84</a> of file <a class="el" href="FlowSensitive_8h_source.html">FlowSensitive.h</a>.</p>
|
|
1345
|
-
<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aac88b67b49cbd72912ff586d30197ffb">FlowSensitive</a>(_pag);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a>-><a class="code" href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">analyze</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_a267f7198600dde3054feb40def7a6681"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">SVF::FlowSensitive::analyze</a></div><div class="ttdeci">virtual void analyze()</div><div class="ttdoc">Flow sensitive analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
1345
|
+
<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aac88b67b49cbd72912ff586d30197ffb">FlowSensitive</a>(_pag);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a>-><a class="code" href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">analyze</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_a267f7198600dde3054feb40def7a6681"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">SVF::FlowSensitive::analyze</a></div><div class="ttdeci">virtual void analyze()</div><div class="ttdoc">Flow sensitive analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00086">FlowSensitive.cpp:86</a></div></div>
|
|
1346
1346
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aac88b67b49cbd72912ff586d30197ffb"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aac88b67b49cbd72912ff586d30197ffb">SVF::FlowSensitive::FlowSensitive</a></div><div class="ttdeci">FlowSensitive(SVFIR *_pag, PTATY type=FSSPARSE_WPA)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00061">FlowSensitive.h:61</a></div></div>
|
|
1347
1347
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a4ad2095dc708df07602de25e4a004776"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">SVF::FlowSensitive::fspta</a></div><div class="ttdeci">static FlowSensitive * fspta</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00282">FlowSensitive.h:282</a></div></div>
|
|
1348
1348
|
</div><!-- fragment -->
|
|
@@ -1379,8 +1379,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1379
1379
|
|
|
1380
1380
|
<p>Reimplemented in <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#ad955fda89f4f749151a1bd14562b03f6">SVF::VersionedFlowSensitive</a>, and <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a3564d6ad7e12e0a833b4cea203a809e4">SVF::FlowSensitiveTBHC</a>.</p>
|
|
1381
1381
|
|
|
1382
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1383
|
-
<div class="fragment"><div class="line"><a name="
|
|
1382
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00131">131</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1383
|
+
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a3061c75f7491dd737222b1b877721070">Options::DumpVFG</a>)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1SVFG.html#a5fdaddc52e7342b834d76d64c1a1e498">dump</a>(<span class="stringliteral">"fs_solved"</span>, <span class="keyword">true</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="namespaceSVF.html#a1811127aebdb9c926e39d155e20b3dc0">NodeStack</a>& <a class="code" href="classSVF_1_1WPAFSSolver.html#a2cb80102611c663c4daddd68b4f4b75f">nodeStack</a> = <a class="code" href="classSVF_1_1WPASolver.html#aaa932894d00b69cfa741f9987a9cc6b8">WPASolver<SVFG*>::SCCDetect</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">while</span> (nodeStack.empty() == <span class="keyword">false</span>)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rep = nodeStack.top();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  nodeStack.pop();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>& subNodes = <a class="code" href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">getSCCDetector</a>()-><a class="code" href="classSVF_1_1SCCDetection.html#a6ab5eff6a576e6d8703c1ea29b7f425d">subNodes</a>(rep);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span> (subNodes.count() > <a class="code" href="classSVF_1_1FlowSensitive.html#aa3d4703756a6297ab5c0756172024fe4">maxSCCSize</a>)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aa3d4703756a6297ab5c0756172024fe4">maxSCCSize</a> = subNodes.count();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span> (subNodes.count() > 1)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a9f3fe97202db8170fa9f47c5684bce75">numOfNodesInSCC</a> += subNodes.count();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3">numOfSCC</a>++;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// TODO: check -stat too.</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9dc372635fc6f5ea2d902fc5c49fca8a">Options::ClusterFs</a>)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<std::string, std::string></a> stats;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#acfdb43f20bbcababc928cc4df93a8483">PTDataTy</a> *ptd = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">// TODO: should we use liveOnly?</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<PointsTo, unsigned></a> allPts = ptd->getAllPts(<span class="keyword">true</span>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// TODO: parameterise final arg.</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#acbbc5c04c79846fe1cc46a3bd5a65aba">NodeIDAllocator::Clusterer::evaluate</a>(*<a class="code" href="classSVF_1_1PointsTo.html#a6c1885ddfcc72604463f7c4ea94d2f74">PointsTo::getCurrentBestNodeMapping</a>(), allPts, stats, <span class="keyword">true</span>);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#ac10cbda6a84ce890c9946a5ff35800b7">NodeIDAllocator::Clusterer::printStats</a>(<span class="stringliteral">"post-main: best"</span>, stats);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// Do the same for the candidates. TODO: probably temporary for eval. purposes.</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">for</span> (std::pair<<a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913dd">hclust_fast_methods</a>, std::vector<NodeID>> &candidate : <a class="code" href="classSVF_1_1FlowSensitive.html#adba7ffe68ae7edce9b3aa896f978da6b">candidateMappings</a>)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="comment">// Can reuse stats, since we're always filling it with `evaluate`, it will always be overwritten.</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#acbbc5c04c79846fe1cc46a3bd5a65aba">NodeIDAllocator::Clusterer::evaluate</a>(candidate.second, allPts, stats, <span class="keyword">true</span>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#ac10cbda6a84ce890c9946a5ff35800b7">NodeIDAllocator::Clusterer::printStats</a>(<span class="stringliteral">"post-main: candidate "</span> + <a class="code" href="namespaceSVF_1_1SVFUtil.html#a14a4c5124f2fd03ca3d898e2acd54160">SVFUtil::hclustMethodToString</a>(candidate.first), stats);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a57ff2bf45ede7a730a8adaba8e61179d">BVDataPTAImpl::finalize</a>();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div><div class="ttc" id="classSVF_1_1SVFG_html_a5fdaddc52e7342b834d76d64c1a1e498"><div class="ttname"><a href="classSVF_1_1SVFG.html#a5fdaddc52e7342b834d76d64c1a1e498">SVF::SVFG::dump</a></div><div class="ttdeci">void dump(const std::string &file, bool simple=false)</div><div class="ttdoc">Dump graph into dot file. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00540">SVFG.cpp:540</a></div></div>
|
|
1384
1384
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ae94cea78b71fb75837ee2a17b5ed0e81"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">SVF::BVDataPTAImpl::getPTDataTy</a></div><div class="ttdeci">PTDataTy * getPTDataTy() const</div><div class="ttdoc">Get points-to data structure. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00162">PointerAnalysisImpl.h:162</a></div></div>
|
|
1385
1385
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00250">FlowSensitive.h:250</a></div></div>
|
|
1386
1386
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a57ff2bf45ede7a730a8adaba8e61179d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a57ff2bf45ede7a730a8adaba8e61179d">SVF::BVDataPTAImpl::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalization of pointer analysis, and normalize points-to information to Bit Vector representation...</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00072">PointerAnalysisImpl.cpp:72</a></div></div>
|
|
@@ -1609,11 +1609,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1609
1609
|
<p>Reimplemented in <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#a81d3528fd082018e4345f0b026bf3584">SVF::VersionedFlowSensitive</a>, and <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a4c5fb70aafc3a589b7b1e82ba8f61a6f">SVF::FlowSensitiveTBHC</a>.</p>
|
|
1610
1610
|
|
|
1611
1611
|
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00048">48</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1612
|
-
<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">PointerAnalysis::initialize</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a88f9752372eabb71f47f13a89e4d6d9c">FlowSensitiveStat</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// TODO: support clustered aux. Andersen's.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1Options.html#a8459d43a21bcf8a50fc55d14fcf5a81e">Options::ClusterAnder</a> && <span class="stringliteral">"FlowSensitive::initialize: clustering auxiliary Andersen's unsupported."</span>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a> = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>());</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// If cluster option is not set, it will give us a no-mapping points-to set.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!(<a class="code" href="classSVF_1_1Options.html#a9dc372635fc6f5ea2d902fc5c49fca8a">Options::ClusterFs</a> && <a class="code" href="classSVF_1_1Options.html#a75a38fff97f7f18f3945c953cabc168b">Options::PlainMappingFs</a>)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  && <span class="stringliteral">"FS::init: plain-mapping and cluster-fs are mutually exclusive."</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9dc372635fc6f5ea2d902fc5c49fca8a">Options::ClusterFs</a>)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a89d3b97b8077027514135c9201c4d02c">cluster</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// Reset the points-to cache although empty so the new mapping could</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// be applied to the inserted empty set.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>().reset();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a75a38fff97f7f18f3945c953cabc168b">Options::PlainMappingFs</a>)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a5a8688102f3675cf414b01dc2ae51c6b">plainMap</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// As above.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>().reset();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// When evaluating ctir aliases, we want the whole SVFG.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> 
|
|
1613
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a89d3b97b8077027514135c9201c4d02c"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a89d3b97b8077027514135c9201c4d02c">SVF::FlowSensitive::cluster</a></div><div class="ttdeci">virtual void cluster(void)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
1612
|
+
<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">PointerAnalysis::initialize</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a88f9752372eabb71f47f13a89e4d6d9c">FlowSensitiveStat</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// TODO: support clustered aux. Andersen's.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1Options.html#a8459d43a21bcf8a50fc55d14fcf5a81e">Options::ClusterAnder</a> && <span class="stringliteral">"FlowSensitive::initialize: clustering auxiliary Andersen's unsupported."</span>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a> = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>());</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// If cluster option is not set, it will give us a no-mapping points-to set.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!(<a class="code" href="classSVF_1_1Options.html#a9dc372635fc6f5ea2d902fc5c49fca8a">Options::ClusterFs</a> && <a class="code" href="classSVF_1_1Options.html#a75a38fff97f7f18f3945c953cabc168b">Options::PlainMappingFs</a>)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  && <span class="stringliteral">"FS::init: plain-mapping and cluster-fs are mutually exclusive."</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9dc372635fc6f5ea2d902fc5c49fca8a">Options::ClusterFs</a>)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a89d3b97b8077027514135c9201c4d02c">cluster</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// Reset the points-to cache although empty so the new mapping could</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// be applied to the inserted empty set.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>().reset();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a75a38fff97f7f18f3945c953cabc168b">Options::PlainMappingFs</a>)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a5a8688102f3675cf414b01dc2ae51c6b">plainMap</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// As above.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>().reset();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// When evaluating ctir aliases, we want the whole SVFG.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a> = <a class="code" href="classSVF_1_1Options.html#ad148549070b042aeddafca39ee949c77">Options::CTirAliasEval</a> ? <a class="code" href="classSVF_1_1FlowSensitive.html#a76f6f19ac2b58ab4a10a2d7e6e24e42a">memSSA</a>.<a class="code" href="classSVF_1_1SVFGBuilder.html#a54a713e3989597b11cee70864d0197bd">buildFullSVFG</a>(<a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a>) : <a class="code" href="classSVF_1_1FlowSensitive.html#a76f6f19ac2b58ab4a10a2d7e6e24e42a">memSSA</a>.<a class="code" href="classSVF_1_1SVFGBuilder.html#ab7353191edd06568e2598177d253c1d9">buildPTROnlySVFG</a>(<a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classSVF_1_1WPASolver.html#aa04deb39cd024c051f30ac43d1d62b34">setGraph</a>(<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">//AndersenWaveDiff::releaseAndersenWaveDiff();</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00250">FlowSensitive.h:250</a></div></div>
|
|
1613
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a89d3b97b8077027514135c9201c4d02c"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a89d3b97b8077027514135c9201c4d02c">SVF::FlowSensitive::cluster</a></div><div class="ttdeci">virtual void cluster(void)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00788">FlowSensitive.cpp:788</a></div></div>
|
|
1614
1614
|
<div class="ttc" id="classSVF_1_1Options_html_a9dc372635fc6f5ea2d902fc5c49fca8a"><div class="ttname"><a href="classSVF_1_1Options.html#a9dc372635fc6f5ea2d902fc5c49fca8a">SVF::Options::ClusterFs</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ClusterFs</div><div class="ttdoc">Whether to cluster FS or VFS with the auxiliary Andersen&#39;s. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00043">Options.h:43</a></div></div>
|
|
1615
|
-
<div class="ttc" id="
|
|
1616
|
-
<div class="ttc" id="classSVF_1_1SVFGBuilder_html_a54a713e3989597b11cee70864d0197bd"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#a54a713e3989597b11cee70864d0197bd">SVF::SVFGBuilder::buildFullSVFG</a></div><div class="ttdeci">SVFG * buildFullSVFG(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8cpp_source.html#l00054">SVFGBuilder.cpp:54</a></div></div>
|
|
1615
|
+
<div class="ttc" id="classSVF_1_1SVFGBuilder_html_a54a713e3989597b11cee70864d0197bd"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#a54a713e3989597b11cee70864d0197bd">SVF::SVFGBuilder::buildFullSVFG</a></div><div class="ttdeci">SVFG * buildFullSVFG(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8cpp_source.html#l00052">SVFGBuilder.cpp:52</a></div></div>
|
|
1617
1616
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1618
1617
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a34d87fa1988b78f032735b5fc2803792"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">SVF::BVDataPTAImpl::getPtCache</a></div><div class="ttdeci">PersistentPointsToCache< PointsTo > & getPtCache(void)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00079">PointerAnalysisImpl.h:79</a></div></div>
|
|
1619
1618
|
<div class="ttc" id="classSVF_1_1Options_html_ad148549070b042aeddafca39ee949c77"><div class="ttname"><a href="classSVF_1_1Options.html#ad148549070b042aeddafca39ee949c77">SVF::Options::CTirAliasEval</a></div><div class="ttdeci">static const llvm::cl::opt< bool > CTirAliasEval</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00237">Options.h:237</a></div></div>
|
|
@@ -1621,8 +1620,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1621
1620
|
<div class="ttc" id="classSVF_1_1SVFGBuilder_html_ab7353191edd06568e2598177d253c1d9"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#ab7353191edd06568e2598177d253c1d9">SVF::SVFGBuilder::buildPTROnlySVFG</a></div><div class="ttdeci">SVFG * buildPTROnlySVFG(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8cpp_source.html#l00044">SVFGBuilder.cpp:44</a></div></div>
|
|
1622
1621
|
<div class="ttc" id="classSVF_1_1WPASolver_html_aa04deb39cd024c051f30ac43d1d62b34"><div class="ttname"><a href="classSVF_1_1WPASolver.html#aa04deb39cd024c051f30ac43d1d62b34">SVF::WPASolver::setGraph</a></div><div class="ttdeci">void setGraph(GraphType g)</div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00082">WPASolver.h:82</a></div></div>
|
|
1623
1622
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00205">PointerAnalysis.h:205</a></div></div>
|
|
1624
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a5a8688102f3675cf414b01dc2ae51c6b"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a5a8688102f3675cf414b01dc2ae51c6b">SVF::FlowSensitive::plainMap</a></div><div class="ttdeci">virtual void plainMap(void) const</div><div class="ttdoc">Sets the global best mapping as a plain mapping, i.e. n -> n. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
1625
|
-
<div class="ttc" id="classSVF_1_1Options_html_a7704ff30e6fc5043313adf5c655bcd4a"><div class="ttname"><a href="classSVF_1_1Options.html#a7704ff30e6fc5043313adf5c655bcd4a">SVF::Options::OPTSVFG</a></div><div class="ttdeci">static llvm::cl::opt< bool > OPTSVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00159">Options.h:159</a></div></div>
|
|
1623
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a5a8688102f3675cf414b01dc2ae51c6b"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a5a8688102f3675cf414b01dc2ae51c6b">SVF::FlowSensitive::plainMap</a></div><div class="ttdeci">virtual void plainMap(void) const</div><div class="ttdoc">Sets the global best mapping as a plain mapping, i.e. n -> n. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00801">FlowSensitive.cpp:801</a></div></div>
|
|
1626
1624
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
1627
1625
|
<div class="ttc" id="classSVF_1_1Options_html_a75a38fff97f7f18f3945c953cabc168b"><div class="ttname"><a href="classSVF_1_1Options.html#a75a38fff97f7f18f3945c953cabc168b">SVF::Options::PlainMappingFs</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PlainMappingFs</div><div class="ttdoc">Use an explicitly plain mapping with flow-sensitive (not null). </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00046">Options.h:46</a></div></div>
|
|
1628
1626
|
<div class="ttc" id="classSVF_1_1AndersenWaveDiff_html_a48ff6fc4badc79ad3204ae9bd95cc540"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">SVF::AndersenWaveDiff::createAndersenWaveDiff</a></div><div class="ttdeci">static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00430">Andersen.h:430</a></div></div>
|
|
@@ -1671,8 +1669,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1671
1669
|
<p>Return TRUE if this is a strong update STORE statement. </p>
|
|
1672
1670
|
<p>Find the unique element in cpts </p>
|
|
1673
1671
|
|
|
1674
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1675
|
-
<div class="fragment"><div class="line"><a name="
|
|
1672
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00621">621</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1673
|
+
<div class="fragment"><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordtype">bool</span> isSU = <span class="keyword">false</span>;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::dyn_cast<StoreSVFGNode>(node))</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& dstCPSet = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store->getPAGDstNodeID());</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">if</span> (dstCPSet.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() == 1)</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> it = dstCPSet.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>();</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  singleton = *it;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> </div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="comment">// Strong update can be made if this points-to target is not heap, array or field-insensitive.</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361">isHeapMemObj</a>(singleton) && !<a class="code" href="classSVF_1_1PointerAnalysis.html#a89dfeedf8e3e91603a1e9c73e3608a73">isArrayMemObj</a>(singleton)</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  && <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(singleton)-><a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>() == <span class="keyword">false</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  && !<a class="code" href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">isLocalVarInRecursiveFun</a>(singleton))</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  isSU = <span class="keyword">true</span>;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  }</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  }</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">return</span> isSU;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> }</div><div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00235">VFGNode.h:235</a></div></div>
|
|
1676
1674
|
<div class="ttc" id="classSVF_1_1SVFIR_html_af76a55c3b8255a81a566bdce35ffc749"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">SVF::SVFIR::getBaseObj</a></div><div class="ttdeci">const MemObj * getBaseObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00446">SVFIR.h:446</a></div></div>
|
|
1677
1675
|
<div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00174">PointsTo.h:174</a></div></div>
|
|
1678
1676
|
<div class="ttc" id="classSVF_1_1PointsTo_html_aa53962e561399bf493d1f2b9137356f6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00127">PointsTo.h:127</a></div></div>
|
|
@@ -1680,7 +1678,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1680
1678
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00099">PointerAnalysisImpl.h:99</a></div></div>
|
|
1681
1679
|
<div class="ttc" id="classSVF_1_1PointsTo_html_a879783ba6629e500af9aa7dfcda2563d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">SVF::PointsTo::count</a></div><div class="ttdeci">u32_t count(void) const</div><div class="ttdoc">Returns number of elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00106">PointsTo.cpp:106</a></div></div>
|
|
1682
1680
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ae6ea391ac44dffeb6899bb44323c5361"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361">SVF::PointerAnalysis::isHeapMemObj</a></div><div class="ttdeci">bool isHeapMemObj(NodeID id) const</div><div class="ttdoc">Whether this object is heap or array. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00325">PointerAnalysis.h:325</a></div></div>
|
|
1683
|
-
<div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
1681
|
+
<div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00656">SymbolTableInfo.cpp:656</a></div></div>
|
|
1684
1682
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a108380f6f0b67654bb7c7676686096c8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">SVF::PointerAnalysis::isLocalVarInRecursiveFun</a></div><div class="ttdeci">bool isLocalVarInRecursiveFun(NodeID id) const</div><div class="ttdoc">Whether a local variable is in function recursions. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00156">PointerAnalysis.cpp:156</a></div></div>
|
|
1685
1683
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
|
|
1686
1684
|
<div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00027">PointsTo.h:27</a></div></div>
|
|
@@ -1713,8 +1711,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1713
1711
|
|
|
1714
1712
|
<p>Sets the global best mapping as a plain mapping, i.e. n -> n. </p>
|
|
1715
1713
|
|
|
1716
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1717
|
-
<div class="fragment"><div class="line"><a name="
|
|
1714
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00801">801</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1715
|
+
<div class="fragment"><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1Options.html#a2537be131132830c63d408133619a065">Options::NodeAllocStrat</a> == NodeIDAllocator::Strategy::DENSE</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  && <span class="stringliteral">"FS::cluster: plain mapping requires dense allocation strategy."</span>);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> </div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> numObjects = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-><a class="code" href="classSVF_1_1NodeIDAllocator.html#ad63e43c65cb7d7cac7824f5cede5ec89">getNumObjects</a>();</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> plainMapping = std::make_shared<std::vector<NodeID>>(numObjects);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> reversePlainMapping = std::make_shared<std::vector<NodeID>>(numObjects);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i = 0; i < plainMapping->size(); ++i)</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  {</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  plainMapping->at(i) = i;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  reversePlainMapping->at(i) = i;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> </div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <a class="code" href="classSVF_1_1PointsTo.html#a84eca4c7fc833f8ca4d119cd4da08ca8">PointsTo::setCurrentBestNodeMapping</a>(plainMapping, reversePlainMapping);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> }</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
1718
1716
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1719
1717
|
<div class="ttc" id="classSVF_1_1Options_html_a2537be131132830c63d408133619a065"><div class="ttname"><a href="classSVF_1_1Options.html#a2537be131132830c63d408133619a065">SVF::Options::NodeAllocStrat</a></div><div class="ttdeci">static const llvm::cl::opt< SVF::NodeIDAllocator::Strategy > NodeAllocStrat</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00034">Options.h:34</a></div></div>
|
|
1720
1718
|
<div class="ttc" id="classSVF_1_1PointsTo_html_a849f670b38cb6f65fc23707a212591c7"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">SVF::PointsTo::MappingPtr</a></div><div class="ttdeci">std::shared_ptr< std::vector< NodeID > > MappingPtr</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00041">PointsTo.h:41</a></div></div>
|
|
@@ -1749,8 +1747,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1749
1747
|
</div><div class="memdoc">
|
|
1750
1748
|
<p>Prints some easily parseable stats on aliasing of relevant CTir TL PTS. Format: eval-ctir-aliases #TOTAL_TESTS #MAY_ALIAS #NO_ALIAS </p>
|
|
1751
1749
|
|
|
1752
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1753
|
-
<div class="fragment"><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> {</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <a class="code" href="classSVF_1_1DCHGraph.html">DCHGraph</a> *dchg = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1DCHGraph.html">DCHGraph</a>>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>);</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(dchg && <span class="stringliteral">"eval-ctir-aliases needs DCHG."</span>);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> </div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="comment">// < SVFG node ID (loc), SVFIR node of interest (top-level pointer) >.</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::pair<NodeID, NodeID></a>> cmpLocs;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVFG::iterator</a> npair = <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); npair != <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++npair)</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> loc = npair->first;</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *node = npair->second;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> </div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="comment">// Only care about loads, stores, and GEPs.</span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a> *stmt = SVFUtil::dyn_cast<StmtSVFGNode>(node))</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="keywordflow">if</span> (!SVFUtil::isa<LoadSVFGNode>(stmt) && !SVFUtil::isa<StoreSVFGNode>(stmt)</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  && !SVFUtil::isa<GepSVFGNode>(stmt))</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  {</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  }</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span> </div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a21d2fd8bbef0c6f6ddddb5387569a7fa">TypeBasedHeapCloning::getRawCTirMetadata</a>(stmt->getInst() ? stmt->getInst() : stmt->getPAGEdge()->getValue()))</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  {</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  }</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> </div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> p = 0;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordflow">if</span> (SVFUtil::isa<LoadSVFGNode>(stmt))</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  {</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  p = stmt->getPAGSrcNodeID();</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  }</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<StoreSVFGNode>(stmt))</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  {</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  p = stmt->getPAGDstNodeID();</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  }</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<GepSVFGNode>(stmt))</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  {</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  p = stmt->getPAGSrcNodeID();</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  }</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="comment">// Not interested.</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  }</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> </div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  cmpLocs.insert(std::make_pair(loc, p));</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  }</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  }</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="keywordtype">unsigned</span> mayAliases = 0, noAliases = 0;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a94dc671f524ed3ed00f5a54b13f18e18">countAliases</a>(cmpLocs, &mayAliases, &noAliases);</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> </div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <span class="keywordtype">unsigned</span> total = mayAliases + noAliases;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">llvm::outs</a>() << <span class="stringliteral">"eval-ctir-aliases "</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  << total << <span class="stringliteral">" "</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  << mayAliases << <span class="stringliteral">" "</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  << noAliases << <span class="stringliteral">" "</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">llvm::outs</a>() << <span class="stringliteral">" "</span> << <span class="stringliteral">"TOTAL : "</span> << total << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  << <span class="stringliteral">" "</span> << <span class="stringliteral">"MAY : "</span> << mayAliases << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  << <span class="stringliteral">" "</span> << <span class="stringliteral">"MAY % : "</span> << 100 * ((double)mayAliases/(<span class="keywordtype">double</span>)(total)) << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  << <span class="stringliteral">" "</span> << <span class="stringliteral">"NO : "</span> << noAliases << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  << <span class="stringliteral">" "</span> << <span class="stringliteral">"NO % : "</span> << 100 * ((double)noAliases/(<span class="keywordtype">double</span>)(total)) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
|
|
1750
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00818">818</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1751
|
+
<div class="fragment"><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> {</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <a class="code" href="classSVF_1_1DCHGraph.html">DCHGraph</a> *dchg = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1DCHGraph.html">DCHGraph</a>>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(dchg && <span class="stringliteral">"eval-ctir-aliases needs DCHG."</span>);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> </div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="comment">// < SVFG node ID (loc), SVFIR node of interest (top-level pointer) >.</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::pair<NodeID, NodeID></a>> cmpLocs;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVFG::iterator</a> npair = <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); npair != <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++npair)</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> loc = npair->first;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *node = npair->second;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> </div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="comment">// Only care about loads, stores, and GEPs.</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a> *stmt = SVFUtil::dyn_cast<StmtSVFGNode>(node))</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordflow">if</span> (!SVFUtil::isa<LoadSVFGNode>(stmt) && !SVFUtil::isa<StoreSVFGNode>(stmt)</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  && !SVFUtil::isa<GepSVFGNode>(stmt))</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  {</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  }</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> </div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a21d2fd8bbef0c6f6ddddb5387569a7fa">TypeBasedHeapCloning::getRawCTirMetadata</a>(stmt->getInst() ? stmt->getInst() : stmt->getPAGEdge()->getValue()))</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  {</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  }</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span> </div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> p = 0;</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <span class="keywordflow">if</span> (SVFUtil::isa<LoadSVFGNode>(stmt))</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  {</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  p = stmt->getPAGSrcNodeID();</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<StoreSVFGNode>(stmt))</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  {</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  p = stmt->getPAGDstNodeID();</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  }</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<GepSVFGNode>(stmt))</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  {</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  p = stmt->getPAGSrcNodeID();</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  }</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  {</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="comment">// Not interested.</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  }</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> </div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  cmpLocs.insert(std::make_pair(loc, p));</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  }</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  }</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> </div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordtype">unsigned</span> mayAliases = 0, noAliases = 0;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a94dc671f524ed3ed00f5a54b13f18e18">countAliases</a>(cmpLocs, &mayAliases, &noAliases);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> </div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="keywordtype">unsigned</span> total = mayAliases + noAliases;</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">llvm::outs</a>() << <span class="stringliteral">"eval-ctir-aliases "</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  << total << <span class="stringliteral">" "</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  << mayAliases << <span class="stringliteral">" "</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  << noAliases << <span class="stringliteral">" "</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">llvm::outs</a>() << <span class="stringliteral">" "</span> << <span class="stringliteral">"TOTAL : "</span> << total << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  << <span class="stringliteral">" "</span> << <span class="stringliteral">"MAY : "</span> << mayAliases << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  << <span class="stringliteral">" "</span> << <span class="stringliteral">"MAY % : "</span> << 100 * ((double)mayAliases/(<span class="keywordtype">double</span>)(total)) << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  << <span class="stringliteral">" "</span> << <span class="stringliteral">"NO : "</span> << noAliases << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  << <span class="stringliteral">" "</span> << <span class="stringliteral">"NO % : "</span> << 100 * ((double)noAliases/(<span class="keywordtype">double</span>)(total)) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
|
|
1754
1752
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00250">FlowSensitive.h:250</a></div></div>
|
|
1755
1753
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
1756
1754
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
@@ -1763,7 +1761,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1763
1761
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
1764
1762
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00113">VFGNode.h:113</a></div></div>
|
|
1765
1763
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
1766
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a94dc671f524ed3ed00f5a54b13f18e18"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a94dc671f524ed3ed00f5a54b13f18e18">SVF::FlowSensitive::countAliases</a></div><div class="ttdeci">virtual void countAliases(Set< std::pair< NodeID, NodeID >> cmp, unsigned *mayAliases, unsigned *noAliases)</div><div class="ttdoc">Fills may/noAliases for the location/pointer pairs in cmp. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
1764
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a94dc671f524ed3ed00f5a54b13f18e18"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a94dc671f524ed3ed00f5a54b13f18e18">SVF::FlowSensitive::countAliases</a></div><div class="ttdeci">virtual void countAliases(Set< std::pair< NodeID, NodeID >> cmp, unsigned *mayAliases, unsigned *noAliases)</div><div class="ttdoc">Fills may/noAliases for the location/pointer pairs in cmp. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00883">FlowSensitive.cpp:883</a></div></div>
|
|
1767
1765
|
<div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|
|
1768
1766
|
</div><!-- fragment -->
|
|
1769
1767
|
</div>
|
|
@@ -1796,8 +1794,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1796
1794
|
|
|
1797
1795
|
<p>Reimplemented in <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#abce5580e93cba1e591a0bac4e9070816">SVF::FlowSensitiveTBHC</a>.</p>
|
|
1798
1796
|
|
|
1799
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1800
|
-
<div class="fragment"><div class="line"><a name="
|
|
1797
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00416">416</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1798
|
+
<div class="fragment"><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcID = addr-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>();</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(srcID))</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  srcID = <a class="code" href="classSVF_1_1PointerAnalysis.html#a68b05bc02c5473c1e0d39ac4f4454bac">getFIObjVar</a>(srcID);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordtype">bool</span> changed = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(addr-><a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>(), srcID);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b">addrTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00143">VFGNode.h:143</a></div></div>
|
|
1801
1799
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
1802
1800
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a38f3ed35185addf701d4401bfdd5f29b"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b">SVF::FlowSensitive::addrTime</a></div><div class="ttdeci">double addrTime</div><div class="ttdoc">time of handling address edges </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00312">FlowSensitive.h:312</a></div></div>
|
|
1803
1801
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_af68485a2208553579f9c2e4b2cb20cff"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">SVF::BVDataPTAImpl::addPts</a></div><div class="ttdeci">virtual bool addPts(NodeID id, NodeID ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00132">PointerAnalysisImpl.h:132</a></div></div>
|
|
@@ -1837,8 +1835,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1837
1835
|
|
|
1838
1836
|
<p>Reimplemented in <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#ab6525ac133151692176a03227f81bcac">SVF::FlowSensitiveTBHC</a>.</p>
|
|
1839
1837
|
|
|
1840
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1841
|
-
<div class="fragment"><div class="line"><a name="
|
|
1838
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00433">433</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1839
|
+
<div class="fragment"><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordtype">bool</span> changed = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">unionPts</a>(copy-><a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>(), copy-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>());</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a888d6334e5e226c634680e4c0674dcfb">copyTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00143">VFGNode.h:143</a></div></div>
|
|
1842
1840
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ae7073c07bfd7912f888d54d4652c7cc2"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">SVF::BVDataPTAImpl::unionPts</a></div><div class="ttdeci">virtual bool unionPts(NodeID id, const PointsTo &target)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00124">PointerAnalysisImpl.h:124</a></div></div>
|
|
1843
1841
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_a791a01f5d3528f8a8bf19369b5c61c37"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">SVF::StmtVFGNode::getPAGSrcNodeID</a></div><div class="ttdeci">NodeID getPAGSrcNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00138">VFGNode.h:138</a></div></div>
|
|
1844
1842
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
@@ -1875,10 +1873,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1875
1873
|
|
|
1876
1874
|
<p>Reimplemented in <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#abf96f7329d8c50dcd75da048548d2c85">SVF::FlowSensitiveTBHC</a>.</p>
|
|
1877
1875
|
|
|
1878
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1879
|
-
<div class="fragment"><div class="line"><a name="
|
|
1876
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00466">466</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1877
|
+
<div class="fragment"><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& srcPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(edge-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>());</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> </div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> tmpDstPts;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepStmt = SVFUtil::cast<GepStmt>(edge-><a class="code" href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">getPAGEdge</a>());</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">if</span> (gepStmt-><a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : srcPts)</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a45462312a746339fff8b990a093d9a1b">isBlkObjOrConstantObj</a>(o))</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  tmpDstPts.set(o);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(o);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  tmpDstPts.set(<a class="code" href="classSVF_1_1PointerAnalysis.html#a68b05bc02c5473c1e0d39ac4f4454bac">getFIObjVar</a>(o));</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">else</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : srcPts)</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a45462312a746339fff8b990a093d9a1b">isBlkObjOrConstantObj</a>(o))</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  tmpDstPts.set(o);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> fieldSrcPtdNode = <a class="code" href="classSVF_1_1PointerAnalysis.html#acbbc0934af9bc0145389dc41430c6d8b">getGepObjVar</a>(o, gepStmt-><a class="code" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8">getLocationSet</a>());</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  tmpDstPts.set(fieldSrcPtdNode);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">unionPts</a>(edge-><a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>(), tmpDstPts))</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290">gepTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00143">VFGNode.h:143</a></div></div>
|
|
1880
1878
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
1881
|
-
<div class="ttc" id="
|
|
1879
|
+
<div class="ttc" id="classSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00409">SVFStatements.h:409</a></div></div>
|
|
1882
1880
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ae7073c07bfd7912f888d54d4652c7cc2"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">SVF::BVDataPTAImpl::unionPts</a></div><div class="ttdeci">virtual bool unionPts(NodeID id, const PointsTo &target)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00124">PointerAnalysisImpl.h:124</a></div></div>
|
|
1883
1881
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_a4dd7615f42971da9b6ec1dc04f0ec4e6"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">SVF::StmtVFGNode::getPAGEdge</a></div><div class="ttdeci">const PAGEdge * getPAGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00133">VFGNode.h:133</a></div></div>
|
|
1884
1882
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_acbbc0934af9bc0145389dc41430c6d8b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#acbbc0934af9bc0145389dc41430c6d8b">SVF::PointerAnalysis::getGepObjVar</a></div><div class="ttdeci">NodeID getGepObjVar(NodeID id, const LocationSet &ls)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00354">PointerAnalysis.h:354</a></div></div>
|
|
@@ -1887,9 +1885,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1887
1885
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_a791a01f5d3528f8a8bf19369b5c61c37"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">SVF::StmtVFGNode::getPAGSrcNodeID</a></div><div class="ttdeci">NodeID getPAGSrcNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00138">VFGNode.h:138</a></div></div>
|
|
1888
1886
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
1889
1887
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a45462312a746339fff8b990a093d9a1b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a45462312a746339fff8b990a093d9a1b">SVF::PointerAnalysis::isBlkObjOrConstantObj</a></div><div class="ttdeci">virtual bool isBlkObjOrConstantObj(NodeID ptd) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00313">PointerAnalysis.h:313</a></div></div>
|
|
1890
|
-
<div class="ttc" id="classSVF_1_1PointsTo_html_ab196d86cfb48d1c5d27a0c03c7497afa"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">SVF::PointsTo::set</a></div><div class="ttdeci">void set(u32_t n)</div><div class="ttdoc">Inserts n in the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00149">PointsTo.cpp:149</a></div></div>
|
|
1891
1888
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00176">SVFBasicTypes.h:176</a></div></div>
|
|
1892
|
-
<div class="ttc" id="
|
|
1889
|
+
<div class="ttc" id="classSVF_1_1GepStmt_html_abec33091e0dac0cdd5b95b6d7b0db3d8"><div class="ttname"><a href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8">SVF::GepStmt::getLocationSet</a></div><div class="ttdeci">const LocationSet & getLocationSet() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00435">SVFStatements.h:435</a></div></div>
|
|
1890
|
+
<div class="ttc" id="classSVF_1_1GepStmt_html_a0ddf180a0f7ba64fc8655687910e3788"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">SVF::GepStmt::isVariantFieldGep</a></div><div class="ttdeci">bool isVariantFieldGep() const</div><div class="ttdoc">Gep statement with a variant field index (pointer arithmetic) for struct field access. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00451">SVFStatements.h:451</a></div></div>
|
|
1893
1891
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a282126e5b67ed4e19aa40c81180b8290"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290">SVF::FlowSensitive::gepTime</a></div><div class="ttdeci">double gepTime</div><div class="ttdoc">time of handling gep edges </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00314">FlowSensitive.h:314</a></div></div>
|
|
1894
1892
|
<div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00027">PointsTo.h:27</a></div></div>
|
|
1895
1893
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a68b05bc02c5473c1e0d39ac4f4454bac"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a68b05bc02c5473c1e0d39ac4f4454bac">SVF::PointerAnalysis::getFIObjVar</a></div><div class="ttdeci">NodeID getFIObjVar(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00350">PointerAnalysis.h:350</a></div></div>
|
|
@@ -1926,8 +1924,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1926
1924
|
|
|
1927
1925
|
<p>Reimplemented in <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#a1d1f71c41cc3e81e636b58f4436e6d9b">SVF::VersionedFlowSensitive</a>, and <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a42c8023e0e60e8701ec197b3d775b423">SVF::FlowSensitiveTBHC</a>.</p>
|
|
1928
1926
|
|
|
1929
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1930
|
-
<div class="fragment"><div class="line"><a name="
|
|
1927
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00518">518</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1928
|
+
<div class="fragment"><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar = load-><a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>();</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> </div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& srcPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(load-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>());</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> ptdIt = srcPts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(); ptdIt != srcPts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); ++ptdIt)</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd = *ptdIt;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> </div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(ptd) || <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a07716ca7f769f704a80ccee1a6ad7ee2">isNonPointerObj</a>(ptd))</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a16d757abf69ad77951b808dc18ca2999">unionPtsFromIn</a>(load, ptd, dstVar))</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(ptd))</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>& allFields = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5dddd53b4ca9d7cc23d88ed9f3de9fde">getAllFieldsObjVars</a>(ptd);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">for</span> (NodeBS::iterator fieldIt = allFields.begin(), fieldEit = allFields.end();</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  fieldIt != fieldEit; ++fieldIt)</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a16d757abf69ad77951b808dc18ca2999">unionPtsFromIn</a>(load, *fieldIt, dstVar))</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  }</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">loadTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00143">VFGNode.h:143</a></div></div>
|
|
1931
1929
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aab4f70210eb1e6447a24697d3b459067"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">SVF::FlowSensitive::loadTime</a></div><div class="ttdeci">double loadTime</div><div class="ttdoc">time of load edges </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00315">FlowSensitive.h:315</a></div></div>
|
|
1932
1930
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
1933
1931
|
<div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00174">PointsTo.h:174</a></div></div>
|
|
@@ -1980,12 +1978,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1980
1978
|
|
|
1981
1979
|
<p>Reimplemented in <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#a8cad0df2ae7df81dc2a966e694a0f7a2">SVF::VersionedFlowSensitive</a>.</p>
|
|
1982
1980
|
|
|
1983
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
1984
|
-
<div class="fragment"><div class="line"><a name="
|
|
1981
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00189">189</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
1982
|
+
<div class="fragment"><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(nodeId);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a979f89495966d71f9b470d832384ebd6">processSVFGNode</a>(node))</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="classSVF_1_1WPASolver.html#a541ef7fda44ce79086c30b07a5f6126c">propagate</a>(&node);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a9622f0b7b16694b0c74b07834f598e67">clearAllDFOutVarFlag</a>(node);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> }</div><div class="ttc" id="classSVF_1_1WPASolver_html_a541ef7fda44ce79086c30b07a5f6126c"><div class="ttname"><a href="classSVF_1_1WPASolver.html#a541ef7fda44ce79086c30b07a5f6126c">SVF::WPASolver::propagate</a></div><div class="ttdeci">virtual void propagate(GNODE *v)</div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00133">WPASolver.h:133</a></div></div>
|
|
1985
1983
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00250">FlowSensitive.h:250</a></div></div>
|
|
1986
1984
|
<div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
|
|
1987
1985
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a9622f0b7b16694b0c74b07834f598e67"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a9622f0b7b16694b0c74b07834f598e67">SVF::FlowSensitive::clearAllDFOutVarFlag</a></div><div class="ttdeci">void clearAllDFOutVarFlag(const SVFGNode *stmt)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00212">FlowSensitive.h:212</a></div></div>
|
|
1988
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a979f89495966d71f9b470d832384ebd6"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a979f89495966d71f9b470d832384ebd6">SVF::FlowSensitive::processSVFGNode</a></div><div class="ttdeci">bool processSVFGNode(SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
1986
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a979f89495966d71f9b470d832384ebd6"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a979f89495966d71f9b470d832384ebd6">SVF::FlowSensitive::processSVFGNode</a></div><div class="ttdeci">bool processSVFGNode(SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00201">FlowSensitive.cpp:201</a></div></div>
|
|
1989
1987
|
<div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|
|
1990
1988
|
</div><!-- fragment -->
|
|
1991
1989
|
</div>
|
|
@@ -2017,8 +2015,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2017
2015
|
|
|
2018
2016
|
<p>Reimplemented in <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a0eb8335dd45b35b20d34c981b86b059c">SVF::FlowSensitiveTBHC</a>.</p>
|
|
2019
2017
|
|
|
2020
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2021
|
-
<div class="fragment"><div class="line"><a name="
|
|
2018
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00445">445</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2019
|
+
<div class="fragment"><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> pagDst = phi-><a class="code" href="classSVF_1_1PHIVFGNode.html#abd54e567a0826bbec277302e0c4f78a2">getRes</a>()-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericNode.html#ab6dc1ae41ae23b383f8add474caa7429">PHISVFGNode::OPVers::const_iterator</a> it = phi-><a class="code" href="classSVF_1_1PHIVFGNode.html#a2e00f6d582aa4ac9aa116cc6d5c79369">opVerBegin</a>(), eit = phi-><a class="code" href="classSVF_1_1PHIVFGNode.html#add18c60773871744123d12a037e78e20">opVerEnd</a>(); it != eit; ++it)</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = it->second->getId();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& srcPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(src);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">unionPts</a>(pagDst, srcPts))</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aee7d59b7ad00cf1cf6e3fba19513aa42">phiTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> }</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
2022
2020
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ae7073c07bfd7912f888d54d4652c7cc2"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">SVF::BVDataPTAImpl::unionPts</a></div><div class="ttdeci">virtual bool unionPts(NodeID id, const PointsTo &target)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00124">PointerAnalysisImpl.h:124</a></div></div>
|
|
2023
2021
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aee7d59b7ad00cf1cf6e3fba19513aa42"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aee7d59b7ad00cf1cf6e3fba19513aa42">SVF::FlowSensitive::phiTime</a></div><div class="ttdeci">double phiTime</div><div class="ttdoc">time of phi nodes. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00317">FlowSensitive.h:317</a></div></div>
|
|
2024
2022
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ab6dc1ae41ae23b383f8add474caa7429"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ab6dc1ae41ae23b383f8add474caa7429">SVF::GenericNode::const_iterator</a></div><div class="ttdeci">GEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00140">GenericGraph.h:140</a></div></div>
|
|
@@ -2064,11 +2062,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2064
2062
|
|
|
2065
2063
|
<p>Reimplemented in <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#aa96f517740420665168e9b0c7d2347f1">SVF::VersionedFlowSensitive</a>, and <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#ac937e0e388071bbf94a477e1880663eb">SVF::FlowSensitiveTBHC</a>.</p>
|
|
2066
2064
|
|
|
2067
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2068
|
-
<div class="fragment"><div class="line"><a name="
|
|
2065
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00561">561</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2066
|
+
<div class="fragment"><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> </div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> & dstPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>());</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> </div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">if</span> (dstPts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> </div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>()).<a class="code" href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> it = dstPts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = dstPts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); it != eit; ++it)</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd = *it;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(ptd) || <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a07716ca7f769f704a80ccee1a6ad7ee2">isNonPointerObj</a>(ptd))</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a49104435f8d20015907a1c8f58a76577">unionPtsFromTop</a>(store, store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>(), ptd))</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  }</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7">storeTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> </div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keywordtype">double</span> updateStart = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="comment">// also merge the DFInSet to DFOutSet.</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="comment"></span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> singleton;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordtype">bool</span> isSU = <a class="code" href="classSVF_1_1FlowSensitive.html#a42a7e39e0e15576742f8ba7c32579ea2">isStrongUpdate</a>(store, singleton);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordflow">if</span> (isSU)</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">svfgHasSU</a>.set(store-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a8ebe4342c1496b906ee1b6450558c3e8">strongUpdateOutFromIn</a>(store, singleton))</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">svfgHasSU</a>.reset(store-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#ab492c283e2264b4cbd4c192e805b7750">weakUpdateOutFromIn</a>(store))</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  }</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordtype">double</span> updateEnd = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226">updateTime</a> += (updateEnd - updateStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> </div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00143">VFGNode.h:143</a></div></div>
|
|
2069
2067
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a49104435f8d20015907a1c8f58a76577"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a49104435f8d20015907a1c8f58a76577">SVF::FlowSensitive::unionPtsFromTop</a></div><div class="ttdeci">virtual bool unionPtsFromTop(const SVFGNode *stmt, NodeID srcVar, NodeID dstVar)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00207">FlowSensitive.h:207</a></div></div>
|
|
2070
2068
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
2071
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a42a7e39e0e15576742f8ba7c32579ea2"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a42a7e39e0e15576742f8ba7c32579ea2">SVF::FlowSensitive::isStrongUpdate</a></div><div class="ttdeci">bool isStrongUpdate(const SVFGNode *node, NodeID &singleton)</div><div class="ttdoc">Return TRUE if this is a strong update STORE statement. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
2069
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a42a7e39e0e15576742f8ba7c32579ea2"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a42a7e39e0e15576742f8ba7c32579ea2">SVF::FlowSensitive::isStrongUpdate</a></div><div class="ttdeci">bool isStrongUpdate(const SVFGNode *node, NodeID &singleton)</div><div class="ttdoc">Return TRUE if this is a strong update STORE statement. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00621">FlowSensitive.cpp:621</a></div></div>
|
|
2072
2070
|
<div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00174">PointsTo.h:174</a></div></div>
|
|
2073
2071
|
<div class="ttc" id="cuddInt_8c_html_a5beb39637a978181c7c17714ac96672e"><div class="ttname"><a href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a></div><div class="ttdeci">static DdNode * empty</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l28567">cuddInt.c:28567</a></div></div>
|
|
2074
2072
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a5d15e4b09784f438568ebe61f8aa5156"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">SVF::SVFIR::isConstantObj</a></div><div class="ttdeci">bool isConstantObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00408">SVFIR.h:408</a></div></div>
|
|
@@ -2117,27 +2115,27 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2117
2115
|
</div><div class="memdoc">
|
|
2118
2116
|
<p>Process each <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node </p>
|
|
2119
2117
|
|
|
2120
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2121
|
-
<div class="fragment"><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrVFGNode.html">AddrSVFGNode</a>* addr = SVFUtil::dyn_cast<AddrSVFGNode>(node))</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7">numOfProcessedAddr</a>++;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FlowSensitive.html#abb37c5e4e6fa4742e8dbcf397aea086e">processAddr</a>(addr))</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CopyVFGNode.html">CopySVFGNode</a>* copy = SVFUtil::dyn_cast<CopySVFGNode>(node))</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54">numOfProcessedCopy</a>++;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FlowSensitive.html#aa401cc90de4e1c6842f08a43a28c5aa1">processCopy</a>(copy))</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1GepVFGNode.html">GepSVFGNode</a>* gep = SVFUtil::dyn_cast<GepSVFGNode>(node))</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e">numOfProcessedGep</a>++;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FlowSensitive.html#ae017c39ac471727d06868e0eacafd791">processGep</a>(gep))</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* load = SVFUtil::dyn_cast<LoadSVFGNode>(node))</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268">numOfProcessedLoad</a>++;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FlowSensitive.html#a9968530b3dee876f55e6659530decf27">processLoad</a>(load))</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::dyn_cast<StoreSVFGNode>(node))</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d">numOfProcessedStore</a>++;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FlowSensitive.html#aa37d591d2d4f65957e840bef4d142a6a">processStore</a>(store))</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>* phi = SVFUtil::dyn_cast<PHISVFGNode>(node))</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70">numOfProcessedPhi</a>++;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#aa36fd1387e948e83107431179d819067">processPhi</a>(phi))</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<MSSAPHISVFGNode>(node) || SVFUtil::isa<FormalINSVFGNode>(node)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  || SVFUtil::isa<FormalOUTSVFGNode>(node) || SVFUtil::isa<ActualINSVFGNode>(node)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  || SVFUtil::isa<ActualOUTSVFGNode>(node))</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf">numOfProcessedMSSANode</a>++;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ActualParmSVFGNode>(node) || SVFUtil::isa<FormalParmSVFGNode>(node)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  || SVFUtil::isa<ActualRetSVFGNode>(node) || SVFUtil::isa<FormalRetSVFGNode>(node)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  || SVFUtil::isa<NullPtrSVFGNode>(node))</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<CmpVFGNode>(node) || SVFUtil::isa<BinaryOPVFGNode>(node) || SVFUtil::dyn_cast<UnaryOPVFGNode>(node))</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"unexpected kind of SVFG nodes"</span>);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72">processTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_ae2e58d18abcdddc7a5a87f4edc5f3b72"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72">SVF::FlowSensitive::processTime</a></div><div class="ttdeci">double processTime</div><div class="ttdoc">time of processNode. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00307">FlowSensitive.h:307</a></div></div>
|
|
2118
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00201">201</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2119
|
+
<div class="fragment"><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrVFGNode.html">AddrSVFGNode</a>* addr = SVFUtil::dyn_cast<AddrSVFGNode>(node))</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7">numOfProcessedAddr</a>++;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FlowSensitive.html#abb37c5e4e6fa4742e8dbcf397aea086e">processAddr</a>(addr))</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CopyVFGNode.html">CopySVFGNode</a>* copy = SVFUtil::dyn_cast<CopySVFGNode>(node))</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54">numOfProcessedCopy</a>++;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FlowSensitive.html#aa401cc90de4e1c6842f08a43a28c5aa1">processCopy</a>(copy))</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1GepVFGNode.html">GepSVFGNode</a>* gep = SVFUtil::dyn_cast<GepSVFGNode>(node))</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e">numOfProcessedGep</a>++;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FlowSensitive.html#ae017c39ac471727d06868e0eacafd791">processGep</a>(gep))</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* load = SVFUtil::dyn_cast<LoadSVFGNode>(node))</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268">numOfProcessedLoad</a>++;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FlowSensitive.html#a9968530b3dee876f55e6659530decf27">processLoad</a>(load))</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::dyn_cast<StoreSVFGNode>(node))</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d">numOfProcessedStore</a>++;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FlowSensitive.html#aa37d591d2d4f65957e840bef4d142a6a">processStore</a>(store))</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>* phi = SVFUtil::dyn_cast<PHISVFGNode>(node))</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70">numOfProcessedPhi</a>++;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#aa36fd1387e948e83107431179d819067">processPhi</a>(phi))</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<MSSAPHISVFGNode>(node) || SVFUtil::isa<FormalINSVFGNode>(node)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  || SVFUtil::isa<FormalOUTSVFGNode>(node) || SVFUtil::isa<ActualINSVFGNode>(node)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  || SVFUtil::isa<ActualOUTSVFGNode>(node))</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf">numOfProcessedMSSANode</a>++;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ActualParmSVFGNode>(node) || SVFUtil::isa<FormalParmSVFGNode>(node)</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  || SVFUtil::isa<ActualRetSVFGNode>(node) || SVFUtil::isa<FormalRetSVFGNode>(node)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  || SVFUtil::isa<NullPtrSVFGNode>(node))</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<CmpVFGNode>(node) || SVFUtil::isa<BinaryOPVFGNode>(node) || SVFUtil::dyn_cast<UnaryOPVFGNode>(node))</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"unexpected kind of SVFG nodes"</span>);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72">processTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_ae2e58d18abcdddc7a5a87f4edc5f3b72"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72">SVF::FlowSensitive::processTime</a></div><div class="ttdeci">double processTime</div><div class="ttdoc">time of processNode. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00307">FlowSensitive.h:307</a></div></div>
|
|
2122
2120
|
<div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00235">VFGNode.h:235</a></div></div>
|
|
2123
2121
|
<div class="ttc" id="classSVF_1_1AddrVFGNode_html"><div class="ttname"><a href="classSVF_1_1AddrVFGNode.html">SVF::AddrVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00747">VFGNode.h:747</a></div></div>
|
|
2124
2122
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ae4253bc632ffffe2498263c90f456ca7"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7">SVF::FlowSensitive::numOfProcessedAddr</a></div><div class="ttdeci">u32_t numOfProcessedAddr</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00291">FlowSensitive.h:291</a></div></div>
|
|
2125
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aa401cc90de4e1c6842f08a43a28c5aa1"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aa401cc90de4e1c6842f08a43a28c5aa1">SVF::FlowSensitive::processCopy</a></div><div class="ttdeci">virtual bool processCopy(const CopySVFGNode *copy)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
2123
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aa401cc90de4e1c6842f08a43a28c5aa1"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aa401cc90de4e1c6842f08a43a28c5aa1">SVF::FlowSensitive::processCopy</a></div><div class="ttdeci">virtual bool processCopy(const CopySVFGNode *copy)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00433">FlowSensitive.cpp:433</a></div></div>
|
|
2126
2124
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2127
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aa37d591d2d4f65957e840bef4d142a6a"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aa37d591d2d4f65957e840bef4d142a6a">SVF::FlowSensitive::processStore</a></div><div class="ttdeci">virtual bool processStore(const StoreSVFGNode *store)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
2125
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aa37d591d2d4f65957e840bef4d142a6a"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aa37d591d2d4f65957e840bef4d142a6a">SVF::FlowSensitive::processStore</a></div><div class="ttdeci">virtual bool processStore(const StoreSVFGNode *store)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00561">FlowSensitive.cpp:561</a></div></div>
|
|
2128
2126
|
<div class="ttc" id="classSVF_1_1CopyVFGNode_html"><div class="ttname"><a href="classSVF_1_1CopyVFGNode.html">SVF::CopyVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00274">VFGNode.h:274</a></div></div>
|
|
2129
2127
|
<div class="ttc" id="classSVF_1_1PHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html">SVF::PHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00624">VFGNode.h:624</a></div></div>
|
|
2130
2128
|
<div class="ttc" id="classSVF_1_1GepVFGNode_html"><div class="ttname"><a href="classSVF_1_1GepVFGNode.html">SVF::GepVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00585">VFGNode.h:585</a></div></div>
|
|
2131
2129
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a669e8f1dd8572b7dcff373c9787a923d"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d">SVF::FlowSensitive::numOfProcessedStore</a></div><div class="ttdeci">u32_t numOfProcessedStore</div><div class="ttdoc">Number of processed Load node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00296">FlowSensitive.h:296</a></div></div>
|
|
2132
2130
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ac39abcb40e4b568ab59b7cf48ed10f70"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70">SVF::FlowSensitive::numOfProcessedPhi</a></div><div class="ttdeci">u32_t numOfProcessedPhi</div><div class="ttdoc">Number of processed Gep node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00294">FlowSensitive.h:294</a></div></div>
|
|
2133
2131
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a0e1a0bdbf4f81a3600ac26ac011ac268"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268">SVF::FlowSensitive::numOfProcessedLoad</a></div><div class="ttdeci">u32_t numOfProcessedLoad</div><div class="ttdoc">Number of processed Phi node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00295">FlowSensitive.h:295</a></div></div>
|
|
2134
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_abb37c5e4e6fa4742e8dbcf397aea086e"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#abb37c5e4e6fa4742e8dbcf397aea086e">SVF::FlowSensitive::processAddr</a></div><div class="ttdeci">virtual bool processAddr(const AddrSVFGNode *addr)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
2135
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ae017c39ac471727d06868e0eacafd791"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae017c39ac471727d06868e0eacafd791">SVF::FlowSensitive::processGep</a></div><div class="ttdeci">virtual bool processGep(const GepSVFGNode *edge)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
2132
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_abb37c5e4e6fa4742e8dbcf397aea086e"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#abb37c5e4e6fa4742e8dbcf397aea086e">SVF::FlowSensitive::processAddr</a></div><div class="ttdeci">virtual bool processAddr(const AddrSVFGNode *addr)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00416">FlowSensitive.cpp:416</a></div></div>
|
|
2133
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ae017c39ac471727d06868e0eacafd791"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae017c39ac471727d06868e0eacafd791">SVF::FlowSensitive::processGep</a></div><div class="ttdeci">virtual bool processGep(const GepSVFGNode *edge)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00466">FlowSensitive.cpp:466</a></div></div>
|
|
2136
2134
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
2137
2135
|
<div class="ttc" id="classSVF_1_1LoadVFGNode_html"><div class="ttname"><a href="classSVF_1_1LoadVFGNode.html">SVF::LoadVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00196">VFGNode.h:196</a></div></div>
|
|
2138
2136
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00176">SVFBasicTypes.h:176</a></div></div>
|
|
2139
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a9968530b3dee876f55e6659530decf27"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a9968530b3dee876f55e6659530decf27">SVF::FlowSensitive::processLoad</a></div><div class="ttdeci">virtual bool processLoad(const LoadSVFGNode *load)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
2140
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aa36fd1387e948e83107431179d819067"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aa36fd1387e948e83107431179d819067">SVF::FlowSensitive::processPhi</a></div><div class="ttdeci">virtual bool processPhi(const PHISVFGNode *phi)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
2137
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a9968530b3dee876f55e6659530decf27"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a9968530b3dee876f55e6659530decf27">SVF::FlowSensitive::processLoad</a></div><div class="ttdeci">virtual bool processLoad(const LoadSVFGNode *load)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00518">FlowSensitive.cpp:518</a></div></div>
|
|
2138
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aa36fd1387e948e83107431179d819067"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aa36fd1387e948e83107431179d819067">SVF::FlowSensitive::processPhi</a></div><div class="ttdeci">virtual bool processPhi(const PHISVFGNode *phi)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00445">FlowSensitive.cpp:445</a></div></div>
|
|
2141
2139
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a88a111b6bc347d6562db7af8bd8f2f0e"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e">SVF::FlowSensitive::numOfProcessedGep</a></div><div class="ttdeci">u32_t numOfProcessedGep</div><div class="ttdoc">Number of processed Copy node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00293">FlowSensitive.h:293</a></div></div>
|
|
2142
2140
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_af71a5ae3aef022c569e89f40515072cf"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf">SVF::FlowSensitive::numOfProcessedMSSANode</a></div><div class="ttdeci">u32_t numOfProcessedMSSANode</div><div class="ttdoc">Number of processed formal ret node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00299">FlowSensitive.h:299</a></div></div>
|
|
2143
2141
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a19e017f3ed6429fa30687018e64dae54"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54">SVF::FlowSensitive::numOfProcessedCopy</a></div><div class="ttdeci">u32_t numOfProcessedCopy</div><div class="ttdoc">Number of processed Addr node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00292">FlowSensitive.h:292</a></div></div>
|
|
@@ -2181,8 +2179,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2181
2179
|
<p>Propagate points-to information from an actual-param to a formal-param. Not necessary if <a class="el" href="classSVF_1_1SVFGOPT.html">SVFGOPT</a> is used instead of original <a class="el" href="classSVF_1_1SVFG.html">SVFG</a>.</p>
|
|
2182
2180
|
<p>Propagate points-to information from actual-param to formal-param. Not necessary if <a class="el" href="classSVF_1_1SVFGOPT.html">SVFGOPT</a> is used instead of original <a class="el" href="classSVF_1_1SVFG.html">SVFG</a>. </p>
|
|
2183
2181
|
|
|
2184
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2185
|
-
<div class="fragment"><div class="line"><a name="
|
|
2182
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00326">326</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2183
|
+
<div class="fragment"><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmSVFGNode</a>* fp = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmSVFGNode</a>>(dst);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(fp && <span class="stringliteral">"expecting a formal param node"</span>);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> pagDst = fp-><a class="code" href="classSVF_1_1FormalParmVFGNode.html#ab1a9031c1fc5102e072b5035151c131c">getParam</a>()-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &srcCPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(ap-><a class="code" href="classSVF_1_1ActualParmVFGNode.html#a8932b197a076ab3069a9fe8b73e7fc32">getParam</a>()-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordtype">bool</span> changed = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">unionPts</a>(pagDst, srcCPts);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> }</div><div class="ttc" id="classSVF_1_1FormalParmVFGNode_html_ab1a9031c1fc5102e072b5035151c131c"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html#ab1a9031c1fc5102e072b5035151c131c">SVF::FormalParmVFGNode::getParam</a></div><div class="ttdeci">const PAGNode * getParam() const</div><div class="ttdoc">Return parameter. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00895">VFGNode.h:895</a></div></div>
|
|
2186
2184
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
2187
2185
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2188
2186
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ae7073c07bfd7912f888d54d4652c7cc2"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">SVF::BVDataPTAImpl::unionPts</a></div><div class="ttdeci">virtual bool unionPts(NodeID id, const PointsTo &target)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00124">PointerAnalysisImpl.h:124</a></div></div>
|
|
@@ -2231,8 +2229,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2231
2229
|
<p>Propagate points-to information from a formal-ret to an actual-ret. Not necessary if <a class="el" href="classSVF_1_1SVFGOPT.html">SVFGOPT</a> is used instead of original <a class="el" href="classSVF_1_1SVFG.html">SVFG</a>.</p>
|
|
2232
2230
|
<p>Propagate points-to information from formal-ret to actual-ret. Not necessary if <a class="el" href="classSVF_1_1SVFGOPT.html">SVFGOPT</a> is used instead of original <a class="el" href="classSVF_1_1SVFG.html">SVFG</a>. </p>
|
|
2233
2231
|
|
|
2234
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2235
|
-
<div class="fragment"><div class="line"><a name="
|
|
2232
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00342">342</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2233
|
+
<div class="fragment"><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>* ar = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>>(dst);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(ar && <span class="stringliteral">"expecting an actual return node"</span>);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> pagDst = ar-><a class="code" href="classSVF_1_1ActualRetVFGNode.html#a4bcfddf05da46729c670b4f450f9d606">getRev</a>()-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> & srcCPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(fr-><a class="code" href="classSVF_1_1FormalRetVFGNode.html#a62a894e71fcf7a3db19c0488d96a7262">getRet</a>()-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordtype">bool</span> changed = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">unionPts</a>(pagDst, srcCPts);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> }</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
2236
2234
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2237
2235
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ae7073c07bfd7912f888d54d4652c7cc2"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">SVF::BVDataPTAImpl::unionPts</a></div><div class="ttdeci">virtual bool unionPts(NodeID id, const PointsTo &target)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00124">PointerAnalysisImpl.h:124</a></div></div>
|
|
2238
2236
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00099">PointerAnalysisImpl.h:99</a></div></div>
|
|
@@ -2274,8 +2272,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2274
2272
|
|
|
2275
2273
|
<p>Reimplemented in <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a15b8610fd7456d158a9e640c69d401a0">SVF::FlowSensitiveTBHC</a>.</p>
|
|
2276
2274
|
|
|
2277
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2278
|
-
<div class="fragment"><div class="line"><a name="
|
|
2275
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00295">295</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2276
|
+
<div class="fragment"><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>();</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="comment">// If this is an actual-param or formal-ret, top-level pointer's pts must be</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="comment">// propagated from src to dst.</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmSVFGNode</a>* ap = SVFUtil::dyn_cast<ActualParmSVFGNode>(src))</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  changed = <a class="code" href="classSVF_1_1FlowSensitive.html#a3574977acd161925cadcb05de6d3247d">propagateFromAPToFP</a>(ap, dst);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetSVFGNode</a>* fp = SVFUtil::dyn_cast<FormalRetSVFGNode>(src))</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  changed = <a class="code" href="classSVF_1_1FlowSensitive.html#a3abffe1434386b1ce349fbed0cfe0967">propagateFromFRToAR</a>(fp, dst);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="comment">// Direct SVFG edge links between def and use of a top-level pointer.</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="comment">// There's no points-to information propagated along direct edge.</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">// Since the top-level pointer's value has been changed at src node,</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="comment">// return TRUE to put dst node into the work list.</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ae086de68233375be42185f0af706687a">directPropaTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_a3574977acd161925cadcb05de6d3247d"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a3574977acd161925cadcb05de6d3247d">SVF::FlowSensitive::propagateFromAPToFP</a></div><div class="ttdeci">virtual bool propagateFromAPToFP(const ActualParmSVFGNode *ap, const SVFGNode *dst)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00326">FlowSensitive.cpp:326</a></div></div>
|
|
2279
2277
|
<div class="ttc" id="classSVF_1_1ActualParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html">SVF::ActualParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00831">VFGNode.h:831</a></div></div>
|
|
2280
2278
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
|
|
2281
2279
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
@@ -2283,7 +2281,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2283
2281
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00176">SVFBasicTypes.h:176</a></div></div>
|
|
2284
2282
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ae086de68233375be42185f0af706687a"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae086de68233375be42185f0af706687a">SVF::FlowSensitive::directPropaTime</a></div><div class="ttdeci">double directPropaTime</div><div class="ttdoc">time of points-to propagation of address-taken objects </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00309">FlowSensitive.h:309</a></div></div>
|
|
2285
2283
|
<div class="ttc" id="classSVF_1_1FormalRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html">SVF::FormalRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01004">VFGNode.h:1004</a></div></div>
|
|
2286
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a3abffe1434386b1ce349fbed0cfe0967"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a3abffe1434386b1ce349fbed0cfe0967">SVF::FlowSensitive::propagateFromFRToAR</a></div><div class="ttdeci">virtual bool propagateFromFRToAR(const FormalRetSVFGNode *fr, const SVFGNode *dst)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
2284
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a3abffe1434386b1ce349fbed0cfe0967"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a3abffe1434386b1ce349fbed0cfe0967">SVF::FlowSensitive::propagateFromFRToAR</a></div><div class="ttdeci">virtual bool propagateFromFRToAR(const FormalRetSVFGNode *fr, const SVFGNode *dst)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00342">FlowSensitive.cpp:342</a></div></div>
|
|
2287
2285
|
<div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|
|
2288
2286
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a3c4eaa1695ea13405911ae1621f98edc"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">SVF::PTAStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00114">PTAStat.cpp:114</a></div></div>
|
|
2289
2287
|
</div><!-- fragment -->
|
|
@@ -2319,8 +2317,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2319
2317
|
|
|
2320
2318
|
<p>Reimplemented in <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#ad44c735b25158d2c934bdd44eb404686">SVF::VersionedFlowSensitive</a>, and <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a83a4defe2bcb1c99c66aea8c8325d5fd">SVF::FlowSensitiveTBHC</a>.</p>
|
|
2321
2319
|
|
|
2322
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2323
|
-
<div class="fragment"><div class="line"><a name="
|
|
2320
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00357">357</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2321
|
+
<div class="fragment"><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="comment">// Get points-to targets may be used by next SVFG node.</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="comment">// Propagate points-to set for node used in dst.</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>& pts = edge-><a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">getPointsTo</a>();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">for</span> (NodeBS::iterator ptdIt = pts.begin(), ptdEit = pts.end(); ptdIt != ptdEit; ++ptdIt)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd = *ptdIt;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#ae571767cc5936cf631a44976d8277e91">propVarPtsFromSrcToDst</a>(ptd, src, dst))</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(ptd))</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>& allFields = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5dddd53b4ca9d7cc23d88ed9f3de9fde">getAllFieldsObjVars</a>(ptd);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">for</span> (NodeBS::iterator fieldIt = allFields.begin(), fieldEit = allFields.end();</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  fieldIt != fieldEit; ++fieldIt)</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#ae571767cc5936cf631a44976d8277e91">propVarPtsFromSrcToDst</a>(*fieldIt, src, dst))</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a2feaa4b7a72989b311e9084a81320254">indirectPropaTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_a2feaa4b7a72989b311e9084a81320254"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a2feaa4b7a72989b311e9084a81320254">SVF::FlowSensitive::indirectPropaTime</a></div><div class="ttdeci">double indirectPropaTime</div><div class="ttdoc">time of points-to propagation of top-level pointers </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00310">FlowSensitive.h:310</a></div></div>
|
|
2324
2322
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
2325
2323
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5dddd53b4ca9d7cc23d88ed9f3de9fde"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5dddd53b4ca9d7cc23d88ed9f3de9fde">SVF::PointerAnalysis::getAllFieldsObjVars</a></div><div class="ttdeci">virtual const NodeBS & getAllFieldsObjVars(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00358">PointerAnalysis.h:358</a></div></div>
|
|
2326
2324
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
|
|
@@ -2328,7 +2326,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2328
2326
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00085">GenericGraph.h:85</a></div></div>
|
|
2329
2327
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00176">SVFBasicTypes.h:176</a></div></div>
|
|
2330
2328
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
|
|
2331
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ae571767cc5936cf631a44976d8277e91"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae571767cc5936cf631a44976d8277e91">SVF::FlowSensitive::propVarPtsFromSrcToDst</a></div><div class="ttdeci">virtual bool propVarPtsFromSrcToDst(NodeID var, const SVFGNode *src, const SVFGNode *dst)</div><div class="ttdoc">Propagate points-to information of a certain variable from src to dst. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
2329
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ae571767cc5936cf631a44976d8277e91"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae571767cc5936cf631a44976d8277e91">SVF::FlowSensitive::propVarPtsFromSrcToDst</a></div><div class="ttdeci">virtual bool propVarPtsFromSrcToDst(NodeID var, const SVFGNode *src, const SVFGNode *dst)</div><div class="ttdoc">Propagate points-to information of a certain variable from src to dst. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00397">FlowSensitive.cpp:397</a></div></div>
|
|
2332
2330
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0f71e4cd0948b294c7d33a690bde7dbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">SVF::PointerAnalysis::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00367">PointerAnalysis.h:367</a></div></div>
|
|
2333
2331
|
<div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html_a30aca718d25924f1babdf348bb0ace71"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">SVF::IndirectSVFGEdge::getPointsTo</a></div><div class="ttdeci">const NodeBS & getPointsTo() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00061">SVFGEdge.h:61</a></div></div>
|
|
2334
2332
|
<div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|
|
@@ -2475,10 +2473,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2475
2473
|
<li>propagation along indirect edge will return TRUE if destination node's IN set has been updated. </li>
|
|
2476
2474
|
</ol>
|
|
2477
2475
|
|
|
2478
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2479
|
-
<div class="fragment"><div class="line"><a name="
|
|
2476
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00275">275</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2477
|
+
<div class="fragment"><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DirectSVFGEdge.html">DirectSVFGEdge</a>* dirEdge = SVFUtil::dyn_cast<DirectSVFGEdge>(edge))</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  changed = <a class="code" href="classSVF_1_1FlowSensitive.html#ad3518931d3b8a0671cbeb975f853b956">propAlongDirectEdge</a>(dirEdge);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>* indEdge = SVFUtil::dyn_cast<IndirectSVFGEdge>(edge))</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  changed = <a class="code" href="classSVF_1_1FlowSensitive.html#aeb1e002519123a67f8d18f78cda04bac">propAlongIndirectEdge</a>(indEdge);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"new kind of svfg edge?"</span>);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ac4d4b42bb96006801597f81ed3c4b337">propagationTime</a> += (end - start) /<a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_aeb1e002519123a67f8d18f78cda04bac"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aeb1e002519123a67f8d18f78cda04bac">SVF::FlowSensitive::propAlongIndirectEdge</a></div><div class="ttdeci">virtual bool propAlongIndirectEdge(const IndirectSVFGEdge *edge)</div><div class="ttdoc">Propagate points-to information along an INDIRECT SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00357">FlowSensitive.cpp:357</a></div></div>
|
|
2480
2478
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2481
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ad3518931d3b8a0671cbeb975f853b956"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ad3518931d3b8a0671cbeb975f853b956">SVF::FlowSensitive::propAlongDirectEdge</a></div><div class="ttdeci">virtual bool propAlongDirectEdge(const DirectSVFGEdge *edge)</div><div class="ttdoc">Propagate points-to information along a DIRECT SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
2479
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ad3518931d3b8a0671cbeb975f853b956"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ad3518931d3b8a0671cbeb975f853b956">SVF::FlowSensitive::propAlongDirectEdge</a></div><div class="ttdeci">virtual bool propAlongDirectEdge(const DirectSVFGEdge *edge)</div><div class="ttdoc">Propagate points-to information along a DIRECT SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00295">FlowSensitive.cpp:295</a></div></div>
|
|
2482
2480
|
<div class="ttc" id="classSVF_1_1DirectSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1DirectSVFGEdge.html">SVF::DirectSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00141">VFGEdge.h:141</a></div></div>
|
|
2483
2481
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
2484
2482
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00176">SVFBasicTypes.h:176</a></div></div>
|
|
@@ -2530,8 +2528,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2530
2528
|
<p>Propagation between newly connected <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> nodes during updateCallGraph. Can only be used during updateCallGraph.</p>
|
|
2531
2529
|
<p>Propagate points-to information of a certain variable from src to dst. </p>
|
|
2532
2530
|
|
|
2533
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2534
|
-
<div class="fragment"><div class="line"><a name="
|
|
2531
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00773">773</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2532
|
+
<div class="fragment"><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StoreSVFGNode>(src))</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  {</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a5e97c3fe32f60b0e8e96323ceb9a10cf">propDFOutToIn</a>(src, var, dst, var))</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  }</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a3be364754863bbbee6dfd0b5490dec47">propDFInToIn</a>(src, var, dst, var))</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  }</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_a5e97c3fe32f60b0e8e96323ceb9a10cf"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a5e97c3fe32f60b0e8e96323ceb9a10cf">SVF::FlowSensitive::propDFOutToIn</a></div><div class="ttdeci">virtual bool propDFOutToIn(const SVFGNode *srcStmt, NodeID srcVar, const SVFGNode *dstStmt, NodeID dstVar)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00178">FlowSensitive.h:178</a></div></div>
|
|
2535
2533
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a3be364754863bbbee6dfd0b5490dec47"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a3be364754863bbbee6dfd0b5490dec47">SVF::FlowSensitive::propDFInToIn</a></div><div class="ttdeci">virtual bool propDFInToIn(const SVFGNode *srcStmt, NodeID srcVar, const SVFGNode *dstStmt, NodeID dstVar)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00182">FlowSensitive.h:182</a></div></div>
|
|
2536
2534
|
</div><!-- fragment -->
|
|
2537
2535
|
</div>
|
|
@@ -2579,8 +2577,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2579
2577
|
<p>Propagate points-to information of a certain variable from src to dst. </p>
|
|
2580
2578
|
<p>Propagate points-to information of a certain variable from src to dst. </p>
|
|
2581
2579
|
|
|
2582
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2583
|
-
<div class="fragment"><div class="line"><a name="
|
|
2580
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00397">397</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2581
|
+
<div class="fragment"><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StoreSVFGNode>(src))</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#af5d90b4bd5c16dd64cd10afea6b3be93">updateInFromOut</a>(src, var, dst, var))</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a88120b9cec26620d4982798ea530353a">updateInFromIn</a>(src, var, dst, var))</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_a88120b9cec26620d4982798ea530353a"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a88120b9cec26620d4982798ea530353a">SVF::FlowSensitive::updateInFromIn</a></div><div class="ttdeci">virtual bool updateInFromIn(const SVFGNode *srcStmt, NodeID srcVar, const SVFGNode *dstStmt, NodeID dstVar)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00194">FlowSensitive.h:194</a></div></div>
|
|
2584
2582
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_af5d90b4bd5c16dd64cd10afea6b3be93"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#af5d90b4bd5c16dd64cd10afea6b3be93">SVF::FlowSensitive::updateInFromOut</a></div><div class="ttdeci">virtual bool updateInFromOut(const SVFGNode *srcStmt, NodeID srcVar, const SVFGNode *dstStmt, NodeID dstVar)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00198">FlowSensitive.h:198</a></div></div>
|
|
2585
2583
|
</div><!-- fragment -->
|
|
2586
2584
|
</div>
|
|
@@ -2706,8 +2704,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2706
2704
|
|
|
2707
2705
|
<p>Reimplemented from <a class="el" href="classSVF_1_1WPAFSSolver.html#a2d4cfae34bd4a55f1fe03881c87f8708">SVF::WPAFSSolver< GraphType ></a>.</p>
|
|
2708
2706
|
|
|
2709
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2710
|
-
<div class="fragment"><div class="line"><a name="
|
|
2707
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00177">177</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2708
|
+
<div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="namespaceSVF.html#a1811127aebdb9c926e39d155e20b3dc0">NodeStack</a>& <a class="code" href="classSVF_1_1WPAFSSolver.html#a2cb80102611c663c4daddd68b4f4b75f">nodeStack</a> = <a class="code" href="classSVF_1_1WPAFSSolver.html#a2d4cfae34bd4a55f1fe03881c87f8708">WPASVFGFSSolver::SCCDetect</a>();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#af496fa9aa2f4d59594950b2ad121deff">sccTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1WPAFSSolver.html#a2cb80102611c663c4daddd68b4f4b75f">nodeStack</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> }</div><div class="ttc" id="namespaceSVF_html_a1811127aebdb9c926e39d155e20b3dc0"><div class="ttname"><a href="namespaceSVF.html#a1811127aebdb9c926e39d155e20b3dc0">SVF::NodeStack</a></div><div class="ttdeci">std::stack< NodeID > NodeStack</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00119">SVFBasicTypes.h:119</a></div></div>
|
|
2711
2709
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_af496fa9aa2f4d59594950b2ad121deff"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#af496fa9aa2f4d59594950b2ad121deff">SVF::FlowSensitive::sccTime</a></div><div class="ttdeci">double sccTime</div><div class="ttdoc">time of SCC detection. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00306">FlowSensitive.h:306</a></div></div>
|
|
2712
2710
|
<div class="ttc" id="classSVF_1_1WPAFSSolver_html_a2d4cfae34bd4a55f1fe03881c87f8708"><div class="ttname"><a href="classSVF_1_1WPAFSSolver.html#a2d4cfae34bd4a55f1fe03881c87f8708">SVF::WPAFSSolver::SCCDetect</a></div><div class="ttdeci">virtual NodeStack & SCCDetect()</div><div class="ttdoc">SCC detection. </div><div class="ttdef"><b>Definition:</b> <a href="WPAFSSolver_8h_source.html#l00067">WPAFSSolver.h:67</a></div></div>
|
|
2713
2711
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
@@ -2910,8 +2908,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2910
2908
|
|
|
2911
2909
|
<p>Reimplemented from <a class="el" href="classSVF_1_1BVDataPTAImpl.html#aa534e475fa34fa322c567bc376a3da70">SVF::BVDataPTAImpl</a>.</p>
|
|
2912
2910
|
|
|
2913
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2914
|
-
<div class="fragment"><div class="line"><a name="
|
|
2911
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00648">648</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2912
|
+
<div class="fragment"><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a> newEdges;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a9830d4676fd424b633f8e4d918734296">onTheFlyCallGraphSolve</a>(callsites, newEdges);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> </div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="comment">// Bound the new edges by the Andersen's call graph.</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="comment">// TODO: we want this to be an assertion eventually.</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a> &andersCallEdgeMap = <a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>();</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> CallEdgeMap::value_type &csfs : newEdges)</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *potentialCallSite = csfs.first;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">FunctionSet</a> &potentialFunctionSet = csfs.second;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> </div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="comment">// Check this callsite even calls anything per Andersen's.</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keyword">typename</span> CallEdgeMap::const_iterator andersFunctionSetIt</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  = andersCallEdgeMap.find(potentialCallSite);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">if</span> (andersFunctionSetIt == andersCallEdgeMap.end())</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  {</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  potentialFunctionSet.clear();</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  }</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> </div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">FunctionSet</a> &andersFunctionSet = andersFunctionSetIt->second;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">for</span> (FunctionSet::iterator potentialFunctionIt = potentialFunctionSet.begin();</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  potentialFunctionIt != potentialFunctionSet.end(); )</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *potentialFunction = *potentialFunctionIt;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">if</span> (andersFunctionSet.find(potentialFunction) == andersFunctionSet.end())</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="comment">// potentialFunction is not in the Andersen's call graph -- remove it.</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  potentialFunctionIt = potentialFunctionSet.erase(potentialFunctionIt);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  }</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="comment">// potentialFunction is in the Andersen's call graph -- keep it..</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  ++potentialFunctionIt;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  }</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> </div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a69289c48fa91f850da90de080b9d26e5">SVFGEdgeSetTy</a> svfgEdges;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ad7640ada31b5cb542e492e27ab4fe1af">connectCallerAndCallee</a>(newEdges, svfgEdges);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> </div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a1886b4964efa92cfff761493d12768b8">updateConnectedNodes</a>(svfgEdges);</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> </div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07">updateCallGraphTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">return</span> (!newEdges.empty());</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_a1886b4964efa92cfff761493d12768b8"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a1886b4964efa92cfff761493d12768b8">SVF::FlowSensitive::updateConnectedNodes</a></div><div class="ttdeci">virtual void updateConnectedNodes(const SVFGEdgeSetTy &edges)</div><div class="ttdoc">Update nodes connected during updating call graph. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00721">FlowSensitive.cpp:721</a></div></div>
|
|
2915
2913
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a9830d4676fd424b633f8e4d918734296"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a9830d4676fd424b633f8e4d918734296">SVF::BVDataPTAImpl::onTheFlyCallGraphSolve</a></div><div class="ttdeci">virtual void onTheFlyCallGraphSolve(const CallSiteToFunPtrMap &callsites, CallEdgeMap &newEdges)</div><div class="ttdoc">On the fly call graph construction. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00381">PointerAnalysisImpl.cpp:381</a></div></div>
|
|
2916
2914
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
|
|
2917
2915
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_afc140b6c8e78dc2d962f64fdf53b1e07"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07">SVF::FlowSensitive::updateCallGraphTime</a></div><div class="ttdeci">double updateCallGraphTime</div><div class="ttdoc">time of updating call graph </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00318">FlowSensitive.h:318</a></div></div>
|
|
@@ -2922,7 +2920,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2922
2920
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00176">SVFBasicTypes.h:176</a></div></div>
|
|
2923
2921
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
|
|
2924
2922
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a69289c48fa91f850da90de080b9d26e5"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a69289c48fa91f850da90de080b9d26e5">SVF::FlowSensitive::SVFGEdgeSetTy</a></div><div class="ttdeci">SVFG::SVFGEdgeSetTy SVFGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00053">FlowSensitive.h:53</a></div></div>
|
|
2925
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ad7640ada31b5cb542e492e27ab4fe1af"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ad7640ada31b5cb542e492e27ab4fe1af">SVF::FlowSensitive::connectCallerAndCallee</a></div><div class="ttdeci">void connectCallerAndCallee(const CallEdgeMap &newEdges, SVFGEdgeSetTy &edges)</div><div class="ttdoc">Connect nodes in SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
2923
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ad7640ada31b5cb542e492e27ab4fe1af"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ad7640ada31b5cb542e492e27ab4fe1af">SVF::FlowSensitive::connectCallerAndCallee</a></div><div class="ttdeci">void connectCallerAndCallee(const CallEdgeMap &newEdges, SVFGEdgeSetTy &edges)</div><div class="ttdoc">Connect nodes in SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00701">FlowSensitive.cpp:701</a></div></div>
|
|
2926
2924
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a5cfee013a1a5821ef0c449842dd8690d"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">SVF::FlowSensitive::ander</a></div><div class="ttdeci">AndersenWaveDiff * ander</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00284">FlowSensitive.h:284</a></div></div>
|
|
2927
2925
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a3c4eaa1695ea13405911ae1621f98edc"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">SVF::PTAStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00114">PTAStat.cpp:114</a></div></div>
|
|
2928
2926
|
</div><!-- fragment -->
|
|
@@ -2960,8 +2958,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2960
2958
|
|
|
2961
2959
|
<p>Reimplemented in <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#a18f24fe34af677e2a8c78ee89b89be1c">SVF::VersionedFlowSensitive</a>.</p>
|
|
2962
2960
|
|
|
2963
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#
|
|
2964
|
-
<div class="fragment"><div class="line"><a name="
|
|
2961
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00721">721</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
|
|
2962
|
+
<div class="fragment"><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="keywordflow">for</span> (SVFGEdgeSetTy::const_iterator it = edges.begin(), eit = edges.end();</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  it != eit; ++it)</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = *it;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">if</span> (SVFUtil::isa<PHISVFGNode>(dstNode))</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  {</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <a class="code" href="classSVF_1_1WPASolver.html#a4af1c3e72f5af96c4facff672108da58">pushIntoWorklist</a>(dstNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  }</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<FormalINSVFGNode>(dstNode) || SVFUtil::isa<ActualOUTSVFGNode>(dstNode))</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  {</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> </div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>();</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> </div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>& pts = SVFUtil::cast<IndirectSVFGEdge>(edge)->getPointsTo();</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">for</span> (NodeBS::iterator ptdIt = pts.begin(), ptdEit = pts.end(); ptdIt != ptdEit; ++ptdIt)</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd = *ptdIt;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> </div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a9e7fbc4c1d056fbef07498de8cbb1cd9">propVarPtsAfterCGUpdated</a>(ptd, srcNode, dstNode))</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> </div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(ptd))</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  {</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>& allFields = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5dddd53b4ca9d7cc23d88ed9f3de9fde">getAllFieldsObjVars</a>(ptd);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keywordflow">for</span> (NodeBS::iterator fieldIt = allFields.begin(), fieldEit = allFields.end();</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  fieldIt != fieldEit; ++fieldIt)</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a9e7fbc4c1d056fbef07498de8cbb1cd9">propVarPtsAfterCGUpdated</a>(*fieldIt, srcNode, dstNode))</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  }</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordflow">if</span> (changed)</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <a class="code" href="classSVF_1_1WPASolver.html#a4af1c3e72f5af96c4facff672108da58">pushIntoWorklist</a>(dstNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  }</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  }</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> }</div><div class="ttc" id="classSVF_1_1WPASolver_html_a4af1c3e72f5af96c4facff672108da58"><div class="ttname"><a href="classSVF_1_1WPASolver.html#a4af1c3e72f5af96c4facff672108da58">SVF::WPASolver::pushIntoWorklist</a></div><div class="ttdeci">virtual void pushIntoWorklist(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00162">WPASolver.h:162</a></div></div>
|
|
2965
2963
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
2966
2964
|
<div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
|
|
2967
2965
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5dddd53b4ca9d7cc23d88ed9f3de9fde"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5dddd53b4ca9d7cc23d88ed9f3de9fde">SVF::PointerAnalysis::getAllFieldsObjVars</a></div><div class="ttdeci">virtual const NodeBS & getAllFieldsObjVars(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00358">PointerAnalysis.h:358</a></div></div>
|
|
@@ -2969,7 +2967,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2969
2967
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00085">GenericGraph.h:85</a></div></div>
|
|
2970
2968
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
|
|
2971
2969
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
|
|
2972
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a9e7fbc4c1d056fbef07498de8cbb1cd9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a9e7fbc4c1d056fbef07498de8cbb1cd9">SVF::FlowSensitive::propVarPtsAfterCGUpdated</a></div><div class="ttdeci">bool propVarPtsAfterCGUpdated(NodeID var, const SVFGNode *src, const SVFGNode *dst)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
2970
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a9e7fbc4c1d056fbef07498de8cbb1cd9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a9e7fbc4c1d056fbef07498de8cbb1cd9">SVF::FlowSensitive::propVarPtsAfterCGUpdated</a></div><div class="ttdeci">bool propVarPtsAfterCGUpdated(NodeID var, const SVFGNode *src, const SVFGNode *dst)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00773">FlowSensitive.cpp:773</a></div></div>
|
|
2973
2971
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0f71e4cd0948b294c7d33a690bde7dbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">SVF::PointerAnalysis::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00367">PointerAnalysis.h:367</a></div></div>
|
|
2974
2972
|
<div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|
|
2975
2973
|
</div><!-- fragment -->
|