auto_ManagerAvailableExpressionsStandard.hpp

Go to the documentation of this file.
00001 
00002 /* ManagerAutoAvailableExpressionsStandard.hpp
00003    NOTE: This file was automatically generated by DFAGen.  It is the interface
00004          for the AvailableExpressions analysis manager.
00005 */
00006 
00007 #ifndef ManagerAutoAvailableExpressionsStandard_H
00008 #define ManagerAutoAvailableExpressionsStandard_H
00009 
00010 //--------------------------------------------------------------------
00011 // OpenAnalysis headers
00012 #include <OpenAnalysis/Utils/OA_ptr.hpp>
00013 #include <OpenAnalysis/IRInterface/auto_AvailableExpressionsIRInterface.hpp>
00014 #include <OpenAnalysis/AvailableExpressions/auto_AvailableExpressionsStandard.hpp>
00015 
00016 #include <OpenAnalysis/Alias/Interface.hpp>
00017 
00018 #include <OpenAnalysis/DataFlow/CFGDFProblem.hpp>
00019 #include <OpenAnalysis/Location/Location.hpp>
00020 #include <OpenAnalysis/DataFlow/IRHandleDataFlowSet.hpp>
00021 #include <OpenAnalysis/SideEffect/InterSideEffectInterface.hpp>
00022 #include <OpenAnalysis/DataFlow/CFGDFSolver.hpp>
00023 
00024 #include <OpenAnalysis/CFG/CFG.hpp>
00025 #include <OpenAnalysis/CFG/CFGInterface.hpp>
00026 
00027 namespace OA {
00028   namespace AvailableExpressions {
00029 
00030 
00031 class ManagerAvailableExpressionsStandard
00032     : public virtual DataFlow::CFGDFProblem
00033 {
00034   public:
00035     ManagerAvailableExpressionsStandard(OA_ptr<AvailableExpressionsIRInterface> _ir);
00036     ~ManagerAvailableExpressionsStandard () {}
00037 
00038     OA_ptr<AvailableExpressionsStandard> performAnalysis(
00039         ProcHandle proc,
00040         OA_ptr<CFG::CFGInterface> cfg,
00041         OA_ptr<Alias::Interface> alias,
00042         OA_ptr<SideEffect::InterSideEffectInterface> interSE);
00043 
00044   private:
00045     OA_ptr<DataFlow::DataFlowSet> initializeTop();
00046     OA_ptr<DataFlow::DataFlowSet> initializeBottom();
00047 
00048     OA_ptr<DataFlow::DataFlowSet>
00049        initializeNodeIN(OA_ptr<CFG::NodeInterface> n);
00050 
00051     OA_ptr<DataFlow::DataFlowSet>
00052        initializeNodeOUT(OA_ptr<CFG::NodeInterface> n);
00053 
00054     void dumpset(OA_ptr<AvailableExpressionsDFSet> inSet);
00055 
00056     OA_ptr<DataFlow::DataFlowSet> meet(
00057         OA_ptr<DataFlow::DataFlowSet> set1,
00058         OA_ptr<DataFlow::DataFlowSet> set2);
00059 
00060     OA_ptr<DataFlow::DataFlowSet> genSet(StmtHandle stmt);
00061 
00062     OA_ptr<DataFlow::DataFlowSet> killSet(StmtHandle stmt,
00063         OA_ptr<DataFlow::DataFlowSet> X);
00064 
00065     OA_ptr<DataFlow::DataFlowSet> transfer(
00066         OA_ptr<DataFlow::DataFlowSet> X,
00067         OA::StmtHandle Stmt);
00068 
00069     OA_ptr<AvailableExpressionsIRInterface> mIR;
00070     OA_ptr<Alias::Interface> mAlias;
00071     OA_ptr<AvailableExpressionsStandard> mAvailableExpressionsMap;
00072     OA_ptr<DataFlow::CFGDFSolver> mSolver;
00073 
00074     std::map<StmtHandle, set<OA_ptr<Location> > > mStmt2MayDefMap;
00075     std::map<StmtHandle, set<OA_ptr<Location> > > mStmt2MustDefMap;
00076     std::map<StmtHandle, set<OA_ptr<NewExprTree> > > mStmt2MayExprMap;
00077     std::map<StmtHandle, set<OA_ptr<NewExprTree> > > mStmt2MustExprMap;
00078     std::map<StmtHandle, set<OA_ptr<Location> > > mStmt2MayUseMap;
00079     std::map<StmtHandle, set<OA_ptr<Location> > > mStmt2MustUseMap;
00080 };
00081 
00082   } // end of AvailableExpressions namespace
00083 } // end of OA namespace
00084 
00085 #endif

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