Add AutomaticAllocationScope to memref.alloca_scope
authorDenys Shabalin <shabalin@google.com>
Mon, 14 Jun 2021 14:07:40 +0000 (16:07 +0200)
committerAlex Zinenko <zinenko@google.com>
Mon, 14 Jun 2021 14:09:06 +0000 (16:09 +0200)
This change adds `AutomaticAllocationScope` to the
memref.alloca_scope op. Additionally, it also clarifies
that alloca_scope is is conceptually a passthrough operation.

Reviewed By: ftynse, bondhugula

Differential Revision: https://reviews.llvm.org/D104227

mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td

index 16d7ec0..7bcc53d 100644 (file)
@@ -204,7 +204,8 @@ def MemRef_AllocaOp : AllocLikeOp<"alloca", AutomaticAllocationScopeResource> {
 //===----------------------------------------------------------------------===//
 
 def MemRef_AllocaScopeOp : MemRef_Op<"alloca_scope", 
-      [DeclareOpInterfaceMethods<RegionBranchOpInterface>,
+      [AutomaticAllocationScope,
+       DeclareOpInterfaceMethods<RegionBranchOpInterface>,
        SingleBlockImplicitTerminator<"AllocaScopeReturnOp">,
        RecursiveSideEffects,
        NoRegionArguments]> {
@@ -223,7 +224,9 @@ def MemRef_AllocaScopeOp : MemRef_Op<"alloca_scope",
     ```
 
     Here, `%myalloca` memref is valid within the explicitly delimited scope
-    and is automatically deallocated at the end of the given region.
+    and is automatically deallocated at the end of the given region. Conceptually,
+    `memref.alloca_scope` is a passthrough operation with 
+    `AutomaticAllocationScope` that spans the body of the region within the operation. 
 
     `memref.alloca_scope` may also return results that are defined in the nested
     region. To return a value, one should use `memref.alloca_scope.return`