enhance(compiler): Enable deallocation pass to free temporary buffers

This commit is contained in:
Quentin Bourgerie
2022-03-25 16:05:58 +01:00
parent fc51b1d2ab
commit 254b4dc530
3 changed files with 12 additions and 1 deletions

View File

@@ -12,7 +12,9 @@ include "concretelang/Dialect/RT/IR/RTTypes.td"
class RT_Op<string mnemonic, list<OpTrait> traits = []> :
Op<RT_Dialect, mnemonic, traits>;
def DataflowTaskOp : RT_Op<"dataflow_task", [SingleBlockImplicitTerminator<"DataflowYieldOp">]> {
def DataflowTaskOp : RT_Op<"dataflow_task", [
DeclareOpInterfaceMethods<RegionBranchOpInterface>,
SingleBlockImplicitTerminator<"DataflowYieldOp">]> {
let arguments = (ins Variadic<AnyType>: $inputs);
let results = (outs Variadic<AnyType>:$outputs);

View File

@@ -29,3 +29,9 @@ void DataflowTaskOp::build(
reg->push_back(body);
result.addTypes(resultTypes);
}
void DataflowTaskOp::getSuccessorRegions(
Optional<unsigned> index, ArrayRef<Attribute> operands,
SmallVectorImpl<RegionSuccessor> &regions) {
regions.push_back(RegionSuccessor(&body()));
}

View File

@@ -237,6 +237,9 @@ lowerStdToLLVMDialect(mlir::MLIRContext &context, mlir::ModuleOp &module,
addPotentiallyNestedPass(
pm, mlir::concretelang::createFinalizingBufferizePass(), enablePass);
addPotentiallyNestedPass(pm, mlir::createBufferDeallocationPass(),
enablePass);
if (parallelizeLoops)
addPotentiallyNestedPass(pm, mlir::createConvertSCFToOpenMPPass(),
enablePass);