[flang-commits] [flang] 242aa8c - [flang][hlfir] get rid of box when translating scalars to extented value (#125059)
via flang-commits
flang-commits at lists.llvm.org
Thu Jan 30 08:03:23 PST 2025
Author: jeanPerier
Date: 2025-01-30T17:03:20+01:00
New Revision: 242aa8c743fe4344844753d8faf59744235319df
URL: https://github.com/llvm/llvm-project/commit/242aa8c743fe4344844753d8faf59744235319df
DIFF: https://github.com/llvm/llvm-project/commit/242aa8c743fe4344844753d8faf59744235319df.diff
LOG: [flang][hlfir] get rid of box when translating scalars to extented value (#125059)
The code in `translateToExtendedValue(hlfir::Entity)` was not getting
rid of the fir.box for scalars because isSimplyContiguous() returned
false for them.
This created issues downstream because utilities using
fir::ExtendedValue were not implemented to work with intrinsic scalars
fir.box.
fir.box of intrinsic scalars are not very commonly used as hlfir::Entity
but they are allowed and should work where accepted.
Added:
Modified:
flang/include/flang/Optimizer/Builder/HLFIRTools.h
flang/test/HLFIR/assign-codegen.fir
Removed:
################################################################################
diff --git a/flang/include/flang/Optimizer/Builder/HLFIRTools.h b/flang/include/flang/Optimizer/Builder/HLFIRTools.h
index 0684ad0f926ec93..d8785969bb72471 100644
--- a/flang/include/flang/Optimizer/Builder/HLFIRTools.h
+++ b/flang/include/flang/Optimizer/Builder/HLFIRTools.h
@@ -125,7 +125,7 @@ class Entity : public mlir::Value {
bool isSimplyContiguous() const {
// If this can be described without a fir.box in FIR, this must
// be contiguous.
- if (!hlfir::isBoxAddressOrValueType(getFirBase().getType()))
+ if (!hlfir::isBoxAddressOrValueType(getFirBase().getType()) || isScalar())
return true;
// Otherwise, if this entity has a visible declaration in FIR,
// or is the dereference of an allocatable or contiguous pointer
diff --git a/flang/test/HLFIR/assign-codegen.fir b/flang/test/HLFIR/assign-codegen.fir
index 581d1ab0e7739c4..5e48784284a8b4b 100644
--- a/flang/test/HLFIR/assign-codegen.fir
+++ b/flang/test/HLFIR/assign-codegen.fir
@@ -427,3 +427,13 @@ func.func @test_upoly_expr_assignment(%arg0: !fir.class<!fir.array<?xnone>> {fir
// CHECK: }
// CHECK: return
// CHECK: }
+
+func.func @test_scalar_box(%arg0: f32, %arg1: !fir.box<!fir.ptr<f32>>) {
+ hlfir.assign %arg0 to %arg1 : f32, !fir.box<!fir.ptr<f32>>
+ return
+}
+// CHECK-LABEL: func.func @test_scalar_box(
+// CHECK-SAME: %[[VAL_0:.*]]: f32,
+// CHECK-SAME: %[[VAL_1:.*]]: !fir.box<!fir.ptr<f32>>) {
+// CHECK: %[[VAL_2:.*]] = fir.box_addr %[[VAL_1]] : (!fir.box<!fir.ptr<f32>>) -> !fir.ptr<f32>
+// CHECK: fir.store %[[VAL_0]] to %[[VAL_2]] : !fir.ptr<f32>
More information about the flang-commits
mailing list