00001 #ifndef ManagerDataDep_h 00002 #define ManagerDataDep_h 00003 00004 /* Before DataDep is implemented what analyses are needed? 00005 - Loop Invariant detection 00006 - UD and DU Chains (how mature is this analysis?) 00007 - Induction variable detection 00008 - Induction variable tuples 00009 - Is this a safe assumption? One basic induction var for loop. 00010 00011 Expansion of GCD: 00012 - Detect loops 00013 */ 00014 00015 #include <OpenAnalysis/Loop/LoopAbstraction.hpp> 00016 #include <OpenAnalysis/IRInterface/DataDepIRInterface.hpp> 00017 #include "DataDepResults.hpp" 00018 using namespace OA::Loop; 00019 00020 namespace OA { 00021 namespace DataDep { 00022 00024 class ManagerDataDep { 00025 public: 00026 ManagerDataDep(OA_ptr<DataDepIRInterface> _ir); 00027 00030 virtual OA_ptr<DataDepResults> performAnalysis( 00031 ProcHandle p, OA_ptr<LoopAbstraction> loop) = 0; 00032 00033 protected: 00034 OA_ptr<DataDepIRInterface> mIR; 00035 }; 00036 00037 00038 // needed for GCD: 00039 00040 // getExprTree(ExprHandle h) 00041 // getConstValIntVal 00042 // getOpType 00043 00044 // bool isInLoop(StmtHandle h, CFG cfg); 00045 } } // namespaces 00046 00047 #endif
1.7.1