[flang-commits] [flang] 0be62be - [flang][NFC] Converted five tests from old lowering to new lowering (part 27) (#185340)
via flang-commits
flang-commits at lists.llvm.org
Mon Mar 9 03:27:56 PDT 2026
Author: Eugene Epshteyn
Date: 2026-03-09T06:27:52-04:00
New Revision: 0be62be1d4c3b63e006678cda007d5edf78ae012
URL: https://github.com/llvm/llvm-project/commit/0be62be1d4c3b63e006678cda007d5edf78ae012
DIFF: https://github.com/llvm/llvm-project/commit/0be62be1d4c3b63e006678cda007d5edf78ae012.diff
LOG: [flang][NFC] Converted five tests from old lowering to new lowering (part 27) (#185340)
Tests converted from test/Lower/Intrinsics: date_and_time.f90,
dconjg.f90, dim.f90, dimag.f90, dprod.f90
Added:
Modified:
flang/test/Lower/Intrinsics/date_and_time.f90
flang/test/Lower/Intrinsics/dconjg.f90
flang/test/Lower/Intrinsics/dim.f90
flang/test/Lower/Intrinsics/dimag.f90
flang/test/Lower/Intrinsics/dprod.f90
Removed:
################################################################################
diff --git a/flang/test/Lower/Intrinsics/date_and_time.f90 b/flang/test/Lower/Intrinsics/date_and_time.f90
index d9ca46ea83dc6..0e3266228f806 100644
--- a/flang/test/Lower/Intrinsics/date_and_time.f90
+++ b/flang/test/Lower/Intrinsics/date_and_time.f90
@@ -1,20 +1,25 @@
-! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
! CHECK-LABEL: func @_QPdate_and_time_test(
! CHECK-SAME: %[[date:[^:]+]]: !fir.boxchar<1>{{.*}}, %[[time:[^:]+]]: !fir.boxchar<1>{{.*}}, %[[zone:.*]]: !fir.boxchar<1>{{.*}}, %[[values:.*]]: !fir.box<!fir.array<?xi64>>{{.*}}) {
subroutine date_and_time_test(date, time, zone, values)
character(*) :: date, time, zone
integer(8) :: values(:)
+ ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
! CHECK: %[[dateUnbox:.*]]:2 = fir.unboxchar %[[date]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
+ ! CHECK: %[[dateDecl:.*]]:2 = hlfir.declare %[[dateUnbox]]#0 typeparams %[[dateUnbox]]#1 dummy_scope %[[DS]] {{.*}}
! CHECK: %[[timeUnbox:.*]]:2 = fir.unboxchar %[[time]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
+ ! CHECK: %[[timeDecl:.*]]:2 = hlfir.declare %[[timeUnbox]]#0 typeparams %[[timeUnbox]]#1 dummy_scope %[[DS]] {{.*}}
+ ! CHECK: %[[valuesDecl:.*]]:2 = hlfir.declare %[[values]] dummy_scope %[[DS]] {{.*}}
! CHECK: %[[zoneUnbox:.*]]:2 = fir.unboxchar %[[zone]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
- ! CHECK: %[[dateBuffer:.*]] = fir.convert %[[dateUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
+ ! CHECK: %[[zoneDecl:.*]]:2 = hlfir.declare %[[zoneUnbox]]#0 typeparams %[[zoneUnbox]]#1 dummy_scope %[[DS]] {{.*}}
+ ! CHECK: %[[dateBuffer:.*]] = fir.convert %[[dateDecl]]#1 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
! CHECK: %[[dateLen:.*]] = fir.convert %[[dateUnbox]]#1 : (index) -> i64
- ! CHECK: %[[timeBuffer:.*]] = fir.convert %[[timeUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
+ ! CHECK: %[[timeBuffer:.*]] = fir.convert %[[timeDecl]]#1 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
! CHECK: %[[timeLen:.*]] = fir.convert %[[timeUnbox]]#1 : (index) -> i64
- ! CHECK: %[[zoneBuffer:.*]] = fir.convert %[[zoneUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
+ ! CHECK: %[[zoneBuffer:.*]] = fir.convert %[[zoneDecl]]#1 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
! CHECK: %[[zoneLen:.*]] = fir.convert %[[zoneUnbox]]#1 : (index) -> i64
- ! CHECK: %[[valuesCast:.*]] = fir.convert %[[values]] : (!fir.box<!fir.array<?xi64>>) -> !fir.box<none>
+ ! CHECK: %[[valuesCast:.*]] = fir.convert %[[valuesDecl]]#1 : (!fir.box<!fir.array<?xi64>>) -> !fir.box<none>
! CHECK: fir.call @_FortranADateAndTime(%[[dateBuffer]], %[[dateLen]], %[[timeBuffer]], %[[timeLen]], %[[zoneBuffer]], %[[zoneLen]], %{{.*}}, %{{.*}}, %[[valuesCast]]) {{.*}}: (!fir.ref<i8>, i64, !fir.ref<i8>, i64, !fir.ref<i8>, i64, !fir.ref<i8>, i32, !fir.box<none>) -> ()
call date_and_time(date, time, zone, values)
end subroutine
@@ -23,9 +28,11 @@ subroutine date_and_time_test(date, time, zone, values)
! CHECK-SAME: %[[date:.*]]: !fir.boxchar<1>{{.*}})
subroutine date_and_time_test2(date)
character(*) :: date
+ ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
! CHECK: %[[dateUnbox:.*]]:2 = fir.unboxchar %[[date]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
+ ! CHECK: %[[dateDecl:.*]]:2 = hlfir.declare %[[dateUnbox]]#0 typeparams %[[dateUnbox]]#1 dummy_scope %[[DS]] {{.*}}
! CHECK: %[[values:.*]] = fir.absent !fir.box<none>
- ! CHECK: %[[dateBuffer:.*]] = fir.convert %[[dateUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
+ ! CHECK: %[[dateBuffer:.*]] = fir.convert %[[dateDecl]]#1 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
! CHECK: %[[dateLen:.*]] = fir.convert %[[dateUnbox]]#1 : (index) -> i64
! CHECK: %[[timeBuffer:.*]] = fir.convert %c0{{.*}} : (index) -> !fir.ref<i8>
! CHECK: %[[timeLen:.*]] = fir.convert %c0{{.*}} : (index) -> i64
@@ -48,26 +55,31 @@ subroutine date_and_time_dynamic_optional(date, time, zone, values)
character(:), pointer :: time
character(*), optional :: zone
integer, pointer :: values(:)
+ ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+ ! CHECK: %[[VAL_4:.*]]:2 = fir.unboxchar %[[VAL_0]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
+ ! CHECK: %[[VAL_date:.*]]:2 = hlfir.declare %[[VAL_4]]#0 typeparams %[[VAL_4]]#1 dummy_scope %[[DS]] {{.*}}
+ ! CHECK: %[[VAL_time:.*]]:2 = hlfir.declare %[[VAL_1]] dummy_scope %[[DS]] {{.*}}
+ ! CHECK: %[[VAL_values:.*]]:2 = hlfir.declare %[[VAL_3]] dummy_scope %[[DS]] {{.*}}
+ ! CHECK: %[[VAL_6:.*]]:2 = fir.unboxchar %[[VAL_2]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
+ ! CHECK: %[[VAL_zone:.*]]:2 = hlfir.declare %[[VAL_6]]#0 typeparams %[[VAL_6]]#1 dummy_scope %[[DS]] {{.*}}
+ ! CHECK: %[[VAL_7:.*]] = fir.load %[[VAL_values]]#0 : !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>>>
+ ! CHECK: %[[VAL_8:.*]] = fir.box_addr %[[VAL_7]] : (!fir.box<!fir.ptr<!fir.array<?xi32>>>) -> !fir.ptr<!fir.array<?xi32>>
+ ! CHECK: %[[VAL_9:.*]] = fir.convert %[[VAL_8]] : (!fir.ptr<!fir.array<?xi32>>) -> i64
+ ! CHECK: %[[VAL_10:.*]] = arith.constant 0 : i64
+ ! CHECK: %[[VAL_11:.*]] = arith.cmpi ne, %[[VAL_9]], %[[VAL_10]] : i64
+ ! CHECK: %[[VAL_12:.*]] = fir.load %[[VAL_time]]#0 : !fir.ref<!fir.box<!fir.ptr<!fir.char<1,?>>>>
+ ! CHECK: %[[VAL_13:.*]] = fir.box_elesize %[[VAL_12]] : (!fir.box<!fir.ptr<!fir.char<1,?>>>) -> index
+ ! CHECK: %[[VAL_14:.*]] = fir.box_addr %[[VAL_12]] : (!fir.box<!fir.ptr<!fir.char<1,?>>>) -> !fir.ptr<!fir.char<1,?>>
+ ! CHECK: %[[VAL_15:.*]] = fir.load %[[VAL_values]]#0 : !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>>>
+ ! CHECK: %[[VAL_16:.*]] = fir.absent !fir.box<!fir.ptr<!fir.array<?xi32>>>
+ ! CHECK: %[[VAL_17:.*]] = arith.select %[[VAL_11]], %[[VAL_15]], %[[VAL_16]] : !fir.box<!fir.ptr<!fir.array<?xi32>>>
+ ! CHECK: %[[VAL_19:.*]] = fir.convert %[[VAL_date]]#1 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
+ ! CHECK: %[[VAL_20:.*]] = fir.convert %[[VAL_4]]#1 : (index) -> i64
+ ! CHECK: %[[VAL_21:.*]] = fir.convert %[[VAL_14]] : (!fir.ptr<!fir.char<1,?>>) -> !fir.ref<i8>
+ ! CHECK: %[[VAL_22:.*]] = fir.convert %[[VAL_13]] : (index) -> i64
+ ! CHECK: %[[VAL_23:.*]] = fir.convert %[[VAL_zone]]#1 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
+ ! CHECK: %[[VAL_24:.*]] = fir.convert %[[VAL_6]]#1 : (index) -> i64
+ ! CHECK: %[[VAL_26:.*]] = fir.convert %[[VAL_17]] : (!fir.box<!fir.ptr<!fir.array<?xi32>>>) -> !fir.box<none>
+ ! CHECK: fir.call @_FortranADateAndTime(%[[VAL_19]], %[[VAL_20]], %[[VAL_21]], %[[VAL_22]], %[[VAL_23]], %[[VAL_24]], %{{.*}}, %{{.*}}, %[[VAL_26]]) {{.*}}: (!fir.ref<i8>, i64, !fir.ref<i8>, i64, !fir.ref<i8>, i64, !fir.ref<i8>, i32, !fir.box<none>) -> ()
call date_and_time(date, time, zone, values)
- ! CHECK: %[[VAL_4:.*]]:2 = fir.unboxchar %[[VAL_0]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
- ! CHECK: %[[VAL_5:.*]]:2 = fir.unboxchar %[[VAL_2]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
- ! CHECK: %[[VAL_6:.*]] = fir.load %[[VAL_1]] : !fir.ref<!fir.box<!fir.ptr<!fir.char<1,?>>>>
- ! CHECK: %[[VAL_7:.*]] = fir.box_elesize %[[VAL_6]] : (!fir.box<!fir.ptr<!fir.char<1,?>>>) -> index
- ! CHECK: %[[VAL_8:.*]] = fir.box_addr %[[VAL_6]] : (!fir.box<!fir.ptr<!fir.char<1,?>>>) -> !fir.ptr<!fir.char<1,?>>
- ! CHECK: %[[VAL_9:.*]] = fir.load %[[VAL_3]] : !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>>>
- ! CHECK: %[[VAL_10:.*]] = fir.box_addr %[[VAL_9]] : (!fir.box<!fir.ptr<!fir.array<?xi32>>>) -> !fir.ptr<!fir.array<?xi32>>
- ! CHECK: %[[VAL_11:.*]] = fir.convert %[[VAL_10]] : (!fir.ptr<!fir.array<?xi32>>) -> i64
- ! CHECK: %[[VAL_12:.*]] = arith.constant 0 : i64
- ! CHECK: %[[VAL_13:.*]] = arith.cmpi ne, %[[VAL_11]], %[[VAL_12]] : i64
- ! CHECK: %[[VAL_14:.*]] = fir.load %[[VAL_3]] : !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>>>
- ! CHECK: %[[VAL_15:.*]] = fir.absent !fir.box<!fir.ptr<!fir.array<?xi32>>>
- ! CHECK: %[[VAL_16:.*]] = arith.select %[[VAL_13]], %[[VAL_14]], %[[VAL_15]] : !fir.box<!fir.ptr<!fir.array<?xi32>>>
- ! CHECK: %[[VAL_19:.*]] = fir.convert %[[VAL_4]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
- ! CHECK: %[[VAL_20:.*]] = fir.convert %[[VAL_4]]#1 : (index) -> i64
- ! CHECK: %[[VAL_21:.*]] = fir.convert %[[VAL_8]] : (!fir.ptr<!fir.char<1,?>>) -> !fir.ref<i8>
- ! CHECK: %[[VAL_22:.*]] = fir.convert %[[VAL_7]] : (index) -> i64
- ! CHECK: %[[VAL_23:.*]] = fir.convert %[[VAL_5]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
- ! CHECK: %[[VAL_24:.*]] = fir.convert %[[VAL_5]]#1 : (index) -> i64
- ! CHECK: %[[VAL_26:.*]] = fir.convert %[[VAL_16]] : (!fir.box<!fir.ptr<!fir.array<?xi32>>>) -> !fir.box<none>
- ! CHECK: fir.call @_FortranADateAndTime(%[[VAL_19]], %[[VAL_20]], %[[VAL_21]], %[[VAL_22]], %[[VAL_23]], %[[VAL_24]], %{{.*}}, %{{.*}}, %[[VAL_26]]) {{.*}}: (!fir.ref<i8>, i64, !fir.ref<i8>, i64, !fir.ref<i8>, i64, !fir.ref<i8>, i32, !fir.box<none>) -> ()
end subroutine
diff --git a/flang/test/Lower/Intrinsics/dconjg.f90 b/flang/test/Lower/Intrinsics/dconjg.f90
index 1362b4ccf8c03..0a219565f5bb5 100644
--- a/flang/test/Lower/Intrinsics/dconjg.f90
+++ b/flang/test/Lower/Intrinsics/dconjg.f90
@@ -1,4 +1,4 @@
-! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
subroutine test_dconjg(r, c)
complex(8), intent(out) :: r
@@ -7,11 +7,14 @@ subroutine test_dconjg(r, c)
! CHECK-LABEL: func @_QPtest_dconjg(
! CHECK-SAME: %[[ARG_0:.*]]: !fir.ref<complex<f64>> {fir.bindc_name = "r"},
! CHECK-SAME: %[[ARG_1:.*]]: !fir.ref<complex<f64>> {fir.bindc_name = "c"}) {
-! CHECK: %[[VAL_0:.*]] = fir.load %[[ARG_1]] : !fir.ref<complex<f64>>
+! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[ARG_1]] dummy_scope %[[DS]] {{.*}}
+! CHECK: %[[R_DECL:.*]]:2 = hlfir.declare %[[ARG_0]] dummy_scope %[[DS]] {{.*}}
+! CHECK: %[[VAL_0:.*]] = fir.load %[[C_DECL]]#0 : !fir.ref<complex<f64>>
! CHECK: %[[VAL_1:.*]] = fir.extract_value %[[VAL_0]], [1 : index] : (complex<f64>) -> f64
! CHECK: %[[VAL_2:.*]] = arith.negf %[[VAL_1]] {{.*}}: f64
! CHECK: %[[VAL_3:.*]] = fir.insert_value %[[VAL_0]], %[[VAL_2]], [1 : index] : (complex<f64>, f64) -> complex<f64>
-! CHECK: fir.store %[[VAL_3]] to %[[ARG_0]] : !fir.ref<complex<f64>>
+! CHECK: hlfir.assign %[[VAL_3]] to %[[R_DECL]]#0 : complex<f64>, !fir.ref<complex<f64>>
! CHECK: return
! CHECK: }
diff --git a/flang/test/Lower/Intrinsics/dim.f90 b/flang/test/Lower/Intrinsics/dim.f90
index fb1a496570ca1..e50e161a24b90 100644
--- a/flang/test/Lower/Intrinsics/dim.f90
+++ b/flang/test/Lower/Intrinsics/dim.f90
@@ -1,33 +1,39 @@
-! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
-! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
! CHECK-LABEL: func @_QPdim_testr(
-! CHECK-SAME: %[[VAL_0:[a-z]+[0-9]]]: !fir.ref<f32>{{.*}}, %[[VAL_1:.*]]: !fir.ref<f32>{{.*}}, %[[VAL_2:.*]]: !fir.ref<f32>{{.*}}) {
+! CHECK-SAME: %[[VAL_0:.*]]: !fir.ref<f32>{{.*}}, %[[VAL_1:.*]]: !fir.ref<f32>{{.*}}, %[[VAL_2:.*]]: !fir.ref<f32>{{.*}}) {
subroutine dim_testr(x, y, z)
-! CHECK: %[[VAL_3:.*]] = fir.load %[[VAL_0]] : !fir.ref<f32>
-! CHECK: %[[VAL_4:.*]] = fir.load %[[VAL_1]] : !fir.ref<f32>
+! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+! CHECK: %[[X_DECL:.*]]:2 = hlfir.declare %[[VAL_0]] dummy_scope %[[DS]] {{.*}}
+! CHECK: %[[Y_DECL:.*]]:2 = hlfir.declare %[[VAL_1]] dummy_scope %[[DS]] {{.*}}
+! CHECK: %[[Z_DECL:.*]]:2 = hlfir.declare %[[VAL_2]] dummy_scope %[[DS]] {{.*}}
+! CHECK: %[[VAL_3:.*]] = fir.load %[[X_DECL]]#0 : !fir.ref<f32>
+! CHECK: %[[VAL_4:.*]] = fir.load %[[Y_DECL]]#0 : !fir.ref<f32>
! CHECK: %[[VAL_5:.*]] = arith.constant 0.000000e+00 : f32
! CHECK: %[[VAL_6:.*]] = arith.subf %[[VAL_3]], %[[VAL_4]] {{.*}}: f32
! CHECK: %[[VAL_7:.*]] = arith.cmpf ogt, %[[VAL_6]], %[[VAL_5]] {{.*}} : f32
! CHECK: %[[VAL_8:.*]] = arith.select %[[VAL_7]], %[[VAL_6]], %[[VAL_5]] : f32
-! CHECK: fir.store %[[VAL_8]] to %[[VAL_2]] : !fir.ref<f32>
+! CHECK: hlfir.assign %[[VAL_8]] to %[[Z_DECL]]#0 : f32, !fir.ref<f32>
! CHECK: return
real :: x, y, z
z = dim(x, y)
end subroutine
! CHECK-LABEL: func @_QPdim_testi(
-! CHECK-SAME: %[[VAL_0:[a-z]+[0-9]]]: !fir.ref<i32>{{.*}}, %[[VAL_1:.*]]: !fir.ref<i32>{{.*}}, %[[VAL_2:.*]]: !fir.ref<i32>{{.*}}) {
+! CHECK-SAME: %[[VAL_0:.*]]: !fir.ref<i32>{{.*}}, %[[VAL_1:.*]]: !fir.ref<i32>{{.*}}, %[[VAL_2:.*]]: !fir.ref<i32>{{.*}}) {
subroutine dim_testi(i, j, k)
-! CHECK: %[[VAL_3:.*]] = fir.load %[[VAL_0]] : !fir.ref<i32>
-! CHECK: %[[VAL_4:.*]] = fir.load %[[VAL_1]] : !fir.ref<i32>
+! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+! CHECK: %[[I_DECL:.*]]:2 = hlfir.declare %[[VAL_0]] dummy_scope %[[DS]] {{.*}}
+! CHECK: %[[J_DECL:.*]]:2 = hlfir.declare %[[VAL_1]] dummy_scope %[[DS]] {{.*}}
+! CHECK: %[[K_DECL:.*]]:2 = hlfir.declare %[[VAL_2]] dummy_scope %[[DS]] {{.*}}
+! CHECK: %[[VAL_3:.*]] = fir.load %[[I_DECL]]#0 : !fir.ref<i32>
+! CHECK: %[[VAL_4:.*]] = fir.load %[[J_DECL]]#0 : !fir.ref<i32>
! CHECK: %[[VAL_5:.*]] = arith.constant 0 : i32
! CHECK: %[[VAL_6:.*]] = arith.subi %[[VAL_3]], %[[VAL_4]] : i32
! CHECK: %[[VAL_7:.*]] = arith.cmpi sgt, %[[VAL_6]], %[[VAL_5]] : i32
! CHECK: %[[VAL_8:.*]] = arith.select %[[VAL_7]], %[[VAL_6]], %[[VAL_5]] : i32
-! CHECK: fir.store %[[VAL_8]] to %[[VAL_2]] : !fir.ref<i32>
+! CHECK: hlfir.assign %[[VAL_8]] to %[[K_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: return
integer :: i, j, k
k = dim(i, j)
end subroutine
-
diff --git a/flang/test/Lower/Intrinsics/dimag.f90 b/flang/test/Lower/Intrinsics/dimag.f90
index cc0bd3167d7f7..a90fb31e5864b 100644
--- a/flang/test/Lower/Intrinsics/dimag.f90
+++ b/flang/test/Lower/Intrinsics/dimag.f90
@@ -1,4 +1,4 @@
-! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
subroutine test_dimag(r, c)
real(8), intent(out) :: r
@@ -7,9 +7,12 @@ subroutine test_dimag(r, c)
! CHECK-LABEL: func @_QPtest_dimag(
! CHECK-SAME: %[[ARG_0:.*]]: !fir.ref<f64> {fir.bindc_name = "r"},
! CHECK-SAME: %[[ARG_1:.*]]: !fir.ref<complex<f64>> {fir.bindc_name = "c"}) {
-! CHECK: %[[VAL_0:.*]] = fir.load %[[ARG_1]] : !fir.ref<complex<f64>>
+! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[ARG_1]] dummy_scope %[[DS]] {{.*}}
+! CHECK: %[[R_DECL:.*]]:2 = hlfir.declare %[[ARG_0]] dummy_scope %[[DS]] {{.*}}
+! CHECK: %[[VAL_0:.*]] = fir.load %[[C_DECL]]#0 : !fir.ref<complex<f64>>
! CHECK: %[[VAL_1:.*]] = fir.extract_value %[[VAL_0]], [1 : index] : (complex<f64>) -> f64
-! CHECK: fir.store %[[VAL_1]] to %[[ARG_0]] : !fir.ref<f64>
+! CHECK: hlfir.assign %[[VAL_1]] to %[[R_DECL]]#0 : f64, !fir.ref<f64>
! CHECK: return
! CHECK: }
diff --git a/flang/test/Lower/Intrinsics/dprod.f90 b/flang/test/Lower/Intrinsics/dprod.f90
index 8e14d63aa95ce..5336a4420e5f8 100644
--- a/flang/test/Lower/Intrinsics/dprod.f90
+++ b/flang/test/Lower/Intrinsics/dprod.f90
@@ -1,14 +1,18 @@
-! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
! CHECK-LABEL: dprod_test
subroutine dprod_test (x, y, z)
real :: x,y
double precision :: z
- z = dprod(x,y)
- ! CHECK-DAG: %[[x:.*]] = fir.load %arg0
- ! CHECK-DAG: %[[y:.*]] = fir.load %arg1
+ ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+ ! CHECK: %[[X_DECL:.*]]:2 = hlfir.declare %arg0 dummy_scope %[[DS]] {{.*}}
+ ! CHECK: %[[Y_DECL:.*]]:2 = hlfir.declare %arg1 dummy_scope %[[DS]] {{.*}}
+ ! CHECK: %[[Z_DECL:.*]]:2 = hlfir.declare %arg2 dummy_scope %[[DS]] {{.*}}
+ ! CHECK-DAG: %[[x:.*]] = fir.load %[[X_DECL]]#0
+ ! CHECK-DAG: %[[y:.*]] = fir.load %[[Y_DECL]]#0
! CHECK-DAG: %[[a:.*]] = fir.convert %[[x]] : (f32) -> f64
! CHECK-DAG: %[[b:.*]] = fir.convert %[[y]] : (f32) -> f64
! CHECK: %[[res:.*]] = arith.mulf %[[a]], %[[b]]
- ! CHECK: fir.store %[[res]] to %arg2
+ ! CHECK: hlfir.assign %[[res]] to %[[Z_DECL]]#0
+ z = dprod(x,y)
end subroutine
More information about the flang-commits
mailing list