diff options
| author | River Riddle <riverriddle@google.com> | 2019-02-27 10:59:29 -0800 |
|---|---|---|
| committer | jpienaar <jpienaar@google.com> | 2019-03-29 16:47:14 -0700 |
| commit | c6c534493d625c10ce0046baa9dc6293f8dba405 (patch) | |
| tree | 87246fb531049bf478bb4b061217d11b8d7fe254 /mlir/lib/Transforms/MemRefDataFlowOpt.cpp | |
| parent | 6067cdebaa391cb2ab9bda9cd91b26f9ddd95a11 (diff) | |
| download | bcm5719-llvm-c6c534493d625c10ce0046baa9dc6293f8dba405.tar.gz bcm5719-llvm-c6c534493d625c10ce0046baa9dc6293f8dba405.zip | |
Port all of the existing passes over to the new pass manager infrastructure. This is largely NFC.
PiperOrigin-RevId: 235952357
Diffstat (limited to 'mlir/lib/Transforms/MemRefDataFlowOpt.cpp')
| -rw-r--r-- | mlir/lib/Transforms/MemRefDataFlowOpt.cpp | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/mlir/lib/Transforms/MemRefDataFlowOpt.cpp b/mlir/lib/Transforms/MemRefDataFlowOpt.cpp index 0ba06fecae0..067bfa4c94c 100644 --- a/mlir/lib/Transforms/MemRefDataFlowOpt.cpp +++ b/mlir/lib/Transforms/MemRefDataFlowOpt.cpp @@ -69,10 +69,8 @@ namespace { // currently only eliminates the stores only if no other loads/uses (other // than dealloc) remain. // -struct MemRefDataFlowOpt : public FunctionPass { - explicit MemRefDataFlowOpt() : FunctionPass(&MemRefDataFlowOpt::passID) {} - - PassResult runOnFunction(Function *f) override; +struct MemRefDataFlowOpt : public FunctionPass<MemRefDataFlowOpt> { + PassResult runOnFunction() override; void forwardStoreToLoad(OpPointer<LoadOp> loadOp); @@ -83,15 +81,13 @@ struct MemRefDataFlowOpt : public FunctionPass { DominanceInfo *domInfo = nullptr; PostDominanceInfo *postDomInfo = nullptr; - - constexpr static PassID passID = {}; }; } // end anonymous namespace /// Creates a pass to perform optimizations relying on memref dataflow such as /// store to load forwarding, elimination of dead stores, and dead allocs. -FunctionPass *mlir::createMemRefDataFlowOptPass() { +FunctionPassBase *mlir::createMemRefDataFlowOptPass() { return new MemRefDataFlowOpt(); } @@ -213,22 +209,22 @@ void MemRefDataFlowOpt::forwardStoreToLoad(OpPointer<LoadOp> loadOp) { loadOpsToErase.push_back(loadOpInst); } -PassResult MemRefDataFlowOpt::runOnFunction(Function *f) { +PassResult MemRefDataFlowOpt::runOnFunction() { // Only supports single block functions at the moment. - if (f->getBlocks().size() != 1) + Function &f = getFunction(); + if (f.getBlocks().size() != 1) return success(); - DominanceInfo theDomInfo(f); + DominanceInfo theDomInfo(&f); domInfo = &theDomInfo; - PostDominanceInfo thePostDomInfo(f); + PostDominanceInfo thePostDomInfo(&f); postDomInfo = &thePostDomInfo; loadOpsToErase.clear(); memrefsToErase.clear(); // Walk all load's and perform load/store forwarding. - f->walk<LoadOp>( - [&](OpPointer<LoadOp> loadOp) { forwardStoreToLoad(loadOp); }); + f.walk<LoadOp>([&](OpPointer<LoadOp> loadOp) { forwardStoreToLoad(loadOp); }); // Erase all load op's whose results were replaced with store fwd'ed ones. for (auto *loadOp : loadOpsToErase) { |

