00001 00015 #ifndef ManagerDepStandard_H 00016 #define ManagerDepStandard_H 00017 00018 //-------------------------------------------------------------------- 00019 // OpenAnalysis headers 00020 #include "DepStandard.hpp" 00021 #include "InterDep.hpp" 00022 #include "DepDFSet.hpp" 00023 #include <OpenAnalysis/IRInterface/ActivityIRInterface.hpp> 00024 #include <OpenAnalysis/ExprTree/DifferentiableLocsVisitor.hpp> 00025 #include <OpenAnalysis/ExprTree/EvalToMemRefVisitor.hpp> 00026 00027 #include <OpenAnalysis/IRInterface/IRHandles.hpp> 00028 #include <OpenAnalysis/CFG/CFGInterface.hpp> 00029 #include <OpenAnalysis/DataFlow/CFGDFProblem.hpp> 00030 #include <OpenAnalysis/DataFlow/LocDFSet.hpp> 00031 #include <OpenAnalysis/DataFlow/ParamBindings.hpp> 00032 #include <OpenAnalysis/DataFlow/CFGDFSolver.hpp> 00033 00034 namespace OA { 00035 namespace Activity { 00036 00042 class ManagerDepStandard 00043 : private DataFlow::CFGDFProblem { 00044 public: 00045 ManagerDepStandard(OA_ptr<ActivityIRInterface> _ir); 00046 ~ManagerDepStandard () {} 00047 00050 OA_ptr<DepStandard> performAnalysis(ProcHandle, 00051 OA_ptr<Alias::Interface> alias, 00052 OA_ptr<CFG::CFGInterface> cfg, OA_ptr<InterDep> interDep, 00053 OA_ptr<DataFlow::ParamBindings> paramBind, 00054 DataFlow::DFPImplement algorithm); 00055 00056 //------------------------------------------------------------------ 00057 // Implementing the callbacks for CFGDFProblem 00058 //------------------------------------------------------------------ 00059 private: 00060 OA_ptr<DataFlow::DataFlowSet> initializeTop(); 00061 OA_ptr<DataFlow::DataFlowSet> initializeBottom(); 00062 00063 // void initializeNode(OA_ptr<CFG::Interface::Node> n); 00064 00065 // Added by PLM 07/26/06 00067 OA_ptr<DataFlow::DataFlowSet> 00068 initializeNodeIN(OA_ptr<CFG::NodeInterface> n); 00069 OA_ptr<DataFlow::DataFlowSet> 00070 initializeNodeOUT(OA_ptr<CFG::NodeInterface> n); 00071 00072 00073 OA_ptr<DataFlow::DataFlowSet> 00074 meet (OA_ptr<DataFlow::DataFlowSet> set1, OA_ptr<DataFlow::DataFlowSet> set2); 00075 00076 OA_ptr<DataFlow::DataFlowSet> 00077 transfer(OA_ptr<DataFlow::DataFlowSet> in, OA::StmtHandle stmt); 00078 00079 00080 private: // member variables 00081 00082 OA_ptr<ActivityIRInterface> mIR; 00083 OA_ptr<DepStandard> mDep; 00084 OA_ptr<Alias::Interface> mAlias; 00085 OA_ptr<InterDep> mInterDep; 00086 OA_ptr<CFG::CFGInterface> mCFG; 00087 OA_ptr<DataFlow::ParamBindings> mParamBind; 00088 // Added by PLM 07/26/06 00089 OA_ptr<DataFlow::CFGDFSolver> mSolver; 00090 00091 }; 00092 00093 } // end of Activity namespace 00094 } // end of OA namespace 00095 00096 #endif
1.6.1