ManagerDataDepGCD.cpp

Go to the documentation of this file.
00001 #include "ManagerDataDepGCD.hpp"
00002 
00003 using namespace OA::AffineExpr;
00004 using namespace OA::Loop;
00005 
00006 namespace OA {
00007 namespace DataDep {
00008 
00009 ManagerDataDepGCD::ManagerDataDepGCD(
00010     OA_ptr<DataDepIRInterface> ir,
00011     OA_ptr<Alias::Interface> aliasResults)
00012     :
00013     ManagerDataDep(ir),
00014     mAliasResults(aliasResults)
00015 {
00016 }
00017 
00018 OA_ptr<DataDepResults> ManagerDataDepGCD::performAnalysis(
00019     ProcHandle p, OA_ptr<LoopAbstraction> loop)
00020 {
00021 #if 0
00022     AffineExpr::AffineAnlState errState;
00023     OA_ptr<ManagerAffineExpr> affineExprManager;
00024     affineExprManager = new ManagerAffineExpr(mIR, mAliasResults);
00025 
00026     // iterate across all IdxExprAccess objects, for now we assume they're
00027     // in the given loop
00028     OA_ptr<IdxExprAccessIterator> iter;
00029     iter = mIR->getIdxExprAccessIter(p);
00030 cout << "Start Iteration\n";
00031     for(; iter->isValid(); (*iter)++) {
00032         // Use an affine expression manager to generate the affine expression
00033         // for the IdxExprAccess object we're currently iterating over.
00034         OA_ptr<IdxExprAccess> expr = iter->current();
00035         if(expr->getExpr() == MemRefHandle(0)) {
00036             continue;
00037         } else { }
00038 
00039         OA_ptr<ExprTree> eTree;
00040         eTree = mIR->getExprTree(iter->current()->getExpr());
00041         OA_ptr<AffineExprAbstraction> affineExp;
00042         affineExp = affineExprManager->exprTreeToAffineExpr(*eTree, &errState);
00043         // TODO, finish implementation
00044         assert(false);
00045 
00046         // Output the affine expression for now
00047         affineExp->output(*mIR);
00048     }
00049 cout << "End Iteration\n";
00050 #endif
00051 }
00052 
00053 } } // end namespaces
00054