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
|
@@ -300,10 +300,10 @@ Private Member Functions</h2></td></tr>
|
|
|
300
300
|
<tr class="memitem:a7c0bb1406f0e583c38e522ca06dfa73a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, const <a class="el" href="classSVF_1_1MemRegion.html">MemRegion</a> *mr)</td></tr>
|
|
301
301
|
<tr class="separator:a7c0bb1406f0e583c38e522ca06dfa73a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
302
302
|
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
|
|
303
|
-
<tr class="memitem:adb8009633b4e3b69609790fa068b3f42"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, const <a class="el" href="classSVF_1_1LoadStmt.html">LoadStmt</a>
|
|
303
|
+
<tr class="memitem:adb8009633b4e3b69609790fa068b3f42"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, const <a class="el" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load, const <a class="el" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1">MRSet</a> &mrSet)</td></tr>
|
|
304
304
|
<tr class="memdesc:adb8009633b4e3b69609790fa068b3f42"><td class="mdescLeft"> </td><td class="mdescRight">Add methods for mus/chis/phis. <a href="#adb8009633b4e3b69609790fa068b3f42">More...</a><br /></td></tr>
|
|
305
305
|
<tr class="separator:adb8009633b4e3b69609790fa068b3f42"><td class="memSeparator" colspan="2"> </td></tr>
|
|
306
|
-
<tr class="memitem:a4e11797df16b0b612191607180acc0c5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, const <a class="el" href="classSVF_1_1StoreStmt.html">StoreStmt</a>
|
|
306
|
+
<tr class="memitem:a4e11797df16b0b612191607180acc0c5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, const <a class="el" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store, const <a class="el" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1">MRSet</a> &mrSet)</td></tr>
|
|
307
307
|
<tr class="separator:a4e11797df16b0b612191607180acc0c5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
308
308
|
<tr class="memitem:a8f121e686d36748e4528d0ea66dcaa24"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cs, const <a class="el" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1">MRSet</a> &mrSet)</td></tr>
|
|
309
309
|
<tr class="separator:a8f121e686d36748e4528d0ea66dcaa24"><td class="memSeparator" colspan="2"> </td></tr>
|
|
@@ -311,9 +311,9 @@ Private Member Functions</h2></td></tr>
|
|
|
311
311
|
<tr class="separator:ad8011273feaf046bf7f3a3f3b904a91d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
312
312
|
<tr class="memitem:a606aaf7a76ca71cb32adc9af7291ae6e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, const <a class="el" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1">MRSet</a> &mrSet)</td></tr>
|
|
313
313
|
<tr class="separator:a606aaf7a76ca71cb32adc9af7291ae6e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
314
|
-
<tr class="memitem:a397c835c15c15e18697beca2ff27a73f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f">AddLoadMU</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, const <a class="el" href="classSVF_1_1LoadStmt.html">LoadStmt</a>
|
|
314
|
+
<tr class="memitem:a397c835c15c15e18697beca2ff27a73f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f">AddLoadMU</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, const <a class="el" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load, const <a class="el" href="classSVF_1_1MemRegion.html">MemRegion</a> *mr)</td></tr>
|
|
315
315
|
<tr class="separator:a397c835c15c15e18697beca2ff27a73f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
316
|
-
<tr class="memitem:a8d9bfa2ad724a3b286edc56b7c15e9bf"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf">AddStoreCHI</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, const <a class="el" href="classSVF_1_1StoreStmt.html">StoreStmt</a>
|
|
316
|
+
<tr class="memitem:a8d9bfa2ad724a3b286edc56b7c15e9bf"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf">AddStoreCHI</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, const <a class="el" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store, const <a class="el" href="classSVF_1_1MemRegion.html">MemRegion</a> *mr)</td></tr>
|
|
317
317
|
<tr class="separator:a8d9bfa2ad724a3b286edc56b7c15e9bf"><td class="memSeparator" colspan="2"> </td></tr>
|
|
318
318
|
<tr class="memitem:adbaf4715d5d4c9d0be1e934178efe13e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e">AddCallSiteMU</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cs, const <a class="el" href="classSVF_1_1MemRegion.html">MemRegion</a> *mr)</td></tr>
|
|
319
319
|
<tr class="separator:adbaf4715d5d4c9d0be1e934178efe13e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
@@ -1157,8 +1157,7 @@ Private Attributes</h2></td></tr>
|
|
|
1157
1157
|
<p>Add methods for mus/chis/phis. </p>
|
|
1158
1158
|
|
|
1159
1159
|
<p class="definition">Definition at line <a class="el" href="MemSSA_8h_source.html#l00187">187</a> of file <a class="el" href="MemSSA_8h_source.html">MemSSA.h</a>.</p>
|
|
1160
|
-
<div class="fragment"><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(bb
|
|
1161
|
-
<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>
|
|
1160
|
+
<div class="fragment"><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(bb,load,*iter);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="ttc" id="classSVF_1_1MemSSA_html_adb8009633b4e3b69609790fa068b3f42"><div class="ttname"><a href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">SVF::MemSSA::AddLoadMU</a></div><div class="ttdeci">void AddLoadMU(const BasicBlock *bb, const LoadStmt *load, const MRSet &mrSet)</div><div class="ttdoc">Add methods for mus/chis/phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00187">MemSSA.h:187</a></div></div>
|
|
1162
1161
|
</div><!-- fragment -->
|
|
1163
1162
|
</div>
|
|
1164
1163
|
</div>
|
|
@@ -1203,10 +1202,9 @@ Private Attributes</h2></td></tr>
|
|
|
1203
1202
|
</div><div class="memdoc">
|
|
1204
1203
|
|
|
1205
1204
|
<p class="definition">Definition at line <a class="el" href="MemSSA_8h_source.html#l00212">212</a> of file <a class="el" href="MemSSA_8h_source.html">MemSSA.h</a>.</p>
|
|
1206
|
-
<div class="fragment"><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_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>(bb
|
|
1205
|
+
<div class="fragment"><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_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>(bb,load, mr);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>[load].insert(mu);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="ttc" id="classSVF_1_1MemSSA_html_a8032c530b44e264544881d53d2fac390"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">SVF::MemSSA::collectRegUses</a></div><div class="ttdeci">void collectRegUses(const MemRegion *mr)</div><div class="ttdoc">Collect region uses and region defs according to mus/chis, in order to insert phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00173">MemSSA.h:173</a></div></div>
|
|
1207
1206
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a5cf94edea3a5c35b3c1d9c6ae4b5f9d6"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">SVF::MemSSA::load2MuSetMap</a></div><div class="ttdeci">LoadToMUSetMap load2MuSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00134">MemSSA.h:134</a></div></div>
|
|
1208
1207
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a4717016109fd3bc80f3095d11afff5b1"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">SVF::MemSSA::LOADMU</a></div><div class="ttdeci">LoadMU< Condition > LOADMU</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00061">MemSSA.h:61</a></div></div>
|
|
1209
|
-
<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>
|
|
1210
1208
|
</div><!-- fragment -->
|
|
1211
1209
|
</div>
|
|
1212
1210
|
</div>
|
|
@@ -1330,8 +1328,7 @@ Private Attributes</h2></td></tr>
|
|
|
1330
1328
|
</div><div class="memdoc">
|
|
1331
1329
|
|
|
1332
1330
|
<p class="definition">Definition at line <a class="el" href="MemSSA_8h_source.html#l00192">192</a> of file <a class="el" href="MemSSA_8h_source.html">MemSSA.h</a>.</p>
|
|
1333
|
-
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(bb
|
|
1334
|
-
<div class="ttc" id="classSVF_1_1MemSSA_html_a4e11797df16b0b612191607180acc0c5"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">SVF::MemSSA::AddStoreCHI</a></div><div class="ttdeci">void AddStoreCHI(const BasicBlock *bb, const StoreStmt *store, const MRSet &mrSet)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00192">MemSSA.h:192</a></div></div>
|
|
1331
|
+
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(bb,store,*iter);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="ttc" id="classSVF_1_1MemSSA_html_a4e11797df16b0b612191607180acc0c5"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">SVF::MemSSA::AddStoreCHI</a></div><div class="ttdeci">void AddStoreCHI(const BasicBlock *bb, const StoreStmt *store, const MRSet &mrSet)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00192">MemSSA.h:192</a></div></div>
|
|
1335
1332
|
</div><!-- fragment -->
|
|
1336
1333
|
</div>
|
|
1337
1334
|
</div>
|
|
@@ -1376,11 +1373,10 @@ Private Attributes</h2></td></tr>
|
|
|
1376
1373
|
</div><div class="memdoc">
|
|
1377
1374
|
|
|
1378
1375
|
<p class="definition">Definition at line <a class="el" href="MemSSA_8h_source.html#l00218">218</a> of file <a class="el" href="MemSSA_8h_source.html">MemSSA.h</a>.</p>
|
|
1379
|
-
<div class="fragment"><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>  <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>(bb
|
|
1376
|
+
<div class="fragment"><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>  <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>(bb,store, mr);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>[store].insert(chi);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(bb,mr);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="ttc" id="classSVF_1_1MemSSA_html_a150e9d53ced1c143bba2d1026f739fa4"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">SVF::MemSSA::STORECHI</a></div><div class="ttdeci">StoreCHI< Condition > STORECHI</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00065">MemSSA.h:65</a></div></div>
|
|
1380
1377
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a7c0bb1406f0e583c38e522ca06dfa73a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">SVF::MemSSA::collectRegDefs</a></div><div class="ttdeci">void collectRegDefs(const BasicBlock *bb, const MemRegion *mr)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00178">MemSSA.h:178</a></div></div>
|
|
1381
1378
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a8032c530b44e264544881d53d2fac390"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">SVF::MemSSA::collectRegUses</a></div><div class="ttdeci">void collectRegUses(const MemRegion *mr)</div><div class="ttdoc">Collect region uses and region defs according to mus/chis, in order to insert phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00173">MemSSA.h:173</a></div></div>
|
|
1382
1379
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a73d7465cf166d9ffa9d234d15edb375a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">SVF::MemSSA::store2ChiSetMap</a></div><div class="ttdeci">StoreToChiSetMap store2ChiSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00135">MemSSA.h:135</a></div></div>
|
|
1383
|
-
<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>
|
|
1384
1380
|
</div><!-- fragment -->
|
|
1385
1381
|
</div>
|
|
1386
1382
|
</div>
|
|
@@ -1536,7 +1532,7 @@ Private Attributes</h2></td></tr>
|
|
|
1536
1532
|
<p>if the function does not have a reachable return instruction from function entry then we won't create return mu for it </p>
|
|
1537
1533
|
|
|
1538
1534
|
<p class="definition">Definition at line <a class="el" href="MemSSA_8cpp_source.html#l00114">114</a> of file <a class="el" href="MemSSA_8cpp_source.html">MemSSA.cpp</a>.</p>
|
|
1539
|
-
<div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a385e9d80a013723304b329454d32e8b1">DMSSA</a>,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\t creating mu chi for function "</span> << fun.<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>()</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// 1. create mu/chi</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// insert a set of mus for memory regions at each load</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// inset a set of chis for memory regions at each store</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// 2. find global names (region name before renaming) of each memory region,</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// collect used mrs in usedRegs, and collect its def basic block in reg2BBMap</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// in the form of mu(r) and r = chi (r)</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// a) mu(r):</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// if(r \not\in varKills) global = global \cup r</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// b) r = chi(r):</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// if(r \not\in varKills) global = global \cup r</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// varKills = varKills \cup r</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// block(r) = block(r) \cup bb_{chi}</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">BBList</a> reachableBBs = fun.<a class="code" href="classSVF_1_1SVFFunction.html#a18b638221f5b7618f10b0f6ff4310fd4">getReachableBBs</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>  <span class="keywordflow">for</span> (BBList::const_iterator iter = reachableBBs.begin(), eiter = reachableBBs.end();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  iter != eiter; ++iter)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = *iter;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43">varKills</a>.clear();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb->begin(), eit = bb->end();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  it != eit; ++it)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*it;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a6f631290f3da7c308395eb6a9472d7a5">hasSVFStmtList</a>(inst))</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>& pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">getPAGEdgesFromInst</a>(inst);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">for</span> (SVFStmtList::const_iterator bit = pagEdgeList.begin(),</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  ebit = pagEdgeList.end(); bit != ebit; ++bit)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst = *bit;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* <a class="code" href="CFLGrammar_8txt.html#af94ae7efab42c57589a313f6cc7ada63">load</a> = SVFUtil::dyn_cast<LoadStmt>(inst))</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(bb, <a class="code" href="CFLGrammar_8txt.html#af94ae7efab42c57589a313f6cc7ada63">load</a>, <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a19da5768681a21c52a6c43761814a157">getLoadMRSet</a>(<a class="code" href="CFLGrammar_8txt.html#af94ae7efab42c57589a313f6cc7ada63">load</a>));</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* <a class="code" href="CFLGrammar_8txt.html#a92d5a256d74eadeb5bfa131b84067f0d">store</a> = SVFUtil::dyn_cast<StoreStmt>(inst))</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(bb, <a class="code" href="CFLGrammar_8txt.html#a92d5a256d74eadeb5bfa131b84067f0d">store</a>, <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a364ad1e34d09a92cdc0cfe530c84880f">getStoreMRSet</a>(<a class="code" href="CFLGrammar_8txt.html#a92d5a256d74eadeb5bfa131b84067f0d">store</a>));</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</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="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#af06e8ac43efdedb97a2008cd93fc32d6">hasRefMRSet</a>(cs))</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a>(cs,<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#acd4694a030755b7491a6ef55d9ba2682">getCallSiteRefMRSet</a>(cs));</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a7d66a341805af7ec4e4893e5a7e0bc2d">hasModMRSet</a>(cs))</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">AddCallSiteCHI</a>(cs,<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a4ee12b940608c34ee81b07cdc8d35538">getCallSiteModMRSet</a>(cs));</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// create entry chi for this function including all memory regions</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// initialize them with version 0 and 1 r_1 = chi (r_0)</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>.begin(), eiter = <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>.end();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  iter != eiter; ++iter)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = *iter;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// initialize mem region version and stack for renaming phase</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634">mr2CounterMap</a>[mr] = 0;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>[mr].clear();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>(&fun, mr);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  chi->setOpVer(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(mr,chi));</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  chi->setResVer(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(mr,chi));</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>[&fun].insert(chi);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span>(!fun.<a class="code" href="classSVF_1_1SVFFunction.html#a97b0ad9fd31d7982f44a839605566347">isNotRetFunction</a>())</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>  <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>(&fun, mr);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>[&fun].insert(mu);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div><div class="ttc" id="classSVF_1_1MemSSA_html_acf840b71b67cabe831f01f2d358f27fa"><div class="ttname"><a href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">SVF::MemSSA::usedRegs</a></div><div class="ttdeci">MRSet usedRegs</div><div class="ttdoc">The following three set are used for prune SSA phi insertion. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00150">MemSSA.h:150</a></div></div>
|
|
1535
|
+
<div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a385e9d80a013723304b329454d32e8b1">DMSSA</a>,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\t creating mu chi for function "</span> << fun.<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>()</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// 1. create mu/chi</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// insert a set of mus for memory regions at each load</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// inset a set of chis for memory regions at each store</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// 2. find global names (region name before renaming) of each memory region,</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// collect used mrs in usedRegs, and collect its def basic block in reg2BBMap</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// in the form of mu(r) and r = chi (r)</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// a) mu(r):</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// if(r \not\in varKills) global = global \cup r</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// b) r = chi(r):</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// if(r \not\in varKills) global = global \cup r</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// varKills = varKills \cup r</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// block(r) = block(r) \cup bb_{chi}</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">BBList</a> reachableBBs = fun.<a class="code" href="classSVF_1_1SVFFunction.html#a18b638221f5b7618f10b0f6ff4310fd4">getReachableBBs</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>  <span class="keywordflow">for</span> (BBList::const_iterator iter = reachableBBs.begin(), eiter = reachableBBs.end();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  iter != eiter; ++iter)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = *iter;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43">varKills</a>.clear();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb->begin(), eit = bb->end();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  it != eit; ++it)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*it;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a6f631290f3da7c308395eb6a9472d7a5">hasSVFStmtList</a>(inst))</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>& pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">getPAGEdgesFromInst</a>(inst);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">for</span> (SVFStmtList::const_iterator bit = pagEdgeList.begin(),</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  ebit = pagEdgeList.end(); bit != ebit; ++bit)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst = *bit;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load = SVFUtil::dyn_cast<LoadStmt>(inst))</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(bb, load, <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a19da5768681a21c52a6c43761814a157">getLoadMRSet</a>(load));</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::dyn_cast<StoreStmt>(inst))</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(bb, store, <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a364ad1e34d09a92cdc0cfe530c84880f">getStoreMRSet</a>(store));</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</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="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#af06e8ac43efdedb97a2008cd93fc32d6">hasRefMRSet</a>(cs))</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a>(cs,<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#acd4694a030755b7491a6ef55d9ba2682">getCallSiteRefMRSet</a>(cs));</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a7d66a341805af7ec4e4893e5a7e0bc2d">hasModMRSet</a>(cs))</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">AddCallSiteCHI</a>(cs,<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a4ee12b940608c34ee81b07cdc8d35538">getCallSiteModMRSet</a>(cs));</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// create entry chi for this function including all memory regions</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// initialize them with version 0 and 1 r_1 = chi (r_0)</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">for</span> (MRSet::iterator iter = <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>.begin(), eiter = <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>.end();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  iter != eiter; ++iter)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = *iter;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// initialize mem region version and stack for renaming phase</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634">mr2CounterMap</a>[mr] = 0;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>[mr].clear();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>(&fun, mr);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  chi->setOpVer(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(mr,chi));</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  chi->setResVer(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(mr,chi));</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>[&fun].insert(chi);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span>(!fun.<a class="code" href="classSVF_1_1SVFFunction.html#a97b0ad9fd31d7982f44a839605566347">isNotRetFunction</a>())</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>  <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>(&fun, mr);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>[&fun].insert(mu);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div><div class="ttc" id="classSVF_1_1MemSSA_html_acf840b71b67cabe831f01f2d358f27fa"><div class="ttname"><a href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">SVF::MemSSA::usedRegs</a></div><div class="ttdeci">MRSet usedRegs</div><div class="ttdoc">The following three set are used for prune SSA phi insertion. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00150">MemSSA.h:150</a></div></div>
|
|
1540
1536
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
1541
1537
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_a364ad1e34d09a92cdc0cfe530c84880f"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a364ad1e34d09a92cdc0cfe530c84880f">SVF::MRGenerator::getStoreMRSet</a></div><div class="ttdeci">MRSet & getStoreMRSet(const StoreStmt *store)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00451">MemRegion.h:451</a></div></div>
|
|
1542
1538
|
<div class="ttc" id="classSVF_1_1MemSSA_html_adb8009633b4e3b69609790fa068b3f42"><div class="ttname"><a href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">SVF::MemSSA::AddLoadMU</a></div><div class="ttdeci">void AddLoadMU(const BasicBlock *bb, const LoadStmt *load, const MRSet &mrSet)</div><div class="ttdoc">Add methods for mus/chis/phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00187">MemSSA.h:187</a></div></div>
|
|
@@ -1550,7 +1546,6 @@ Private Attributes</h2></td></tr>
|
|
|
1550
1546
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_af06e8ac43efdedb97a2008cd93fc32d6"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#af06e8ac43efdedb97a2008cd93fc32d6">SVF::MRGenerator::hasRefMRSet</a></div><div class="ttdeci">bool hasRefMRSet(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00455">MemRegion.h:455</a></div></div>
|
|
1551
1547
|
<div class="ttc" id="classSVF_1_1MemSSA_html_ae64f97a984765a43f05df26b57a43a43"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43">SVF::MemSSA::varKills</a></div><div class="ttdeci">MRSet varKills</div><div class="ttdoc">Collect memory regions whose definition killed. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00154">MemSSA.h:154</a></div></div>
|
|
1552
1548
|
<div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00239">ICFG.cpp:239</a></div></div>
|
|
1553
|
-
<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>
|
|
1554
1549
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a6a20da24d82ace1888be49a2ae0f6bd5"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">SVF::MemSSA::ENTRYCHI</a></div><div class="ttdeci">EntryCHI< Condition > ENTRYCHI</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00064">MemSSA.h:64</a></div></div>
|
|
1555
1550
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
1556
1551
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a953a56a65ee36fd1c78b29179cd3f33a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">SVF::MemSSA::RETMU</a></div><div class="ttdeci">RetMU< Condition > RETMU</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00060">MemSSA.h:60</a></div></div>
|
|
@@ -1561,7 +1556,6 @@ Private Attributes</h2></td></tr>
|
|
|
1561
1556
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
1562
1557
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_a18b638221f5b7618f10b0f6ff4310fd4"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a18b638221f5b7618f10b0f6ff4310fd4">SVF::SVFFunction::getReachableBBs</a></div><div class="ttdeci">const std::vector< const BasicBlock * > & getReachableBBs() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00171">BasicTypes.h:171</a></div></div>
|
|
1563
1558
|
<div class="ttc" id="SVFBasicTypes_8h_html_a385e9d80a013723304b329454d32e8b1"><div class="ttname"><a href="SVFBasicTypes_8h.html#a385e9d80a013723304b329454d32e8b1">DMSSA</a></div><div class="ttdeci">#define DMSSA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00171">SVFBasicTypes.h:171</a></div></div>
|
|
1564
|
-
<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>
|
|
1565
1559
|
<div class="ttc" id="classSVF_1_1SVFValue_html_a2409c01221b9a6632655cee43d1b35e4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00253">SVFBasicTypes.h:253</a></div></div>
|
|
1566
1560
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
1567
1561
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a213ebe634bbdbe33460ccd941c1dc6a5"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">SVF::MemSSA::mrGen</a></div><div class="ttdeci">MRGenerator * mrGen</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00122">MemSSA.h:122</a></div></div>
|
|
@@ -1644,7 +1638,7 @@ Private Attributes</h2></td></tr>
|
|
|
1644
1638
|
<p>Print SSA </p>
|
|
1645
1639
|
|
|
1646
1640
|
<p class="definition">Definition at line <a class="el" href="MemSSA_8cpp_source.html#l00581">581</a> of file <a class="el" href="MemSSA_8cpp_source.html">MemSSA.cpp</a>.</p>
|
|
1647
|
-
<div class="fragment"><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> </div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> fit = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()-><a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), efit = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()-><a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>();</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  fit != efit; ++fit)</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *fit;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a4ac0e6b77fc9ccc18b269268b3cd046d">Options::MSSAFun</a>!=<span class="stringliteral">""</span> && <a class="code" href="classSVF_1_1Options.html#a4ac0e6b77fc9ccc18b269268b3cd046d">Options::MSSAFun</a>!=fun-><a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>())</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  Out << <span class="stringliteral">"==========FUNCTION: "</span> << fun-><a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() << <span class="stringliteral">"==========\n"</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="comment">// dump function entry chi nodes</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c">hasFuncEntryChi</a>(fun))</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a> & entry_chis = <a class="code" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">getFuncEntryChiSet</a>(fun);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">for</span> (CHISet::iterator chi_it = entry_chis.begin(); chi_it != entry_chis.end(); chi_it++)</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  {</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  (*chi_it)->dump();</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  }</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> </div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">for</span> (Function::iterator bit = fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->begin(), ebit = fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->end();</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  bit != ebit; ++bit)</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb = *bit;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">if</span> (bb.hasName())</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  Out << bb.getName().str() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>& phiSet = <a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(&bb);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordflow">for</span>(PHISet::iterator pi = phiSet.begin(), epi = phiSet.end(); pi !=epi; ++pi)</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  (*pi)->dump();</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  }</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> </div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="keywordtype">bool</span> last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">for</span> (BasicBlock::iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  it != eit; ++it)</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>& inst = *it;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="keywordtype">bool</span> isAppCall = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(&inst) && !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(&inst);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">if</span> (isAppCall || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(&inst))</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(&inst);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(cs))</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">if</span> (!last_is_chi)</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  Out << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">for</span> (MUSet::iterator mit = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs).begin(), emit = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs).end();</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  mit != emit; ++mit)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  (*mit)-><a class="code" href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97">dump</a>();</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  }</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> </div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  Out << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(&inst) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> </div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(cs))</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">for</span> (CHISet::iterator cit = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs).begin(), ecit = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs).end();</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  cit != ecit; ++cit)</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  (*cit)->dump();</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  }</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  Out << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  last_is_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  {</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordtype">bool</span> dump_preamble = <span class="keyword">false</span>;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>& pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">getPAGEdgesFromInst</a>(&inst);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keywordflow">for</span>(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  bit!=ebit; ++bit)</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *bit;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* <a class="code" href="CFLGrammar_8txt.html#af94ae7efab42c57589a313f6cc7ada63">load</a> = SVFUtil::dyn_cast<LoadStmt>(edge))</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a>& muSet = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(<a class="code" href="CFLGrammar_8txt.html#af94ae7efab42c57589a313f6cc7ada63">load</a>);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">for</span>(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  {</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">if</span> (!dump_preamble && !last_is_chi)</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  {</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  Out << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  dump_preamble = <span class="keyword">true</span>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  }</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  (*it)->dump();</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> </div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  Out << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(&inst) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordtype">bool</span> has_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">for</span>(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  bit!=ebit; ++bit)</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *bit;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* <a class="code" href="CFLGrammar_8txt.html#a92d5a256d74eadeb5bfa131b84067f0d">store</a> = SVFUtil::dyn_cast<StoreStmt>(edge))</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a>& chiSet = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(<a class="code" href="CFLGrammar_8txt.html#a92d5a256d74eadeb5bfa131b84067f0d">store</a>);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">for</span>(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  has_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  (*it)->dump();</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  }</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">if</span> (has_chi)</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  Out << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  last_is_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  }</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  }</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  }</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> </div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="comment">// dump return mu nodes</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">hasReturnMu</a>(fun))</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a> & return_mus = <a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(fun);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordflow">for</span> (MUSet::iterator mu_it = return_mus.begin(); mu_it != return_mus.end(); mu_it++)</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  (*mu_it)->dump();</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  }</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  }</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span> }</div><div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet & getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00383">MemSSA.h:383</a></div></div>
|
|
1641
|
+
<div class="fragment"><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> </div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> fit = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()-><a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), efit = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()-><a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>();</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  fit != efit; ++fit)</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *fit;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a4ac0e6b77fc9ccc18b269268b3cd046d">Options::MSSAFun</a>!=<span class="stringliteral">""</span> && <a class="code" href="classSVF_1_1Options.html#a4ac0e6b77fc9ccc18b269268b3cd046d">Options::MSSAFun</a>!=fun-><a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>())</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  Out << <span class="stringliteral">"==========FUNCTION: "</span> << fun-><a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() << <span class="stringliteral">"==========\n"</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="comment">// dump function entry chi nodes</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c">hasFuncEntryChi</a>(fun))</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a> & entry_chis = <a class="code" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">getFuncEntryChiSet</a>(fun);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">for</span> (CHISet::iterator chi_it = entry_chis.begin(); chi_it != entry_chis.end(); chi_it++)</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  {</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  (*chi_it)->dump();</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  }</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> </div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">for</span> (Function::iterator bit = fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->begin(), ebit = fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->end();</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  bit != ebit; ++bit)</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb = *bit;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">if</span> (bb.hasName())</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  Out << bb.getName().str() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>& phiSet = <a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(&bb);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordflow">for</span>(PHISet::iterator pi = phiSet.begin(), epi = phiSet.end(); pi !=epi; ++pi)</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  (*pi)->dump();</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  }</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> </div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="keywordtype">bool</span> last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">for</span> (BasicBlock::iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  it != eit; ++it)</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>& inst = *it;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="keywordtype">bool</span> isAppCall = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(&inst) && !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(&inst);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">if</span> (isAppCall || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(&inst))</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(&inst);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(cs))</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">if</span> (!last_is_chi)</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  Out << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">for</span> (MUSet::iterator mit = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs).begin(), emit = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs).end();</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  mit != emit; ++mit)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  (*mit)-><a class="code" href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97">dump</a>();</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  }</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> </div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  Out << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(&inst) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> </div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(cs))</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">for</span> (CHISet::iterator cit = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs).begin(), ecit = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs).end();</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  cit != ecit; ++cit)</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  (*cit)->dump();</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  }</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  Out << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  last_is_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  {</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordtype">bool</span> dump_preamble = <span class="keyword">false</span>;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>& pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">getPAGEdgesFromInst</a>(&inst);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keywordflow">for</span>(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  bit!=ebit; ++bit)</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *bit;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load = SVFUtil::dyn_cast<LoadStmt>(edge))</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a>& muSet = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(load);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">for</span>(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  {</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">if</span> (!dump_preamble && !last_is_chi)</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  {</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  Out << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  dump_preamble = <span class="keyword">true</span>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  }</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  (*it)->dump();</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> </div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  Out << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(&inst) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordtype">bool</span> has_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">for</span>(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  bit!=ebit; ++bit)</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *bit;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::dyn_cast<StoreStmt>(edge))</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a>& chiSet = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">for</span>(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  has_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  (*it)->dump();</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  }</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">if</span> (has_chi)</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  Out << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  last_is_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  }</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  }</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  }</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> </div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="comment">// dump return mu nodes</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">hasReturnMu</a>(fun))</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a> & return_mus = <a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(fun);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordflow">for</span> (MUSet::iterator mu_it = return_mus.begin(); mu_it != return_mus.end(); mu_it++)</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  (*mu_it)->dump();</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  }</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  }</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span> }</div><div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet & getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00383">MemSSA.h:383</a></div></div>
|
|
1648
1642
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
1649
1643
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00156">SVFModule.h:156</a></div></div>
|
|
1650
1644
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
|
|
@@ -1656,7 +1650,6 @@ Private Attributes</h2></td></tr>
|
|
|
1656
1650
|
<div class="ttc" id="classSVF_1_1MemSSA_html_af4d11a0c7da0ddd7dff8d75a00279847"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">SVF::MemSSA::getMUSet</a></div><div class="ttdeci">MUSet & getMUSet(const LoadStmt *ld)</div><div class="ttdoc">Get methods of mu/chi/phi. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00379">MemSSA.h:379</a></div></div>
|
|
1657
1651
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad8b71cebf46deaf60e2cd4f6d6bb9433"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">SVF::PointerAnalysis::getModule</a></div><div class="ttdeci">SVFModule * getModule() const</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00213">PointerAnalysis.h:213</a></div></div>
|
|
1658
1652
|
<div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00239">ICFG.cpp:239</a></div></div>
|
|
1659
|
-
<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>
|
|
1660
1653
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
1661
1654
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a81bba824495a882b49e687683954b112"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">SVF::MemSSA::MUSet</a></div><div class="ttdeci">Set< MU * > MUSet</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00070">MemSSA.h:70</a></div></div>
|
|
1662
1655
|
<div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00378">SVFStatements.h:378</a></div></div>
|
|
@@ -1666,7 +1659,6 @@ Private Attributes</h2></td></tr>
|
|
|
1666
1659
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00390">SVFUtil.cpp:390</a></div></div>
|
|
1667
1660
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a93ac673b885633849fa484938405ca75"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">SVF::SVFUtil::isHeapAllocExtCall</a></div><div class="ttdeci">bool isHeapAllocExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00507">SVFUtil.h:507</a></div></div>
|
|
1668
1661
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a3400d9a921672b3872656acecc3eac9f"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">SVF::MemSSA::hasReturnMu</a></div><div class="ttdeci">bool hasReturnMu(const SVFFunction *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00362">MemSSA.h:362</a></div></div>
|
|
1669
|
-
<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>
|
|
1670
1662
|
<div class="ttc" id="classSVF_1_1SVFValue_html_a2409c01221b9a6632655cee43d1b35e4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00253">SVFBasicTypes.h:253</a></div></div>
|
|
1671
1663
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
1672
1664
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00140">BasicTypes.h:140</a></div></div>
|
|
@@ -2399,8 +2391,7 @@ Private Attributes</h2></td></tr>
|
|
|
2399
2391
|
</div><div class="memdoc">
|
|
2400
2392
|
|
|
2401
2393
|
<p class="definition">Definition at line <a class="el" href="MemSSA_8h_source.html#l00334">334</a> of file <a class="el" href="MemSSA_8h_source.html">MemSSA.h</a>.</p>
|
|
2402
|
-
<div class="fragment"><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> StoreStmt*
|
|
2403
|
-
<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>
|
|
2394
|
+
<div class="fragment"><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> StoreStmt* store = SVFUtil::dyn_cast<StoreStmt>(</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  inst))</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  assert(0 != <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>.count(store)</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  && <span class="stringliteral">"not associated with mem region!"</span>);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="ttc" id="classSVF_1_1MemSSA_html_a73d7465cf166d9ffa9d234d15edb375a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">SVF::MemSSA::store2ChiSetMap</a></div><div class="ttdeci">StoreToChiSetMap store2ChiSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00135">MemSSA.h:135</a></div></div>
|
|
2404
2395
|
</div><!-- fragment -->
|
|
2405
2396
|
</div>
|
|
2406
2397
|
</div>
|
|
@@ -2491,8 +2482,7 @@ Private Attributes</h2></td></tr>
|
|
|
2491
2482
|
<p>Has mu/chi methods. </p>
|
|
2492
2483
|
|
|
2493
2484
|
<p class="definition">Definition at line <a class="el" href="MemSSA_8h_source.html#l00323">323</a> of file <a class="el" href="MemSSA_8h_source.html">MemSSA.h</a>.</p>
|
|
2494
|
-
<div class="fragment"><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> LoadStmt*
|
|
2495
|
-
<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>
|
|
2485
|
+
<div class="fragment"><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> LoadStmt* load = SVFUtil::dyn_cast<LoadStmt>(inst))</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  assert(0 != <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>.count(load)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  && <span class="stringliteral">"not associated with mem region!"</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="ttc" id="classSVF_1_1MemSSA_html_a5cf94edea3a5c35b3c1d9c6ae4b5f9d6"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">SVF::MemSSA::load2MuSetMap</a></div><div class="ttdeci">LoadToMUSetMap load2MuSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00134">MemSSA.h:134</a></div></div>
|
|
2496
2486
|
</div><!-- fragment -->
|
|
2497
2487
|
</div>
|
|
2498
2488
|
</div>
|
|
@@ -2930,7 +2920,7 @@ Private Attributes</h2></td></tr>
|
|
|
2930
2920
|
<p>Renaming for each memory regions See the renaming algorithm in book Engineering A Compiler (Figure 9.12) </p>
|
|
2931
2921
|
|
|
2932
2922
|
<p class="definition">Definition at line <a class="el" href="MemSSA_8cpp_source.html#l00264">264</a> of file <a class="el" href="MemSSA_8cpp_source.html">MemSSA.cpp</a>.</p>
|
|
2933
|
-
<div class="fragment"><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="comment">// record which mem region needs to pop stack</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">MRVector</a> memRegs;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="comment">// rename phi result op</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="comment">// for each r = phi (...)</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="comment">// rewrite r as new name</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(&bb))</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">RenamePhiRes</a>(<a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(&bb),memRegs);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// process mu and chi</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// for each mu(r)</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// rewrite r with top mrver of stack(r)</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// for each r = chi(r')</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">// rewrite r' with top mrver of stack(r)</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// rewrite r with new name</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  it != eit; ++it)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*it;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a6f631290f3da7c308395eb6a9472d7a5">hasSVFStmtList</a>(inst))</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>& pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">getPAGEdgesFromInst</a>(inst);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">for</span>(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  bit!=ebit; ++bit)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst = *bit;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* <a class="code" href="CFLGrammar_8txt.html#af94ae7efab42c57589a313f6cc7ada63">load</a> = SVFUtil::dyn_cast<LoadStmt>(inst))</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(<a class="code" href="CFLGrammar_8txt.html#af94ae7efab42c57589a313f6cc7ada63">load</a>));</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* <a class="code" href="CFLGrammar_8txt.html#a92d5a256d74eadeb5bfa131b84067f0d">store</a> = SVFUtil::dyn_cast<StoreStmt>(inst))</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(<a class="code" href="CFLGrammar_8txt.html#a92d5a256d74eadeb5bfa131b84067f0d">store</a>),memRegs);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#af06e8ac43efdedb97a2008cd93fc32d6">hasRefMRSet</a>(cs))</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs));</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a7d66a341805af7ec4e4893e5a7e0bc2d">hasModMRSet</a>(cs))</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs),memRegs);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ac72d668bed7ee23a203a330dc6ee4d9a">SymbolTableInfo::isReturn</a>(inst))</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(bb.getParent());</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(fun));</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</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> </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>  <span class="comment">// fill phi operands of succ basic blocks</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> sit = succ_begin(&bb), esit = succ_end(&bb);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  sit != esit; ++sit)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ = *sit;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa502880f6a0786ea21f348e74f956af4">SymbolTableInfo::getBBPredecessorPos</a>(&bb, succ);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(succ))</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b">RenamePhiOps</a>(<a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(succ),pos,memRegs);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="comment">// for succ basic block in dominator tree</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(bb.getParent());</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const BasicBlock*,Set<const BasicBlock*></a>>& dtBBsMap = fun-><a class="code" href="classSVF_1_1SVFFunction.html#a52358a4814f16dc8db4d62f92968f70e">getDomTreeMap</a>();</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const BasicBlock*,Set<const BasicBlock*></a>>::const_iterator mapIter = dtBBsMap.find(&bb);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span> (mapIter != dtBBsMap.end())</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const BasicBlock*></a>& dtBBs = mapIter->second;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *dtbb : dtBBs)</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SSARenameBB</a>(*dtbb);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="comment">// for each r = chi(..), and r = phi(..)</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// pop ver stack(r)</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">while</span> (!memRegs.empty())</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = memRegs.back();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  memRegs.pop_back();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>[mr].pop_back();</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> }</div><div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet & getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00383">MemSSA.h:383</a></div></div>
|
|
2923
|
+
<div class="fragment"><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="comment">// record which mem region needs to pop stack</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">MRVector</a> memRegs;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="comment">// rename phi result op</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="comment">// for each r = phi (...)</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="comment">// rewrite r as new name</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(&bb))</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">RenamePhiRes</a>(<a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(&bb),memRegs);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// process mu and chi</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// for each mu(r)</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// rewrite r with top mrver of stack(r)</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// for each r = chi(r')</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">// rewrite r' with top mrver of stack(r)</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// rewrite r with new name</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  it != eit; ++it)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*it;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a6f631290f3da7c308395eb6a9472d7a5">hasSVFStmtList</a>(inst))</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>& pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">getPAGEdgesFromInst</a>(inst);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">for</span>(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  bit!=ebit; ++bit)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst = *bit;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load = SVFUtil::dyn_cast<LoadStmt>(inst))</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(load));</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::dyn_cast<StoreStmt>(inst))</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store),memRegs);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#af06e8ac43efdedb97a2008cd93fc32d6">hasRefMRSet</a>(cs))</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs));</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a7d66a341805af7ec4e4893e5a7e0bc2d">hasModMRSet</a>(cs))</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs),memRegs);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ac72d668bed7ee23a203a330dc6ee4d9a">SymbolTableInfo::isReturn</a>(inst))</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(bb.getParent());</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(fun));</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</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> </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>  <span class="comment">// fill phi operands of succ basic blocks</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> sit = succ_begin(&bb), esit = succ_end(&bb);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  sit != esit; ++sit)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ = *sit;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa502880f6a0786ea21f348e74f956af4">SymbolTableInfo::getBBPredecessorPos</a>(&bb, succ);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(succ))</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b">RenamePhiOps</a>(<a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(succ),pos,memRegs);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="comment">// for succ basic block in dominator tree</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(bb.getParent());</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const BasicBlock*,Set<const BasicBlock*></a>>& dtBBsMap = fun-><a class="code" href="classSVF_1_1SVFFunction.html#a52358a4814f16dc8db4d62f92968f70e">getDomTreeMap</a>();</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const BasicBlock*,Set<const BasicBlock*></a>>::const_iterator mapIter = dtBBsMap.find(&bb);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span> (mapIter != dtBBsMap.end())</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const BasicBlock*></a>& dtBBs = mapIter->second;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *dtbb : dtBBs)</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SSARenameBB</a>(*dtbb);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="comment">// for each r = chi(..), and r = phi(..)</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// pop ver stack(r)</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">while</span> (!memRegs.empty())</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = memRegs.back();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  memRegs.pop_back();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>[mr].pop_back();</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> }</div><div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet & getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00383">MemSSA.h:383</a></div></div>
|
|
2934
2924
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
2935
2925
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
|
|
2936
2926
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a964f3fe39ece9a7b8b2033428b75a274"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">SVF::MemSSA::getPHISet</a></div><div class="ttdeci">PHISet & getPHISet(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00395">MemSSA.h:395</a></div></div>
|
|
@@ -2946,7 +2936,6 @@ Private Attributes</h2></td></tr>
|
|
|
2946
2936
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_af06e8ac43efdedb97a2008cd93fc32d6"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#af06e8ac43efdedb97a2008cd93fc32d6">SVF::MRGenerator::hasRefMRSet</a></div><div class="ttdeci">bool hasRefMRSet(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00455">MemRegion.h:455</a></div></div>
|
|
2947
2937
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a6066364112e665c33cbf2ec50ae1e3a8"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">SVF::MemSSA::RenameChiSet</a></div><div class="ttdeci">void RenameChiSet(const CHISet &chiSet, MRVector &memRegs)</div><div class="ttdoc">Rename chi set. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00258">MemSSA.h:258</a></div></div>
|
|
2948
2938
|
<div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00239">ICFG.cpp:239</a></div></div>
|
|
2949
|
-
<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>
|
|
2950
2939
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ac72d668bed7ee23a203a330dc6ee4d9a"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ac72d668bed7ee23a203a330dc6ee4d9a">SVF::SymbolTableInfo::isReturn</a></div><div class="ttdeci">static bool isReturn(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00334">SymbolTableInfo.cpp:334</a></div></div>
|
|
2951
2940
|
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
|
|
2952
2941
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
@@ -2955,7 +2944,6 @@ Private Attributes</h2></td></tr>
|
|
|
2955
2944
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a7c3fda6f082231350524c2d7c16f067e"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">SVF::MemSSA::MRVector</a></div><div class="ttdeci">std::vector< const MemRegion * > MRVector</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00076">MemSSA.h:76</a></div></div>
|
|
2956
2945
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a271c20725d49dd65b95c062938ffde4c"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SVF::MemSSA::SSARenameBB</a></div><div class="ttdeci">virtual void SSARenameBB(const BasicBlock &bb)</div><div class="ttdoc">SSA rename for a basic block. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00264">MemSSA.cpp:264</a></div></div>
|
|
2957
2946
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_a52358a4814f16dc8db4d62f92968f70e"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a52358a4814f16dc8db4d62f92968f70e">SVF::SVFFunction::getDomTreeMap</a></div><div class="ttdeci">Map< const BasicBlock *, Set< const BasicBlock * > > & getDomTreeMap()</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
|
|
2958
|
-
<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>
|
|
2959
2947
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a2527b76b92dffa8f8513ebfdcc8d8133"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">SVF::MemSSA::RenameMuSet</a></div><div class="ttdeci">void RenameMuSet(const MUSet &muSet)</div><div class="ttdoc">Rename mus, chis and phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00247">MemSSA.h:247</a></div></div>
|
|
2960
2948
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
2961
2949
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
|