svf-tools 1.0.581 → 1.0.583
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/AndersenPWC_8h_source.html +1 -2
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -5
- package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -5
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +32 -30
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +11 -11
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +15 -16
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/CFLBase_8h_source.html +11 -9
- package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +23 -21
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +70 -66
- package/SVF-doxygen/html/html/CFLGrammar_8txt.html +28 -262
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +37 -20
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +22 -19
- package/SVF-doxygen/html/html/CFLSolver_8h_source.html +18 -15
- package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/CFLStat_8h_source.html +8 -11
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -3
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +1 -3
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -4
- package/SVF-doxygen/html/html/CPPUtil_8h.html +4 -4
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -7
- package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -3
- package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -4
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +1 -3
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -2
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -3
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -5
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -5
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -3
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -2
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -4
- package/SVF-doxygen/html/html/MTA_8h_source.html +1 -2
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -3
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -3
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +1 -3
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/PEGGrammar_8txt.html +6 -6
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +1 -3
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -3
- package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -3
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -2
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -2
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/SVFUtil_8h.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -2
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -2
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -2
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -5
- package/SVF-doxygen/html/html/VFG_8h_source.html +3 -6
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +1 -3
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +58 -56
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +4 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +47 -42
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +4 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +79 -26
- package/SVF-doxygen/html/html/classSVF_1_1CFLEdge-members.html +19 -18
- package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +43 -20
- package/SVF-doxygen/html/html/classSVF_1_1CFLFIFOWorkList.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar-members.html +40 -37
- package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.html +55 -49
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1CFLNode-members.html +19 -9
- package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +379 -20
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver-members.html +12 -9
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +144 -53
- package/SVF-doxygen/html/html/classSVF_1_1CFLStat-members.html +31 -32
- package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +50 -78
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +2 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +14 -10
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +5 -7
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +8 -17
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +4 -5
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +6 -10
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +13 -14
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +4 -5
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +6 -10
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase-members.html +23 -19
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +197 -78
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -5
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +5 -8
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +3 -7
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +3 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +3 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +13 -25
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +6 -10
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +4 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +14 -20
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +4 -5
- package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +1 -2
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/functions.html +0 -3
- package/SVF-doxygen/html/html/functions_a.html +14 -4
- package/SVF-doxygen/html/html/functions_c.html +38 -30
- package/SVF-doxygen/html/html/functions_e.html +4 -1
- package/SVF-doxygen/html/html/functions_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func.html +16 -6
- package/SVF-doxygen/html/html/functions_func_c.html +29 -27
- package/SVF-doxygen/html/html/functions_func_g.html +25 -16
- package/SVF-doxygen/html/html/functions_func_i.html +8 -4
- package/SVF-doxygen/html/html/functions_func_p.html +4 -1
- package/SVF-doxygen/html/html/functions_func_r.html +8 -2
- package/SVF-doxygen/html/html/functions_func_s.html +12 -9
- package/SVF-doxygen/html/html/functions_g.html +23 -14
- package/SVF-doxygen/html/html/functions_i.html +20 -13
- package/SVF-doxygen/html/html/functions_l.html +5 -5
- package/SVF-doxygen/html/html/functions_n.html +9 -4
- package/SVF-doxygen/html/html/functions_o.html +21 -10
- package/SVF-doxygen/html/html/functions_p.html +16 -17
- package/SVF-doxygen/html/html/functions_r.html +7 -1
- package/SVF-doxygen/html/html/functions_s.html +8 -5
- package/SVF-doxygen/html/html/functions_t.html +3 -3
- package/SVF-doxygen/html/html/functions_type_c.html +6 -0
- package/SVF-doxygen/html/html/functions_vars.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_i.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_n.html +6 -1
- package/SVF-doxygen/html/html/functions_vars_o.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +11 -11
- package/SVF-doxygen/html/html/globals_a.html +0 -4
- package/SVF-doxygen/html/html/globals_c.html +7 -8
- package/SVF-doxygen/html/html/globals_e.html +1 -2
- package/SVF-doxygen/html/html/globals_f.html +4 -8
- package/SVF-doxygen/html/html/globals_g.html +4 -8
- package/SVF-doxygen/html/html/globals_l.html +2 -8
- package/SVF-doxygen/html/html/globals_m.html +1 -4
- package/SVF-doxygen/html/html/globals_s.html +3 -6
- package/SVF-doxygen/html/html/globals_v.html +1 -4
- package/SVF-doxygen/html/html/globals_vars.html +22 -55
- package/SVF-doxygen/html/html/menudata.js +0 -1
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +4 -4
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +2 -3
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +9 -15
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_0.js +0 -1
- package/SVF-doxygen/html/html/search/all_1.js +6 -3
- package/SVF-doxygen/html/html/search/all_10.js +7 -6
- package/SVF-doxygen/html/html/search/all_11.js +3 -1
- package/SVF-doxygen/html/html/search/all_12.js +10 -9
- package/SVF-doxygen/html/html/search/all_13.js +6 -6
- package/SVF-doxygen/html/html/search/all_15.js +3 -4
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +8 -5
- package/SVF-doxygen/html/html/search/all_5.js +2 -1
- package/SVF-doxygen/html/html/search/all_6.js +3 -4
- package/SVF-doxygen/html/html/search/all_7.js +7 -5
- package/SVF-doxygen/html/html/search/all_9.js +6 -4
- package/SVF-doxygen/html/html/search/all_c.js +4 -5
- package/SVF-doxygen/html/html/search/all_d.js +1 -2
- package/SVF-doxygen/html/html/search/all_e.js +4 -3
- package/SVF-doxygen/html/html/search/all_f.js +3 -2
- package/SVF-doxygen/html/html/search/functions_0.js +4 -1
- package/SVF-doxygen/html/html/search/functions_10.js +2 -0
- package/SVF-doxygen/html/html/search/functions_11.js +1 -0
- package/SVF-doxygen/html/html/search/functions_2.js +3 -2
- package/SVF-doxygen/html/html/search/functions_6.js +3 -0
- package/SVF-doxygen/html/html/search/functions_8.js +2 -1
- package/SVF-doxygen/html/html/search/functions_f.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_2.js +2 -0
- package/SVF-doxygen/html/html/search/variables_0.js +0 -1
- package/SVF-doxygen/html/html/search/variables_1.js +1 -2
- package/SVF-doxygen/html/html/search/variables_12.js +1 -2
- package/SVF-doxygen/html/html/search/variables_13.js +3 -3
- package/SVF-doxygen/html/html/search/variables_15.js +1 -2
- package/SVF-doxygen/html/html/search/variables_3.js +1 -1
- package/SVF-doxygen/html/html/search/variables_5.js +2 -1
- package/SVF-doxygen/html/html/search/variables_6.js +1 -2
- package/SVF-doxygen/html/html/search/variables_7.js +4 -5
- package/SVF-doxygen/html/html/search/variables_9.js +2 -1
- package/SVF-doxygen/html/html/search/variables_c.js +1 -3
- package/SVF-doxygen/html/html/search/variables_d.js +0 -1
- package/SVF-doxygen/html/html/search/variables_e.js +3 -2
- package/SVF-doxygen/html/html/search/variables_f.js +1 -0
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +4 -4
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/CFL/CFLBase.h +2 -0
- package/include/CFL/CFLGrammar.h +13 -0
- package/include/CFL/CFLGrammar.txt +9 -33
- package/include/CFL/CFLSolver.h +8 -0
- package/include/CFL/CFLStat.h +3 -13
- package/include/Graphs/CFLGraph.h +69 -0
- package/lib/CFL/CFGNormalizer.cpp +1 -0
- package/lib/CFL/CFLAlias.cpp +5 -0
- package/lib/CFL/CFLGrammar.cpp +34 -1
- package/lib/CFL/CFLSolver.cpp +58 -45
- package/lib/CFL/CFLStat.cpp +20 -66
- package/package.json +1 -1
|
@@ -66,7 +66,7 @@ $(function() {
|
|
|
66
66
|
<div class="title">FlowSensitive.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="FlowSensitive_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- FlowSensitive.h -- Flow-sensitive pointer analysis---------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * FlowSensitiveAnalysis.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Oct 28, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef FLOWSENSITIVEANALYSIS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define FLOWSENSITIVEANALYSIS_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="fastcluster_8h.html">FastCluster/fastcluster.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="SVFGOPT_8h.html">Graphs/SVFGOPT.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="SVFGBuilder_8h.html">MSSA/SVFGBuilder.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="WPAFSSolver_8h.html">WPA/WPAFSSolver.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>AndersenWaveDiff;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a221270d70aa99a37738c0f919519a73d"> 43</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1WPAFSSolver.html">WPAFSSolver<SVFG*></a> <a class="code" href="namespaceSVF.html#a221270d70aa99a37738c0f919519a73d">WPASVFGFSSolver</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html"> 49</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1FlowSensitive.html">FlowSensitive</a> : <span class="keyword">public</span> WPASVFGFSSolver, <span class="keyword">public</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a88f9752372eabb71f47f13a89e4d6d9c"> 51</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1FlowSensitiveStat.html">FlowSensitiveStat</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a69289c48fa91f850da90de080b9d26e5"> 53</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFG::SVFGEdgeSetTy</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a69289c48fa91f850da90de080b9d26e5">SVFGEdgeSetTy</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a03a3178d88db4efc0593fedb22938e7d"> 56</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">BVDataPTAImpl::MutDFPTDataTy</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a03a3178d88db4efc0593fedb22938e7d">MutDFPTDataTy</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#af9a2bd5b490f1cc5335ce696173c78dd"> 57</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a0c73427f957d310bc85955bec6654352">BVDataPTAImpl::MutDFPTDataTy::DFPtsMap</a> <a class="code" href="classSVF_1_1FlowSensitive.html#af9a2bd5b490f1cc5335ce696173c78dd">DFInOutMap</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a7bb300f30f4f8cee208229ae10faa291"> 58</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae7456fccd4c95227cdd7163176703205">BVDataPTAImpl::MutDFPTDataTy::PtsMap</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a7bb300f30f4f8cee208229ae10faa291">PtsMap</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#aac88b67b49cbd72912ff586d30197ffb"> 61</a></span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aac88b67b49cbd72912ff586d30197ffb">FlowSensitive</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">FSSPARSE_WPA</a>) : WPASVFGFSSolver(), <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>(_pag, <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</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#aae032e5f5d53b131d0112dc8faa464a9">svfg</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a4202f837e863a48712765cc346d8b514">solveTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#af496fa9aa2f4d59594950b2ad121deff">sccTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72">processTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#ac4d4b42bb96006801597f81ed3c4b337">propagationTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226">updateTime</a> = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b">addrTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a888d6334e5e226c634680e4c0674dcfb">copyTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290">gepTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">loadTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7">storeTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#aee7d59b7ad00cf1cf6e3fba19513aa42">phiTime</a> = 0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07">updateCallGraphTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#ae086de68233375be42185f0af706687a">directPropaTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a2feaa4b7a72989b311e9084a81320254">indirectPropaTime</a> = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7">numOfProcessedAddr</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54">numOfProcessedCopy</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e">numOfProcessedGep</a> = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268">numOfProcessedLoad</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d">numOfProcessedStore</a> = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70">numOfProcessedPhi</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#abdc30e45347579986c42795a436a1251">numOfProcessedActualParam</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#ae048cc5350cf2b075c05f5d84777a3c5">numOfProcessedFormalRet</a> = 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf">numOfProcessedMSSANode</a> = 0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aa3d4703756a6297ab5c0756172024fe4">maxSCCSize</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3">numOfSCC</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a9f3fe97202db8170fa9f47c5684bce75">numOfNodesInSCC</a> = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classSVF_1_1WPASolver.html#aa7c0636780a86f376e9222bce771e859">iterationForPrintStat</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac">OnTheFlyIterBudgetForStat</a>;</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="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a7bb33faaa7081ef3346de3f30ab3a8da"> 76</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a7bb33faaa7081ef3346de3f30ab3a8da">~FlowSensitive</a>()</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#af21aa66bc41607d8c93faf1acea1f3be"> 84</a></span>  <span class="keyword">static</span> <a class="code" href="classSVF_1_1FlowSensitive.html">FlowSensitive</a>* <a class="code" href="classSVF_1_1FlowSensitive.html#af21aa66bc41607d8c93faf1acea1f3be">createFSWPA</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag)</div><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="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ae6aed22a79ac6567446dfcba82cb17b8"> 95</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ae6aed22a79ac6567446dfcba82cb17b8">releaseFSWPA</a>()</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">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a>)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a> = <span class="keyword">nullptr</span>;</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> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a611608ccc9659bd320670f1ec31ad18e"> 103</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a611608ccc9659bd320670f1ec31ad18e">runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>*)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">analyze</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ad6243c1317503bed39411dab47c83da7">initialize</a>();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">finalize</a>();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a4f1a0d533381660055210be1e2d7d72a"> 118</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a4f1a0d533381660055210be1e2d7d72a">PTAName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <span class="stringliteral">"FlowSensitive"</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ac76934c9ba15742e470a785af54bd958"> 125</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ac76934c9ba15742e470a785af54bd958">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FlowSensitive.html">FlowSensitive</a> *)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a12dea7b6057daddcc5c0d975aebf3f11"> 129</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a12dea7b6057daddcc5c0d975aebf3f11">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">FSSPARSE_WPA</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a74f35ec76e2c7cf39355e0c148d973be"> 136</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1FlowSensitive.html#a74f35ec76e2c7cf39355e0c148d973be">getSVFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a1811127aebdb9c926e39d155e20b3dc0">NodeStack</a>& <a class="code" href="classSVF_1_1FlowSensitive.html#a5f8a1493f7550a3f7a295e25d87bce12">SCCDetect</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#af849ab5a07049cb08e6b0d8023577862">propFromSrcToDst</a>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ad3518931d3b8a0671cbeb975f853b956">propAlongDirectEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1DirectSVFGEdge.html">DirectSVFGEdge</a>* edge);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aeb1e002519123a67f8d18f78cda04bac">propAlongIndirectEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>* edge);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ae571767cc5936cf631a44976d8277e91">propVarPtsFromSrcToDst</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a3574977acd161925cadcb05de6d3247d">propagateFromAPToFP</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmSVFGNode</a>* ap, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a3abffe1434386b1ce349fbed0cfe0967">propagateFromFRToAR</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetSVFGNode</a>* fr, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst);</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ab492c283e2264b4cbd4c192e805b7750"> 162</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ab492c283e2264b4cbd4c192e805b7750">weakUpdateOutFromIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a7e4ae809b40d55448de0103746254158">updateAllDFOutFromIn</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),0,<span class="keyword">false</span>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a8ebe4342c1496b906ee1b6450558c3e8"> 167</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a8ebe4342c1496b906ee1b6450558c3e8">strongUpdateOutFromIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> singleton)</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>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a7e4ae809b40d55448de0103746254158">updateAllDFOutFromIn</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),singleton,<span class="keyword">true</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a9e7fbc4c1d056fbef07498de8cbb1cd9">propVarPtsAfterCGUpdated</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a5e97c3fe32f60b0e8e96323ceb9a10cf"> 178</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a5e97c3fe32f60b0e8e96323ceb9a10cf">propDFOutToIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a96a5d7e867095b3c215c73599fd31c19">updateAllDFInFromOut</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), srcVar, dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dstVar);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a3be364754863bbbee6dfd0b5490dec47"> 182</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a3be364754863bbbee6dfd0b5490dec47">propDFInToIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a506a2be8f909663d59245254bddea00b">updateAllDFInFromIn</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), srcVar, dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dstVar);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a06fe840604fdb4b50f08617c48acd44f"> 190</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a06fe840604fdb4b50f08617c48acd44f">updateOutFromIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#acee5fb134d3153ae6eb91c15cd2cff66">updateDFOutFromIn</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),srcVar, dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dstVar);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a88120b9cec26620d4982798ea530353a"> 194</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a88120b9cec26620d4982798ea530353a">updateInFromIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a88cf9cd48ee5c1b8b3c71b379f23ab6b">updateDFInFromIn</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),srcVar, dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dstVar);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#af5d90b4bd5c16dd64cd10afea6b3be93"> 198</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#af5d90b4bd5c16dd64cd10afea6b3be93">updateInFromOut</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a2ec4fb73d87f10c86fac34b3500532b3">updateDFInFromOut</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),srcVar, dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dstVar);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a16d757abf69ad77951b808dc18ca2999"> 203</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a16d757abf69ad77951b808dc18ca2999">unionPtsFromIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* stmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</div><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="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#aaa6f67ff5daf7d71a3ad62316a7dd872">updateTLVPts</a>(stmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),srcVar,dstVar);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a49104435f8d20015907a1c8f58a76577"> 207</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a49104435f8d20015907a1c8f58a76577">unionPtsFromTop</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* stmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</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>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a09bc4b7eef592af2c2c84b60029b5b52">updateATVPts</a>(srcVar,stmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dstVar);</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> </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a9622f0b7b16694b0c74b07834f598e67"> 212</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a9622f0b7b16694b0c74b07834f598e67">clearAllDFOutVarFlag</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* stmt)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#ac20579e277a284158e2924fb5946cd86">clearAllDFOutUpdatedVar</a>(stmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a16f594356ea565eb1fed2acea516a16b">processNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a979f89495966d71f9b470d832384ebd6">processSVFGNode</a>(<a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#abb37c5e4e6fa4742e8dbcf397aea086e">processAddr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrSVFGNode</a>* <a class="code" href="CFLGrammar_8txt.html#aae7baac9bf1fe49869f5ab76e07bfd05">addr</a>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aa401cc90de4e1c6842f08a43a28c5aa1">processCopy</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyVFGNode.html">CopySVFGNode</a>* <a class="code" href="CFLGrammar_8txt.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aa36fd1387e948e83107431179d819067">processPhi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>* phi);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ae017c39ac471727d06868e0eacafd791">processGep</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepVFGNode.html">GepSVFGNode</a>* edge);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a9968530b3dee876f55e6659530decf27">processLoad</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* <a class="code" href="CFLGrammar_8txt.html#af94ae7efab42c57589a313f6cc7ada63">load</a>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aa37d591d2d4f65957e840bef4d142a6a">processStore</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* <a class="code" href="CFLGrammar_8txt.html#a92d5a256d74eadeb5bfa131b84067f0d">store</a>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a9d81537ec20196315a9a2541477ec5bf">updateCallGraph</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>& callsites);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ad7640ada31b5cb542e492e27ab4fe1af">connectCallerAndCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a>& newEdges, SVFGEdgeSetTy& edges);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a1886b4964efa92cfff761493d12768b8">updateConnectedNodes</a>(<span class="keyword">const</span> SVFGEdgeSetTy& edges);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a42a7e39e0e15576742f8ba7c32579ea2">isStrongUpdate</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>& singleton);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a94dc671f524ed3ed00f5a54b13f18e18">countAliases</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a><std::pair<NodeID, NodeID>> cmp, <span class="keywordtype">unsigned</span> *mayAliases, <span class="keywordtype">unsigned</span> *noAliases);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9"> 246</a></span>  <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a9379acbe349ee652416765b335dfdeab"> 249</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& <a class="code" href="classSVF_1_1FlowSensitive.html#a9379acbe349ee652416765b335dfdeab">getDFInPtsSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* stmt, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a259a92ea46f1d3a1dbd4a74ff07718d2">getDFInPtsSet</a>(stmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),node);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a808dc8a242f168174339d7ca3196bb58"> 253</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& <a class="code" href="classSVF_1_1FlowSensitive.html#a808dc8a242f168174339d7ca3196bb58">getDFOutPtsSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* stmt, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#ad9b3bb99cfefb87424c408eae3ecfcec">getDFOutPtsSet</a>(stmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),node);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a9717517387c14c2e64c7ae3c3149bb57"> 262</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> DFInOutMap& <a class="code" href="classSVF_1_1FlowSensitive.html#a9717517387c14c2e64c7ae3c3149bb57">getDFInputMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#acbb979edee9427efa2a7c0dbd881c483">getMutDFPTDataTy</a>()-><a class="code" href="classSVF_1_1MutableDFPTData.html#ae999df6f94a097f1fcb36979327790de">getDFIn</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"><a class="line" href="classSVF_1_1FlowSensitive.html#a661c4c1d5902c924060cc81219591d6f"> 266</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> DFInOutMap& <a class="code" href="classSVF_1_1FlowSensitive.html#a661c4c1d5902c924060cc81219591d6f">getDFOutputMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#acbb979edee9427efa2a7c0dbd881c483">getMutDFPTDataTy</a>()-><a class="code" href="classSVF_1_1MutableDFPTData.html#a6d02392602cf7956ff41e345518d683c">getDFOut</a>();</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a89d3b97b8077027514135c9201c4d02c">cluster</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a5a8688102f3675cf414b01dc2ae51c6b">plainMap</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776"> 278</a></span>  <span class="keyword">static</span> <a class="code" href="classSVF_1_1FlowSensitive.html">FlowSensitive</a>* <a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a>;</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a76f6f19ac2b58ab4a10a2d7e6e24e42a"> 279</a></span>  <a class="code" href="classSVF_1_1SVFGBuilder.html">SVFGBuilder</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a76f6f19ac2b58ab4a10a2d7e6e24e42a">memSSA</a>;</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d"> 280</a></span>  <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a> *<a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#adba7ffe68ae7edce9b3aa896f978da6b"> 283</a></span>  std::vector<std::pair<hclust_fast_methods, std::vector<NodeID>>> <a class="code" href="classSVF_1_1FlowSensitive.html#adba7ffe68ae7edce9b3aa896f978da6b">candidateMappings</a>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</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"><a class="line" href="classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7"> 287</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7">numOfProcessedAddr</a>; </div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54"> 288</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54">numOfProcessedCopy</a>; </div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e"> 289</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e">numOfProcessedGep</a>; </div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70"> 290</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70">numOfProcessedPhi</a>; </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268"> 291</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268">numOfProcessedLoad</a>; </div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d"> 292</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d">numOfProcessedStore</a>; </div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#abdc30e45347579986c42795a436a1251"> 293</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#abdc30e45347579986c42795a436a1251">numOfProcessedActualParam</a>; </div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ae048cc5350cf2b075c05f5d84777a3c5"> 294</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#ae048cc5350cf2b075c05f5d84777a3c5">numOfProcessedFormalRet</a>; </div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf"> 295</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf">numOfProcessedMSSANode</a>; </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#aa3d4703756a6297ab5c0756172024fe4"> 297</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#aa3d4703756a6297ab5c0756172024fe4">maxSCCSize</a>;</div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3"> 298</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3">numOfSCC</a>;</div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a9f3fe97202db8170fa9f47c5684bce75"> 299</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a9f3fe97202db8170fa9f47c5684bce75">numOfNodesInSCC</a>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a4202f837e863a48712765cc346d8b514"> 301</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a4202f837e863a48712765cc346d8b514">solveTime</a>; </div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#af496fa9aa2f4d59594950b2ad121deff"> 302</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#af496fa9aa2f4d59594950b2ad121deff">sccTime</a>; </div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72"> 303</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72">processTime</a>; </div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ac4d4b42bb96006801597f81ed3c4b337"> 304</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ac4d4b42bb96006801597f81ed3c4b337">propagationTime</a>; </div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ae086de68233375be42185f0af706687a"> 305</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ae086de68233375be42185f0af706687a">directPropaTime</a>; </div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a2feaa4b7a72989b311e9084a81320254"> 306</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a2feaa4b7a72989b311e9084a81320254">indirectPropaTime</a>; </div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226"> 307</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226">updateTime</a>; </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b"> 308</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b">addrTime</a>; </div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a888d6334e5e226c634680e4c0674dcfb"> 309</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a888d6334e5e226c634680e4c0674dcfb">copyTime</a>; </div><div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290"> 310</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290">gepTime</a>; </div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067"> 311</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">loadTime</a>; </div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7"> 312</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7">storeTime</a>; </div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#aee7d59b7ad00cf1cf6e3fba19513aa42"> 313</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aee7d59b7ad00cf1cf6e3fba19513aa42">phiTime</a>; </div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07"> 314</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07">updateCallGraphTime</a>; </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305"> 316</a></span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">svfgHasSU</a>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a5f015d8f2b0956306822172d02b415c3">svfgStat</a>();</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> };</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor">#endif </span><span class="comment">/* FLOWSENSITIVEANALYSIS_H_ */</span><span class="preprocessor"></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#l00303">FlowSensitive.h:303</a></div></div>
|
|
69
|
+
<a href="FlowSensitive_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- FlowSensitive.h -- Flow-sensitive pointer analysis---------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * FlowSensitiveAnalysis.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Oct 28, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef FLOWSENSITIVEANALYSIS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define FLOWSENSITIVEANALYSIS_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="fastcluster_8h.html">FastCluster/fastcluster.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="SVFGOPT_8h.html">Graphs/SVFGOPT.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="SVFGBuilder_8h.html">MSSA/SVFGBuilder.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="WPAFSSolver_8h.html">WPA/WPAFSSolver.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>AndersenWaveDiff;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a221270d70aa99a37738c0f919519a73d"> 43</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1WPAFSSolver.html">WPAFSSolver<SVFG*></a> <a class="code" href="namespaceSVF.html#a221270d70aa99a37738c0f919519a73d">WPASVFGFSSolver</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html"> 49</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1FlowSensitive.html">FlowSensitive</a> : <span class="keyword">public</span> WPASVFGFSSolver, <span class="keyword">public</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a88f9752372eabb71f47f13a89e4d6d9c"> 51</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1FlowSensitiveStat.html">FlowSensitiveStat</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a69289c48fa91f850da90de080b9d26e5"> 53</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFG::SVFGEdgeSetTy</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a69289c48fa91f850da90de080b9d26e5">SVFGEdgeSetTy</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a03a3178d88db4efc0593fedb22938e7d"> 56</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">BVDataPTAImpl::MutDFPTDataTy</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a03a3178d88db4efc0593fedb22938e7d">MutDFPTDataTy</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#af9a2bd5b490f1cc5335ce696173c78dd"> 57</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a0c73427f957d310bc85955bec6654352">BVDataPTAImpl::MutDFPTDataTy::DFPtsMap</a> <a class="code" href="classSVF_1_1FlowSensitive.html#af9a2bd5b490f1cc5335ce696173c78dd">DFInOutMap</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a7bb300f30f4f8cee208229ae10faa291"> 58</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae7456fccd4c95227cdd7163176703205">BVDataPTAImpl::MutDFPTDataTy::PtsMap</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a7bb300f30f4f8cee208229ae10faa291">PtsMap</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#aac88b67b49cbd72912ff586d30197ffb"> 61</a></span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aac88b67b49cbd72912ff586d30197ffb">FlowSensitive</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">FSSPARSE_WPA</a>) : WPASVFGFSSolver(), <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>(_pag, <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</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#aae032e5f5d53b131d0112dc8faa464a9">svfg</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a4202f837e863a48712765cc346d8b514">solveTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#af496fa9aa2f4d59594950b2ad121deff">sccTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72">processTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#ac4d4b42bb96006801597f81ed3c4b337">propagationTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226">updateTime</a> = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b">addrTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a888d6334e5e226c634680e4c0674dcfb">copyTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290">gepTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">loadTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7">storeTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#aee7d59b7ad00cf1cf6e3fba19513aa42">phiTime</a> = 0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07">updateCallGraphTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#ae086de68233375be42185f0af706687a">directPropaTime</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a2feaa4b7a72989b311e9084a81320254">indirectPropaTime</a> = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7">numOfProcessedAddr</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54">numOfProcessedCopy</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e">numOfProcessedGep</a> = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268">numOfProcessedLoad</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d">numOfProcessedStore</a> = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70">numOfProcessedPhi</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#abdc30e45347579986c42795a436a1251">numOfProcessedActualParam</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#ae048cc5350cf2b075c05f5d84777a3c5">numOfProcessedFormalRet</a> = 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf">numOfProcessedMSSANode</a> = 0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aa3d4703756a6297ab5c0756172024fe4">maxSCCSize</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3">numOfSCC</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a9f3fe97202db8170fa9f47c5684bce75">numOfNodesInSCC</a> = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classSVF_1_1WPASolver.html#aa7c0636780a86f376e9222bce771e859">iterationForPrintStat</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac">OnTheFlyIterBudgetForStat</a>;</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="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a7bb33faaa7081ef3346de3f30ab3a8da"> 76</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a7bb33faaa7081ef3346de3f30ab3a8da">~FlowSensitive</a>()</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#af21aa66bc41607d8c93faf1acea1f3be"> 84</a></span>  <span class="keyword">static</span> <a class="code" href="classSVF_1_1FlowSensitive.html">FlowSensitive</a>* <a class="code" href="classSVF_1_1FlowSensitive.html#af21aa66bc41607d8c93faf1acea1f3be">createFSWPA</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag)</div><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="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ae6aed22a79ac6567446dfcba82cb17b8"> 95</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ae6aed22a79ac6567446dfcba82cb17b8">releaseFSWPA</a>()</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">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a>)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a> = <span class="keyword">nullptr</span>;</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> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a611608ccc9659bd320670f1ec31ad18e"> 103</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a611608ccc9659bd320670f1ec31ad18e">runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>*)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">analyze</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ad6243c1317503bed39411dab47c83da7">initialize</a>();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">finalize</a>();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a4f1a0d533381660055210be1e2d7d72a"> 118</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a4f1a0d533381660055210be1e2d7d72a">PTAName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <span class="stringliteral">"FlowSensitive"</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ac76934c9ba15742e470a785af54bd958"> 125</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ac76934c9ba15742e470a785af54bd958">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FlowSensitive.html">FlowSensitive</a> *)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a12dea7b6057daddcc5c0d975aebf3f11"> 129</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a12dea7b6057daddcc5c0d975aebf3f11">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">FSSPARSE_WPA</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a74f35ec76e2c7cf39355e0c148d973be"> 136</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1FlowSensitive.html#a74f35ec76e2c7cf39355e0c148d973be">getSVFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a1811127aebdb9c926e39d155e20b3dc0">NodeStack</a>& <a class="code" href="classSVF_1_1FlowSensitive.html#a5f8a1493f7550a3f7a295e25d87bce12">SCCDetect</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#af849ab5a07049cb08e6b0d8023577862">propFromSrcToDst</a>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ad3518931d3b8a0671cbeb975f853b956">propAlongDirectEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1DirectSVFGEdge.html">DirectSVFGEdge</a>* edge);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aeb1e002519123a67f8d18f78cda04bac">propAlongIndirectEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>* edge);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ae571767cc5936cf631a44976d8277e91">propVarPtsFromSrcToDst</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a3574977acd161925cadcb05de6d3247d">propagateFromAPToFP</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmSVFGNode</a>* ap, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a3abffe1434386b1ce349fbed0cfe0967">propagateFromFRToAR</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetSVFGNode</a>* fr, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst);</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ab492c283e2264b4cbd4c192e805b7750"> 162</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ab492c283e2264b4cbd4c192e805b7750">weakUpdateOutFromIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a7e4ae809b40d55448de0103746254158">updateAllDFOutFromIn</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),0,<span class="keyword">false</span>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a8ebe4342c1496b906ee1b6450558c3e8"> 167</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a8ebe4342c1496b906ee1b6450558c3e8">strongUpdateOutFromIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> singleton)</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>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a7e4ae809b40d55448de0103746254158">updateAllDFOutFromIn</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),singleton,<span class="keyword">true</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a9e7fbc4c1d056fbef07498de8cbb1cd9">propVarPtsAfterCGUpdated</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a5e97c3fe32f60b0e8e96323ceb9a10cf"> 178</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a5e97c3fe32f60b0e8e96323ceb9a10cf">propDFOutToIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a96a5d7e867095b3c215c73599fd31c19">updateAllDFInFromOut</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), srcVar, dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dstVar);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a3be364754863bbbee6dfd0b5490dec47"> 182</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a3be364754863bbbee6dfd0b5490dec47">propDFInToIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a506a2be8f909663d59245254bddea00b">updateAllDFInFromIn</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), srcVar, dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dstVar);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a06fe840604fdb4b50f08617c48acd44f"> 190</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a06fe840604fdb4b50f08617c48acd44f">updateOutFromIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#acee5fb134d3153ae6eb91c15cd2cff66">updateDFOutFromIn</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),srcVar, dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dstVar);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a88120b9cec26620d4982798ea530353a"> 194</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a88120b9cec26620d4982798ea530353a">updateInFromIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a88cf9cd48ee5c1b8b3c71b379f23ab6b">updateDFInFromIn</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),srcVar, dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dstVar);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#af5d90b4bd5c16dd64cd10afea6b3be93"> 198</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#af5d90b4bd5c16dd64cd10afea6b3be93">updateInFromOut</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstStmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a2ec4fb73d87f10c86fac34b3500532b3">updateDFInFromOut</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),srcVar, dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dstVar);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a16d757abf69ad77951b808dc18ca2999"> 203</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a16d757abf69ad77951b808dc18ca2999">unionPtsFromIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* stmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</div><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="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#aaa6f67ff5daf7d71a3ad62316a7dd872">updateTLVPts</a>(stmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),srcVar,dstVar);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a49104435f8d20015907a1c8f58a76577"> 207</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a49104435f8d20015907a1c8f58a76577">unionPtsFromTop</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* stmt, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcVar, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar)</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>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a09bc4b7eef592af2c2c84b60029b5b52">updateATVPts</a>(srcVar,stmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dstVar);</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> </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a9622f0b7b16694b0c74b07834f598e67"> 212</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a9622f0b7b16694b0c74b07834f598e67">clearAllDFOutVarFlag</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* stmt)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#ac20579e277a284158e2924fb5946cd86">clearAllDFOutUpdatedVar</a>(stmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a16f594356ea565eb1fed2acea516a16b">processNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a979f89495966d71f9b470d832384ebd6">processSVFGNode</a>(<a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#abb37c5e4e6fa4742e8dbcf397aea086e">processAddr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrSVFGNode</a>* addr);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aa401cc90de4e1c6842f08a43a28c5aa1">processCopy</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyVFGNode.html">CopySVFGNode</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aa36fd1387e948e83107431179d819067">processPhi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>* phi);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ae017c39ac471727d06868e0eacafd791">processGep</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepVFGNode.html">GepSVFGNode</a>* edge);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a9968530b3dee876f55e6659530decf27">processLoad</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* load);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aa37d591d2d4f65957e840bef4d142a6a">processStore</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a9d81537ec20196315a9a2541477ec5bf">updateCallGraph</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>& callsites);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ad7640ada31b5cb542e492e27ab4fe1af">connectCallerAndCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a>& newEdges, SVFGEdgeSetTy& edges);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a1886b4964efa92cfff761493d12768b8">updateConnectedNodes</a>(<span class="keyword">const</span> SVFGEdgeSetTy& edges);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a42a7e39e0e15576742f8ba7c32579ea2">isStrongUpdate</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>& singleton);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a94dc671f524ed3ed00f5a54b13f18e18">countAliases</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a><std::pair<NodeID, NodeID>> cmp, <span class="keywordtype">unsigned</span> *mayAliases, <span class="keywordtype">unsigned</span> *noAliases);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9"> 246</a></span>  <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a9379acbe349ee652416765b335dfdeab"> 249</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& <a class="code" href="classSVF_1_1FlowSensitive.html#a9379acbe349ee652416765b335dfdeab">getDFInPtsSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* stmt, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a259a92ea46f1d3a1dbd4a74ff07718d2">getDFInPtsSet</a>(stmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),node);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a808dc8a242f168174339d7ca3196bb58"> 253</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& <a class="code" href="classSVF_1_1FlowSensitive.html#a808dc8a242f168174339d7ca3196bb58">getDFOutPtsSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* stmt, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#ad9b3bb99cfefb87424c408eae3ecfcec">getDFOutPtsSet</a>(stmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),node);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a9717517387c14c2e64c7ae3c3149bb57"> 262</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> DFInOutMap& <a class="code" href="classSVF_1_1FlowSensitive.html#a9717517387c14c2e64c7ae3c3149bb57">getDFInputMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#acbb979edee9427efa2a7c0dbd881c483">getMutDFPTDataTy</a>()-><a class="code" href="classSVF_1_1MutableDFPTData.html#ae999df6f94a097f1fcb36979327790de">getDFIn</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"><a class="line" href="classSVF_1_1FlowSensitive.html#a661c4c1d5902c924060cc81219591d6f"> 266</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> DFInOutMap& <a class="code" href="classSVF_1_1FlowSensitive.html#a661c4c1d5902c924060cc81219591d6f">getDFOutputMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#acbb979edee9427efa2a7c0dbd881c483">getMutDFPTDataTy</a>()-><a class="code" href="classSVF_1_1MutableDFPTData.html#a6d02392602cf7956ff41e345518d683c">getDFOut</a>();</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a89d3b97b8077027514135c9201c4d02c">cluster</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a5a8688102f3675cf414b01dc2ae51c6b">plainMap</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776"> 278</a></span>  <span class="keyword">static</span> <a class="code" href="classSVF_1_1FlowSensitive.html">FlowSensitive</a>* <a class="code" href="classSVF_1_1FlowSensitive.html#a4ad2095dc708df07602de25e4a004776">fspta</a>;</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a76f6f19ac2b58ab4a10a2d7e6e24e42a"> 279</a></span>  <a class="code" href="classSVF_1_1SVFGBuilder.html">SVFGBuilder</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a76f6f19ac2b58ab4a10a2d7e6e24e42a">memSSA</a>;</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d"> 280</a></span>  <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a> *<a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#adba7ffe68ae7edce9b3aa896f978da6b"> 283</a></span>  std::vector<std::pair<hclust_fast_methods, std::vector<NodeID>>> <a class="code" href="classSVF_1_1FlowSensitive.html#adba7ffe68ae7edce9b3aa896f978da6b">candidateMappings</a>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</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"><a class="line" href="classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7"> 287</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7">numOfProcessedAddr</a>; </div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54"> 288</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54">numOfProcessedCopy</a>; </div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e"> 289</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e">numOfProcessedGep</a>; </div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70"> 290</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70">numOfProcessedPhi</a>; </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268"> 291</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268">numOfProcessedLoad</a>; </div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d"> 292</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d">numOfProcessedStore</a>; </div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#abdc30e45347579986c42795a436a1251"> 293</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#abdc30e45347579986c42795a436a1251">numOfProcessedActualParam</a>; </div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ae048cc5350cf2b075c05f5d84777a3c5"> 294</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#ae048cc5350cf2b075c05f5d84777a3c5">numOfProcessedFormalRet</a>; </div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf"> 295</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf">numOfProcessedMSSANode</a>; </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#aa3d4703756a6297ab5c0756172024fe4"> 297</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#aa3d4703756a6297ab5c0756172024fe4">maxSCCSize</a>;</div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3"> 298</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3">numOfSCC</a>;</div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a9f3fe97202db8170fa9f47c5684bce75"> 299</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a9f3fe97202db8170fa9f47c5684bce75">numOfNodesInSCC</a>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a4202f837e863a48712765cc346d8b514"> 301</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a4202f837e863a48712765cc346d8b514">solveTime</a>; </div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#af496fa9aa2f4d59594950b2ad121deff"> 302</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#af496fa9aa2f4d59594950b2ad121deff">sccTime</a>; </div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72"> 303</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72">processTime</a>; </div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ac4d4b42bb96006801597f81ed3c4b337"> 304</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ac4d4b42bb96006801597f81ed3c4b337">propagationTime</a>; </div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#ae086de68233375be42185f0af706687a"> 305</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#ae086de68233375be42185f0af706687a">directPropaTime</a>; </div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a2feaa4b7a72989b311e9084a81320254"> 306</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a2feaa4b7a72989b311e9084a81320254">indirectPropaTime</a>; </div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226"> 307</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226">updateTime</a>; </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b"> 308</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b">addrTime</a>; </div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a888d6334e5e226c634680e4c0674dcfb"> 309</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a888d6334e5e226c634680e4c0674dcfb">copyTime</a>; </div><div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290"> 310</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290">gepTime</a>; </div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067"> 311</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">loadTime</a>; </div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7"> 312</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7">storeTime</a>; </div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#aee7d59b7ad00cf1cf6e3fba19513aa42"> 313</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aee7d59b7ad00cf1cf6e3fba19513aa42">phiTime</a>; </div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07"> 314</a></span>  <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07">updateCallGraphTime</a>; </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305"> 316</a></span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">svfgHasSU</a>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a5f015d8f2b0956306822172d02b415c3">svfgStat</a>();</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> };</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor">#endif </span><span class="comment">/* FLOWSENSITIVEANALYSIS_H_ */</span><span class="preprocessor"></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#l00303">FlowSensitive.h:303</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
|
|
71
71
|
<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#l00240">VFGNode.h:240</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_af9a2bd5b490f1cc5335ce696173c78dd"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#af9a2bd5b490f1cc5335ce696173c78dd">SVF::FlowSensitive::DFInOutMap</a></div><div class="ttdeci">BVDataPTAImpl::MutDFPTDataTy::DFPtsMap DFInOutMap</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00057">FlowSensitive.h:57</a></div></div>
|
|
@@ -94,7 +94,6 @@ $(function() {
|
|
|
94
94
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_acbb979edee9427efa2a7c0dbd881c483"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#acbb979edee9427efa2a7c0dbd881c483">SVF::BVDataPTAImpl::getMutDFPTDataTy</a></div><div class="ttdeci">MutDFPTDataTy * getMutDFPTDataTy() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00192">PointerAnalysisImpl.h:192</a></div></div>
|
|
95
95
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_abdc30e45347579986c42795a436a1251"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#abdc30e45347579986c42795a436a1251">SVF::FlowSensitive::numOfProcessedActualParam</a></div><div class="ttdeci">u32_t numOfProcessedActualParam</div><div class="ttdoc">Number of processed Store node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00293">FlowSensitive.h:293</a></div></div>
|
|
96
96
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a16f594356ea565eb1fed2acea516a16b"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a16f594356ea565eb1fed2acea516a16b">SVF::FlowSensitive::processNode</a></div><div class="ttdeci">virtual void processNode(NodeID nodeId)</div><div class="ttdoc">Handle various constraints. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00180">FlowSensitive.cpp:180</a></div></div>
|
|
97
|
-
<div class="ttc" id="CFLGrammar_8txt_html_aae7baac9bf1fe49869f5ab76e07bfd05"><div class="ttname"><a href="CFLGrammar_8txt.html#aae7baac9bf1fe49869f5ab76e07bfd05">addr</a></div><div class="ttdeci">V addrbar addr</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00017">CFLGrammar.txt:17</a></div></div>
|
|
98
97
|
<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#l00612">FlowSensitive.cpp:612</a></div></div>
|
|
99
98
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ae048cc5350cf2b075c05f5d84777a3c5"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae048cc5350cf2b075c05f5d84777a3c5">SVF::FlowSensitive::numOfProcessedFormalRet</a></div><div class="ttdeci">u32_t numOfProcessedFormalRet</div><div class="ttdoc">Number of processed actual param node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00294">FlowSensitive.h:294</a></div></div>
|
|
100
99
|
<div class="ttc" id="classSVF_1_1AndersenWaveDiff_html"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html">SVF::AndersenWaveDiff</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00378">Andersen.h:378</a></div></div>
|
|
@@ -110,7 +109,6 @@ $(function() {
|
|
|
110
109
|
<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#l00122">FlowSensitive.cpp:122</a></div></div>
|
|
111
110
|
<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#l00314">FlowSensitive.h:314</a></div></div>
|
|
112
111
|
<div class="ttc" id="classSVF_1_1DFPTData_html_a88cf9cd48ee5c1b8b3c71b379f23ab6b"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a88cf9cd48ee5c1b8b3c71b379f23ab6b">SVF::DFPTData::updateDFInFromIn</a></div><div class="ttdeci">virtual bool updateDFInFromIn(LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar)=0</div></div>
|
|
113
|
-
<div class="ttc" id="CFLGrammar_8txt_html_a7669ee67a0563250c1efaa24d130e1ac"><div class="ttname"><a href="CFLGrammar_8txt.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a></div><div class="ttdeci">F F copy</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00007">CFLGrammar.txt:7</a></div></div>
|
|
114
112
|
<div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
|
|
115
113
|
<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#l00292">FlowSensitive.h:292</a></div></div>
|
|
116
114
|
<div class="ttc" id="classSVF_1_1WPAFSSolver_html"><div class="ttname"><a href="classSVF_1_1WPAFSSolver.html">SVF::WPAFSSolver</a></div><div class="ttdef"><b>Definition:</b> <a href="WPAFSSolver_8h_source.html#l00048">WPAFSSolver.h:48</a></div></div>
|
|
@@ -130,7 +128,6 @@ $(function() {
|
|
|
130
128
|
<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#l00291">FlowSensitive.h:291</a></div></div>
|
|
131
129
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a35bd5f0fb2c146199e9f1aa6a19b4062"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">SVF::PointerAnalysis::CallEdgeMap</a></div><div class="ttdeci">OrderedMap< const CallICFGNode *, FunctionSet > CallEdgeMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00106">PointerAnalysis.h:106</a></div></div>
|
|
132
130
|
<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#l00278">FlowSensitive.h:278</a></div></div>
|
|
133
|
-
<div class="ttc" id="CFLGrammar_8txt_html_af94ae7efab42c57589a313f6cc7ada63"><div class="ttname"><a href="CFLGrammar_8txt.html#af94ae7efab42c57589a313f6cc7ada63">load</a></div><div class="ttdeci">F F store V load</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00009">CFLGrammar.txt:9</a></div></div>
|
|
134
131
|
<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#l00313">FlowSensitive.h:313</a></div></div>
|
|
135
132
|
<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>
|
|
136
133
|
<div class="ttc" id="classSVF_1_1DFPTData_html_ac20579e277a284158e2924fb5946cd86"><div class="ttname"><a href="classSVF_1_1DFPTData.html#ac20579e277a284158e2924fb5946cd86">SVF::DFPTData::clearAllDFOutUpdatedVar</a></div><div class="ttdeci">virtual void clearAllDFOutUpdatedVar(LocID)=0</div></div>
|
|
@@ -164,7 +161,6 @@ $(function() {
|
|
|
164
161
|
<div class="ttc" id="classSVF_1_1DFPTData_html_a2ec4fb73d87f10c86fac34b3500532b3"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a2ec4fb73d87f10c86fac34b3500532b3">SVF::DFPTData::updateDFInFromOut</a></div><div class="ttdeci">virtual bool updateDFInFromOut(LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar)=0</div><div class="ttdoc">Union (IN[dstLoc:dstVar], OUT[srcLoc:srcVar]). </div></div>
|
|
165
162
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ae6aed22a79ac6567446dfcba82cb17b8"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae6aed22a79ac6567446dfcba82cb17b8">SVF::FlowSensitive::releaseFSWPA</a></div><div class="ttdeci">static void releaseFSWPA()</div><div class="ttdoc">Release flow-sensitive pointer analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00095">FlowSensitive.h:95</a></div></div>
|
|
166
163
|
<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#l00305">FlowSensitive.h:305</a></div></div>
|
|
167
|
-
<div class="ttc" id="CFLGrammar_8txt_html_a92d5a256d74eadeb5bfa131b84067f0d"><div class="ttname"><a href="CFLGrammar_8txt.html#a92d5a256d74eadeb5bfa131b84067f0d">store</a></div><div class="ttdeci">Memflow load store</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00030">CFLGrammar.txt:30</a></div></div>
|
|
168
164
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html">SVF::MutableDFPTData</a></div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00049">MutablePointsToDS.h:49</a></div></div>
|
|
169
165
|
<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#l00509">FlowSensitive.cpp:509</a></div></div>
|
|
170
166
|
<div class="ttc" id="SVFGOPT_8h_html"><div class="ttname"><a href="SVFGOPT_8h.html">SVFGOPT.h</a></div></div>
|
|
@@ -190,6 +186,7 @@ $(function() {
|
|
|
190
186
|
<div class="ttc" id="classSVF_1_1SVFGBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html">SVF::SVFGBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8h_source.html#l00042">SVFGBuilder.h:42</a></div></div>
|
|
191
187
|
<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#l00764">FlowSensitive.cpp:764</a></div></div>
|
|
192
188
|
<div class="ttc" id="classSVF_1_1DFPTData_html_a506a2be8f909663d59245254bddea00b"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a506a2be8f909663d59245254bddea00b">SVF::DFPTData::updateAllDFInFromIn</a></div><div class="ttdeci">virtual bool updateAllDFInFromIn(LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar)=0</div><div class="ttdoc">Union (IN[dstLoc::dstVar], IN[srcLoc:srcVar]. There is no flag check, unlike the above. </div></div>
|
|
189
|
+
<div class="ttc" id="cJSON_8cpp_html_a7669ee67a0563250c1efaa24d130e1ac"><div class="ttname"><a href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a></div><div class="ttdeci">copy</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00414">cJSON.cpp:414</a></div></div>
|
|
193
190
|
<div class="ttc" id="classSVF_1_1DFPTData_html_a96a5d7e867095b3c215c73599fd31c19"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a96a5d7e867095b3c215c73599fd31c19">SVF::DFPTData::updateAllDFInFromOut</a></div><div class="ttdeci">virtual bool updateAllDFInFromOut(LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar)=0</div><div class="ttdoc">Union (IN[dstLoc::dstVar], OUT[srcLoc:srcVar]. There is no flag check, unlike the above...</div></div>
|
|
194
191
|
<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>
|
|
195
192
|
<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>
|