[flang-commits] [flang] 92d2056 - [fir] Remove `fir.unbox` operation
Valentin Clement via flang-commits
flang-commits at lists.llvm.org
Wed Nov 10 11:30:15 PST 2021
Author: Valentin Clement
Date: 2021-11-10T20:30:10+01:00
New Revision: 92d205672a91ee2c56b586412fd3a18bef888a87
URL: https://github.com/llvm/llvm-project/commit/92d205672a91ee2c56b586412fd3a18bef888a87
DIFF: https://github.com/llvm/llvm-project/commit/92d205672a91ee2c56b586412fd3a18bef888a87.diff
LOG: [fir] Remove `fir.unbox` operation
`fir.unbox` operation is an old operation that is no longer required.
There are couple of other operations that can be used to extract
information from a `fir.box` such as `fir.box_rank`, `fir.box_addr`,
`fir.box_dims`.
This was found during the upstreaming process.
Reviewed By: awarzynski
Differential Revision: https://reviews.llvm.org/D113581
Added:
Modified:
flang/include/flang/Optimizer/Dialect/FIROps.td
flang/test/Fir/fir-ops.fir
Removed:
################################################################################
diff --git a/flang/include/flang/Optimizer/Dialect/FIROps.td b/flang/include/flang/Optimizer/Dialect/FIROps.td
index 6d6f79c2d7adf..0be585fc9d389 100644
--- a/flang/include/flang/Optimizer/Dialect/FIROps.td
+++ b/flang/include/flang/Optimizer/Dialect/FIROps.td
@@ -1019,34 +1019,6 @@ def fir_EmboxProcOp : fir_Op<"emboxproc", [NoSideEffect]> {
let verifier = "return ::verify(*this);";
}
-def fir_UnboxOp : fir_SimpleOp<"unbox", [NoSideEffect]> {
- let summary = "unbox the boxed value into a tuple value";
-
- let description = [{
- Unbox a boxed value into a result of multiple values from the box's
- component data. The values are, minimally, a reference to the data of the
- entity, the byte-size of one element, the rank, the type descriptor, a set
- of flags (packed in an integer, and an array of dimension information (of
- size rank).
-
- ```mlir
- %40 = ... : !fir.box<!fir.type<T>>
- %41:6 = fir.unbox %40 : (!fir.box<!fir.type<T>>) -> (!fir.ref<!fir.type<T>>, i32, i32, !fir.tdesc<!fir.type<T>>, i32, !fir.array<? x index>)
- ```
- }];
-
- let arguments = (ins fir_BoxType:$box);
-
- let results = (outs
- fir_ReferenceType, // pointer to data
- AnyIntegerLike, // size of a data element
- AnyIntegerLike, // rank of data
- fir_TypeDescType, // abstract type descriptor
- AnyIntegerLike, // attribute flags (bitfields)
- fir_SequenceType // dimension information (if any)
- );
-}
-
def fir_UnboxCharOp : fir_SimpleOp<"unboxchar", [NoSideEffect]> {
let summary = "unbox a boxchar value into a pair value";
diff --git a/flang/test/Fir/fir-ops.fir b/flang/test/Fir/fir-ops.fir
index 47805bf83b0a7..e15682fb8a803 100644
--- a/flang/test/Fir/fir-ops.fir
+++ b/flang/test/Fir/fir-ops.fir
@@ -142,7 +142,6 @@ func @boxing_match() {
// CHECK: [[VAL_40:%.*]] = fir.alloca !fir.char<1>
// CHECK: [[VAL_41:%.*]] = fir.alloca tuple<i32, f64>
// CHECK: [[VAL_42:%.*]] = fir.embox [[VAL_38]] : (!fir.ref<i32>) -> !fir.box<i32>
-// CHECK: [[VAL_43:%.*]]:6 = fir.unbox [[VAL_42]] : (!fir.box<i32>) -> (!fir.ref<i32>, i32, i32, !fir.tdesc<i32>, i32, !fir.array<3x?xindex>)
// CHECK: [[VAL_44:%.*]] = arith.constant 8 : i32
// CHECK: [[VAL_45:%.*]] = fir.undefined !fir.char<1>
// CHECK: [[VAL_46:%.*]] = fir.emboxchar [[VAL_40]], [[VAL_44]] : (!fir.ref<!fir.char<1>>, i32) -> !fir.boxchar<1>
@@ -168,7 +167,6 @@ func @boxing_match() {
%d3 = fir.alloca !fir.char<1>
%e6 = fir.alloca tuple<i32,f64>
%1 = fir.embox %0 : (!fir.ref<i32>) -> !fir.box<i32>
- %2:6 = fir.unbox %1 : (!fir.box<i32>) -> (!fir.ref<i32>,i32,i32,!fir.tdesc<i32>,i32,!fir.array<3x?xindex>)
%c8 = arith.constant 8 : i32
%3 = fir.undefined !fir.char<1>
%4 = fir.emboxchar %d3, %c8 : (!fir.ref<!fir.char<1>>, i32) -> !fir.boxchar<1>
More information about the flang-commits
mailing list