Skip to content

Commit b69c87a

Browse files
authored
Align the bufferization pipeline according to the upstream doc (#295)
1 parent 43177a3 commit b69c87a

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

lib/gc/Transforms/Pipeline.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,21 +92,28 @@ void populateVectorPasses(mlir::OpPassManager &pm) {
9292

9393
// scf + arith + math + vector + memref + linalg.brgemm
9494
void populateBufferizationPasses(mlir::OpPassManager &pm) {
95+
// The flow follows https://mlir.llvm.org/docs/Bufferization/#overview
96+
pm.addPass(bufferization::createEmptyTensorEliminationPass());
9597
bufferization::OneShotBufferizationOptions options;
9698
options.bufferizeFunctionBoundaries = true;
9799
options.setFunctionBoundaryTypeConversion(
98100
bufferization::LayoutMapOption::IdentityLayoutMap);
99101
pm.addPass(bufferization::createOneShotBufferizePass(options));
100102
pm.addPass(createCanonicalizerPass());
101103
pm.addPass(createCSEPass());
104+
pm.addPass(createCanonicalizerPass());
105+
pm.addNestedPass<func::FuncOp>(bufferization::createBufferHoistingPass());
106+
pm.addNestedPass<func::FuncOp>(bufferization::createBufferLoopHoistingPass());
107+
// todo: buffer schedule pass
108+
// todo: Need to improve this pass to support nested parallel.
102109
bufferization::BufferResultsToOutParamsOpts opt{};
103110
opt.hoistStaticAllocs = true;
104111
pm.addPass(bufferization::createBufferResultsToOutParamsPass(opt));
105-
// todo: buffer schedule pass
106-
// todo: Need to improve this pass to support nested parallel.
107-
pm.addNestedPass<func::FuncOp>(bufferization::createBufferHoistingPass());
108-
pm.addNestedPass<func::FuncOp>(bufferization::createBufferLoopHoistingPass());
109-
pm.addNestedPass<func::FuncOp>(bufferization::createBufferDeallocationPass());
112+
pm.addPass(bufferization::createDropEquivalentBufferResultsPass());
113+
pm.addNestedPass<func::FuncOp>(
114+
bufferization::createPromoteBuffersToStackPass());
115+
bufferization::BufferDeallocationPipelineOptions deallocOption;
116+
bufferization::buildBufferDeallocationPipeline(pm, deallocOption);
110117
pm.addPass(createBufferizationToMemRefPass());
111118
populateCleanUpPasses(pm);
112119
}

0 commit comments

Comments
 (0)