diff options
author | Valentin Clement <clementval@gmail.com> | 2022-03-31 21:34:55 +0200 |
---|---|---|
committer | Valentin Clement <clementval@gmail.com> | 2022-03-31 21:37:21 +0200 |
commit | 868c212f42f80582fc6fb4adbd088e55b2d64111 (patch) | |
tree | be84a1c319663c15117384dc6901817b8a47488c | |
parent | 4c14519ecbba54870553611ed34dbec596e1f7e7 (diff) | |
download | llvm-868c212f42f80582fc6fb4adbd088e55b2d64111.zip llvm-868c212f42f80582fc6fb4adbd088e55b2d64111.tar.gz llvm-868c212f42f80582fc6fb4adbd088e55b2d64111.tar.bz2 |
[flang] Keep fully qualified !fir.heap type for fir.freemem op
Re-introduce a fully qualified type on teh fir.freemem operation.
Since this is the only operation where the prefix gets elided in fir, this
patch make it fully qualified so the dialect syntax feels more consistent.
Reviewed By: vdonaldson
Differential Revision: https://reviews.llvm.org/D122839
-rw-r--r-- | flang/include/flang/Optimizer/Dialect/FIROps.td | 2 | ||||
-rw-r--r-- | flang/test/Fir/array-value-copy.fir | 8 | ||||
-rw-r--r-- | flang/test/Fir/fir-ops.fir | 2 | ||||
-rw-r--r-- | flang/test/Lower/Intrinsics/matmul.f90 | 4 | ||||
-rw-r--r-- | flang/test/Lower/Intrinsics/repeat.f90 | 2 | ||||
-rw-r--r-- | flang/test/Lower/Intrinsics/transpose.f90 | 2 | ||||
-rw-r--r-- | flang/test/Lower/Intrinsics/trim.f90 | 2 |
7 files changed, 11 insertions, 11 deletions
diff --git a/flang/include/flang/Optimizer/Dialect/FIROps.td b/flang/include/flang/Optimizer/Dialect/FIROps.td index f667709..262d953 100644 --- a/flang/include/flang/Optimizer/Dialect/FIROps.td +++ b/flang/include/flang/Optimizer/Dialect/FIROps.td @@ -250,7 +250,7 @@ def fir_FreeMemOp : fir_Op<"freemem", [MemoryEffects<[MemFree]>]> { let arguments = (ins Arg<fir_HeapType, "", [MemFree]>:$heapref); - let assemblyFormat = "$heapref attr-dict `:` type($heapref)"; + let assemblyFormat = "$heapref attr-dict `:` qualified(type($heapref))"; } def fir_LoadOp : fir_OneResultOp<"load"> { diff --git a/flang/test/Fir/array-value-copy.fir b/flang/test/Fir/array-value-copy.fir index 59c2a2b..f6cbe556 100644 --- a/flang/test/Fir/array-value-copy.fir +++ b/flang/test/Fir/array-value-copy.fir @@ -130,7 +130,7 @@ func @conversion_with_temporary(%arr0 : !fir.ref<!fir.array<10xi32>>) { // CHECK: fir.store %[[LOAD0]] to %[[COOR1]] : !fir.ref<i32> // CHECK: } // Free temporary array. -// CHECK: fir.freemem %[[TEMP]] : <!fir.array<10xi32>> +// CHECK: fir.freemem %[[TEMP]] : !fir.heap<!fir.array<10xi32>> // ----- @@ -211,7 +211,7 @@ func @conversion_with_temporary_multidim(%0: !fir.ref<!fir.array<10x5xi32>>) { // CHECK: %[[COOR1:.*]] = fir.array_coor %[[ARR0]](%{{.*}}) %{{.*}}, %{{.*}} : (!fir.ref<!fir.array<10x5xi32>>, !fir.shape<2>, index, index) -> !fir.ref<i32> // CHECK: %[[LOAD0:.*]] = fir.load %[[COOR0]] : !fir.ref<i32> // CHECK: fir.store %[[LOAD0]] to %[[COOR1]] : !fir.ref<i32> -// CHECK: fir.freemem %[[TEMP]] : <!fir.array<10x5xi32>> +// CHECK: fir.freemem %[[TEMP]] : !fir.heap<!fir.array<10x5xi32>> // ----- @@ -309,7 +309,7 @@ func private @user_defined_assignment(!fir.ref<f32>, !fir.ref<f32>) // CHECK: fir.store %[[LOAD0]] to %[[COOR1]] : !fir.ref<f32> // CHECK: } // Free the temporary array. -// CHECK: fir.freemem %[[TEMP]] : <!fir.array<100xf32>> +// CHECK: fir.freemem %[[TEMP]] : !fir.heap<!fir.array<100xf32>> // CHECK: return // CHECK: } @@ -425,7 +425,7 @@ func @conversion_with_temporary_boxed_array(%arr0 : !fir.box<!fir.array<10xi32>> // CHECK: fir.store %[[LOAD0]] to %[[COOR1]] : !fir.ref<i32> // CHECK: } // Free temporary array. -// CHECK: fir.freemem %[[TEMP]] : <!fir.array<10xi32>> +// CHECK: fir.freemem %[[TEMP]] : !fir.heap<!fir.array<10xi32>> // ----- diff --git a/flang/test/Fir/fir-ops.fir b/flang/test/Fir/fir-ops.fir index f7643bd..f23b037 100644 --- a/flang/test/Fir/fir-ops.fir +++ b/flang/test/Fir/fir-ops.fir @@ -128,7 +128,7 @@ func @instructions() { %31 = fir.no_reassoc %29 : i64 // CHECK: fir.call @user_i64([[VAL_35]]) : (i64) -> () -// CHECK: fir.freemem [[VAL_5]] : <!fir.array<100xf32>> +// CHECK: fir.freemem [[VAL_5]] : !fir.heap<!fir.array<100xf32>> // CHECK: [[VAL_36:%.*]] = fir.call @get_func() : () -> (() -> ()) // CHECK: fir.call [[VAL_36]]() : () -> () // CHECK: [[VAL_37:%.*]] = fir.address_of(@it1) : !fir.ref<() -> !fir.int<4>> diff --git a/flang/test/Lower/Intrinsics/matmul.f90 b/flang/test/Lower/Intrinsics/matmul.f90 index 6c3c721..dedd09c 100644 --- a/flang/test/Lower/Intrinsics/matmul.f90 +++ b/flang/test/Lower/Intrinsics/matmul.f90 @@ -32,7 +32,7 @@ ! CHECK: fir.result ! CHECK: } ! CHECK: fir.array_merge_store %[[Z_BOX]], %[[Z_COPY_FROM_RESULT]] to %[[Z]] : !fir.array<2x2xf32>, !fir.array<2x2xf32>, !fir.ref<!fir.array<2x2xf32>> -! CHECK: fir.freemem %[[RESULT_TMP]] : <!fir.array<?x?xf32>> +! CHECK: fir.freemem %[[RESULT_TMP]] : !fir.heap<!fir.array<?x?xf32>> subroutine matmul_test(x,y,z) real :: x(3,1), y(1,3), z(2,2) z = matmul(x,y) @@ -59,7 +59,7 @@ end subroutine !CHECK: fir.result !CHECK: } !CHECK: fir.array_merge_store %[[Z]], %[[Z_COPY_FROM_RESULT]] to %[[Z_BOX]] : !fir.array<?x!fir.logical<4>>, !fir.array<?x!fir.logical<4>>, !fir.box<!fir.array<?x!fir.logical<4>>> -!CHECK: fir.freemem %[[RESULT_TMP]] : <!fir.array<?x!fir.logical<4>>> +!CHECK: fir.freemem %[[RESULT_TMP]] : !fir.heap<!fir.array<?x!fir.logical<4>>> subroutine matmul_test2(X, Y, Z) logical :: X(:,:) logical :: Y(:) diff --git a/flang/test/Lower/Intrinsics/repeat.f90 b/flang/test/Lower/Intrinsics/repeat.f90 index f6e8452..9b068e1 100644 --- a/flang/test/Lower/Intrinsics/repeat.f90 +++ b/flang/test/Lower/Intrinsics/repeat.f90 @@ -18,7 +18,7 @@ subroutine repeat_test(c, n) ! CHECK-DAG: fir.box_elesize ! CHECK: fir.call @{{.*}}bar_repeat_test call bar_repeat_test(repeat(c,n)) - ! CHECK: fir.freemem %[[tmpAddr]] : <!fir.char<1,?>> + ! CHECK: fir.freemem %[[tmpAddr]] : !fir.heap<!fir.char<1,?>> return end subroutine diff --git a/flang/test/Lower/Intrinsics/transpose.f90 b/flang/test/Lower/Intrinsics/transpose.f90 index 62bea39..fefadd5 100644 --- a/flang/test/Lower/Intrinsics/transpose.f90 +++ b/flang/test/Lower/Intrinsics/transpose.f90 @@ -19,6 +19,6 @@ subroutine transpose_test(mat) ! CHECK: %[[tmp2:.*]] = fir.box_addr %[[tmp1]] : (!fir.box<!fir.heap<!fir.array<?x?xf32>>>) -> !fir.heap<!fir.array<?x?xf32>> ! CHECK: %[[tmp3:.*]] = fir.convert %[[tmp2]] : (!fir.heap<!fir.array<?x?xf32>>) -> !fir.ref<!fir.array<3x2xf32>> ! CHECK: fir.call @_QPbar_transpose_test(%[[tmp3]]) : (!fir.ref<!fir.array<3x2xf32>>) -> () -! CHECK: fir.freemem %[[tmp2]] : <!fir.array<?x?xf32> +! CHECK: fir.freemem %[[tmp2]] : !fir.heap<!fir.array<?x?xf32> end subroutine diff --git a/flang/test/Lower/Intrinsics/trim.f90 b/flang/test/Lower/Intrinsics/trim.f90 index 35ea606c..3609211 100644 --- a/flang/test/Lower/Intrinsics/trim.f90 +++ b/flang/test/Lower/Intrinsics/trim.f90 @@ -15,7 +15,7 @@ subroutine trim_test(c) ! CHECK-DAG: fir.box_elesize ! CHECK: fir.call @{{.*}}bar_trim_test call bar_trim_test(trim(c)) - ! CHECK: fir.freemem %[[tmpAddr]] : <!fir.char<1,?>> + ! CHECK: fir.freemem %[[tmpAddr]] : !fir.heap<!fir.char<1,?>> return end subroutine |