@@ -15,15 +15,13 @@ func.func @dealloc_deallocated_in_retained(%arg0: memref<2xi32>, %arg1: i1, %arg
1515// CHECK-LABEL: func @dealloc_deallocated_in_retained
1616// CHECK-SAME: ([[ARG0:%.+]]: memref<2xi32>, [[ARG1:%.+]]: i1, [[ARG2:%.+]]: memref<2xi32>, [[ARG3:%.+]]: i1)
1717// CHECK-NEXT: arith.constant false
18- // CHECK-NEXT: bufferization.dealloc
1918// CHECK-NEXT: [[V1:%.+]] = bufferization.dealloc ([[ARG2]] : memref<2xi32>) if ([[ARG1]]) retain ([[ARG0]] : memref<2xi32>)
2019// CHECK-NEXT: [[O1:%.+]] = arith.ori [[V1]], [[ARG1]]
2120// CHECK-NEXT: [[V2:%.+]]:2 = bufferization.dealloc ([[ARG0]] : memref<2xi32>) if ([[ARG1]]) retain ([[ARG0]], [[ARG2]] : memref<2xi32>, memref<2xi32>)
2221// COM: the RemoveRetainedMemrefsGuaranteedToNotAlias pattern removes all the
2322// COM: retained memrefs since the list of memrefs to be deallocated becomes empty
2423// COM: due to the pattern under test (and thus there is no memref the retain values
2524// COM: could alias to)
26- // CHECK-NEXT: bufferization.dealloc
2725// CHECK-NOT: if
2826// CHECK-NEXT: [[V3:%.+]] = arith.ori [[ARG3]], [[ARG1]]
2927// CHECK-NEXT: [[V4:%.+]] = arith.ori [[ARG3]], [[ARG1]]
@@ -50,27 +48,25 @@ func.func @dealloc_deallocated_in_retained_extract_base_memref(%arg0: memref<2xi
5048// CHECK-NEXT: arith.constant false
5149// CHECK-NEXT: [[BASE0:%[a-zA-Z0-9_]+]]{{.*}} = memref.extract_strided_metadata [[ARG0]] :
5250// CHECK-NEXT: [[BASE1:%[a-zA-Z0-9_]+]]{{.*}} = memref.extract_strided_metadata [[ARG2]] :
53- // CHECK-NEXT: bufferization.dealloc
5451// CHECK-NEXT: [[V1:%.+]] = bufferization.dealloc ([[BASE1]] : memref<i32>) if ([[ARG1]]) retain ([[ARG0]] : memref<2xi32>)
5552// CHECK-NEXT: [[O1:%.+]] = arith.ori [[V1]], [[ARG1]]
5653// CHECK-NEXT: [[V2:%.+]]:2 = bufferization.dealloc ([[BASE0]] : memref<i32>) if ([[ARG1]]) retain ([[ARG0]], [[ARG2]] : memref<2xi32>, memref<2xi32>)
5754// COM: the RemoveRetainedMemrefsGuaranteedToNotAlias pattern removes all the
5855// COM: retained memrefs since the list of memrefs to be deallocated becomes empty
5956// COM: due to the pattern under test (and thus there is no memref the retain values
6057// COM: could alias to)
61- // CHECK-NEXT: bufferization.dealloc
6258// CHECK-NOT: if
6359// CHECK-NEXT: [[V3:%.+]] = arith.ori [[ARG3]], [[ARG1]]
6460// CHECK-NEXT: [[V4:%.+]] = arith.ori [[ARG3]], [[ARG1]]
6561// CHECK-NEXT: return [[ARG1]], [[O1]], [[V2]]#0, [[V2]]#1, [[V3]], %false{{[0-9_]*}}, [[V4]] :
6662
6763// -----
6864
69- func.func @remove_retained_memrefs_guarateed_to_not_alias (%arg0: i1 , %arg1: memref <2 xi32 >) -> (i1 , i1 ) {
65+ func.func @remove_retained_memrefs_guarateed_to_not_alias (%arg0: i1 , %arg1: memref <2 xi32 >) -> (i1 , i1 , memref < 2 x i32 > ) {
7066 %alloc = memref.alloc () : memref <2 xi32 >
7167 %alloc0 = memref.alloc () : memref <2 xi32 >
7268 %0:2 = bufferization.dealloc (%alloc : memref <2 xi32 >) if (%arg0 ) retain (%alloc0 , %arg1 : memref <2 xi32 >, memref <2 xi32 >)
73- return %0#0 , %0#1 : i1 , i1
69+ return %0#0 , %0#1 , %alloc : i1 , i1 , memref < 2 x i32 >
7470}
7571
7672// CHECK-LABEL: func @remove_retained_memrefs_guarateed_to_not_alias
@@ -79,7 +75,7 @@ func.func @remove_retained_memrefs_guarateed_to_not_alias(%arg0: i1, %arg1: memr
7975// CHECK-NEXT: [[ALLOC:%.+]] = memref.alloc(
8076// CHECK-NEXT: bufferization.dealloc ([[ALLOC]] : memref<2xi32>) if ([[ARG0]])
8177// CHECK-NOT: retain
82- // CHECK-NEXT: return [[FALSE]], [[FALSE]] :
78+ // CHECK-NEXT: return [[FALSE]], [[FALSE]], [[ALLOC]] :
8379
8480// -----
8581
@@ -104,7 +100,6 @@ func.func @dealloc_split_when_no_other_aliasing(%arg0: i1, %arg1: memref<2xi32>,
104100// CHECK-NEXT: [[V1:%.+]] = bufferization.dealloc ([[ALLOC0]] : memref<2xi32>) if ([[ARG0]]) retain ([[V0]] : memref<2xi32>)
105101// CHECK-NEXT: [[V2:%.+]]:2 = bufferization.dealloc ([[ARG2]] : memref<2xi32>) if ([[ARG3]]) retain ([[ARG1]], [[V0]] : memref<2xi32>, memref<2xi32>)
106102// CHECK-NEXT: [[V3:%.+]] = arith.ori [[V1]], [[V2]]#1
107- // CHECK-NEXT: bufferization.dealloc
108103// CHECK-NEXT: return [[V2]]#0, [[V3]] :
109104
110105// -----
0 commit comments