summaryrefslogtreecommitdiffstats
path: root/mlir/lib/Transforms/MemRefDataFlowOpt.cpp
diff options
context:
space:
mode:
authorRiver Riddle <riverriddle@google.com>2019-02-27 10:59:29 -0800
committerjpienaar <jpienaar@google.com>2019-03-29 16:47:14 -0700
commitc6c534493d625c10ce0046baa9dc6293f8dba405 (patch)
tree87246fb531049bf478bb4b061217d11b8d7fe254 /mlir/lib/Transforms/MemRefDataFlowOpt.cpp
parent6067cdebaa391cb2ab9bda9cd91b26f9ddd95a11 (diff)
downloadbcm5719-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.cpp22
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) {
OpenPOWER on IntegriCloud