ManagerDepStandard.hpp

Go to the documentation of this file.
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

Generated on Sat Oct 31 05:21:23 2009 for OpenAnalysis by  doxygen 1.6.1