[flang-commits] [flang] [flang][NFC] Converted five tests from old lowering to new lowering (part 28) (PR #185549)

via flang-commits flang-commits at lists.llvm.org
Mon Mar 9 18:40:13 PDT 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-flang-fir-hlfir

Author: Eugene Epshteyn (eugeneepshteyn)

<details>
<summary>Changes</summary>

Tests converted from test/Lower/Intrinsics: dreal.f90, dshiftl.f90, dshiftr.f90, eoshift.f90, erfc_scaled.f90

---

Patch is 31.94 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/185549.diff


5 Files Affected:

- (modified) flang/test/Lower/Intrinsics/dreal.f90 (+7-4) 
- (modified) flang/test/Lower/Intrinsics/dshiftl.f90 (+51-22) 
- (modified) flang/test/Lower/Intrinsics/dshiftr.f90 (+51-22) 
- (modified) flang/test/Lower/Intrinsics/eoshift.f90 (+64-86) 
- (modified) flang/test/Lower/Intrinsics/erfc_scaled.f90 (+25-11) 


``````````diff
diff --git a/flang/test/Lower/Intrinsics/dreal.f90 b/flang/test/Lower/Intrinsics/dreal.f90
index c911bc9fea59d..13d8cabba9e64 100644
--- a/flang/test/Lower/Intrinsics/dreal.f90
+++ b/flang/test/Lower/Intrinsics/dreal.f90
@@ -1,15 +1,18 @@
-! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
 
 subroutine test_dreal(r, c)
   real(8), intent(out) :: r
   complex(8), intent(in) :: c
 
-! CHECK-LABEL: func @_QPtest_dreal(
+! CHECK-LABEL: func.func @_QPtest_dreal(
 ! 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:.*]]:2 = hlfir.declare %[[ARG_1]] dummy_scope %[[DS]]
+! CHECK:   %[[R:.*]]:2 = hlfir.declare %[[ARG_0]] dummy_scope %[[DS]]
+! CHECK:   %[[VAL_0:.*]] = fir.load %[[C]]#0 : !fir.ref<complex<f64>>
 ! CHECK:   %[[VAL_1:.*]] = fir.extract_value %[[VAL_0]], [0 : index] : (complex<f64>) -> f64
-! CHECK:   fir.store %[[VAL_1]] to %[[ARG_0]] : !fir.ref<f64>
+! CHECK:   hlfir.assign %[[VAL_1]] to %[[R]]#0 : f64, !fir.ref<f64>
 ! CHECK:   return
 ! CHECK: }
 
diff --git a/flang/test/Lower/Intrinsics/dshiftl.f90 b/flang/test/Lower/Intrinsics/dshiftl.f90
index 8fd642df2e3bc..9a48a7d0244fc 100644
--- a/flang/test/Lower/Intrinsics/dshiftl.f90
+++ b/flang/test/Lower/Intrinsics/dshiftl.f90
@@ -1,16 +1,20 @@
-! 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: dshiftl1_test
+! CHECK-LABEL: func.func @_QPdshiftl1_test(
 ! CHECK-SAME: %[[A:.*]]: !fir.ref<i8>{{.*}}, %[[B:.*]]: !fir.ref<i8>{{.*}}, %[[S:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i8>{{.*}}
 subroutine dshiftl1_test(a, b, s, c)
   integer(kind=1) :: a, b
   integer :: s
   integer(kind=1) :: c
 
-  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i8>
-  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i8>
-  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S]] : !fir.ref<i32>
+  ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+  ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[DS]]
+  ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[DS]]
+  ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[DS]]
+  ! CHECK: %[[S_DECL:.*]]:2 = hlfir.declare %[[S]] dummy_scope %[[DS]]
+  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref<i8>
+  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref<i8>
+  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S_DECL]]#0 : !fir.ref<i32>
   c = dshiftl(a, b, s)
   ! CHECK: %[[S_CONV:.*]] = fir.convert %[[S_VAL]] : (i32) -> i8
   ! CHECK: %[[C_BITS:.*]] = arith.constant 8 : i8
@@ -30,18 +34,24 @@ subroutine dshiftl1_test(a, b, s, c)
   ! CHECK: %[[SHR:.*]] = arith.shrui %[[B_VAL]], %[[DIFF]] : i8
   ! CHECK: %[[RGT:.*]] = arith.select %[[INV_R]], %[[C_0_R]], %[[SHR]] : i8
   ! CHECK: %[[SHIFT:.*]] = arith.ori %[[LFT]], %[[RGT]] : i8
+  ! CHECK: hlfir.assign %[[SHIFT]] to %[[C_DECL]]#0 : i8, !fir.ref<i8>
 end subroutine dshiftl1_test
 
-! CHECK-LABEL: dshiftl2_test
+! CHECK-LABEL: func.func @_QPdshiftl2_test(
 ! CHECK-SAME: %[[A:.*]]: !fir.ref<i16>{{.*}}, %[[B:.*]]: !fir.ref<i16>{{.*}}, %[[S:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i16>{{.*}}
 subroutine dshiftl2_test(a, b, s, c)
   integer(kind=2) :: a, b
   integer :: s
   integer(kind=2) :: c
 
-  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i16>
-  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i16>
-  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S]] : !fir.ref<i32>
+  ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+  ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[DS]]
+  ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[DS]]
+  ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[DS]]
+  ! CHECK: %[[S_DECL:.*]]:2 = hlfir.declare %[[S]] dummy_scope %[[DS]]
+  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref<i16>
+  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref<i16>
+  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S_DECL]]#0 : !fir.ref<i32>
   c = dshiftl(a, b, s)
   ! CHECK: %[[S_CONV:.*]] = fir.convert %[[S_VAL]] : (i32) -> i16
   ! CHECK: %[[C_BITS:.*]] = arith.constant 16 : i16
@@ -61,18 +71,24 @@ subroutine dshiftl2_test(a, b, s, c)
   ! CHECK: %[[SHR:.*]] = arith.shrui %[[B_VAL]], %[[DIFF]] : i16
   ! CHECK: %[[RGT:.*]] = arith.select %[[INV_R]], %[[C_0_R]], %[[SHR]] : i16
   ! CHECK: %[[SHIFT:.*]] = arith.ori %[[LFT]], %[[RGT]] : i16
+  ! CHECK: hlfir.assign %[[SHIFT]] to %[[C_DECL]]#0 : i16, !fir.ref<i16>
 end subroutine dshiftl2_test
 
-! CHECK-LABEL: dshiftl4_test
+! CHECK-LABEL: func.func @_QPdshiftl4_test(
 ! CHECK-SAME: %[[A:.*]]: !fir.ref<i32>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[S:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i32>{{.*}}
 subroutine dshiftl4_test(a, b, s, c)
   integer(kind=4) :: a, b
   integer :: s
   integer(kind=4) :: c
 
-  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i32>
-  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>
-  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S]] : !fir.ref<i32>
+  ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+  ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[DS]]
+  ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[DS]]
+  ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[DS]]
+  ! CHECK: %[[S_DECL:.*]]:2 = hlfir.declare %[[S]] dummy_scope %[[DS]]
+  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref<i32>
+  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref<i32>
+  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S_DECL]]#0 : !fir.ref<i32>
   c = dshiftl(a, b, s)
   ! CHECK: %[[C_BITS:.*]] = arith.constant 32 : i32
   ! CHECK: %[[DIFF:.*]] = arith.subi %[[C_BITS]], %[[S_VAL]] : i32
@@ -91,18 +107,24 @@ subroutine dshiftl4_test(a, b, s, c)
   ! CHECK: %[[SHR:.*]] = arith.shrui %[[B_VAL]], %[[DIFF]] : i32
   ! CHECK: %[[RGT:.*]] = arith.select %[[INV_R]], %[[C_0_R]], %[[SHR]] : i32
   ! CHECK: %[[SHIFT:.*]] = arith.ori %[[LFT]], %[[RGT]] : i32
+  ! CHECK: hlfir.assign %[[SHIFT]] to %[[C_DECL]]#0 : i32, !fir.ref<i32>
 end subroutine dshiftl4_test
 
-! CHECK-LABEL: dshiftl8_test
+! CHECK-LABEL: func.func @_QPdshiftl8_test(
 ! CHECK-SAME: %[[A:.*]]: !fir.ref<i64>{{.*}}, %[[B:.*]]: !fir.ref<i64>{{.*}}, %[[S:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i64>{{.*}}
 subroutine dshiftl8_test(a, b, s, c)
   integer(kind=8) :: a, b
   integer :: s
   integer(kind=8) :: c
 
-  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i64>
-  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i64>
-  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S]] : !fir.ref<i32>
+  ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+  ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[DS]]
+  ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[DS]]
+  ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[DS]]
+  ! CHECK: %[[S_DECL:.*]]:2 = hlfir.declare %[[S]] dummy_scope %[[DS]]
+  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref<i64>
+  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref<i64>
+  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S_DECL]]#0 : !fir.ref<i32>
   c = dshiftl(a, b, s)
   ! CHECK: %[[S_CONV:.*]] = fir.convert %[[S_VAL]] : (i32) -> i64
   ! CHECK: %[[C_BITS:.*]] = arith.constant 64 : i64
@@ -122,18 +144,24 @@ subroutine dshiftl8_test(a, b, s, c)
   ! CHECK: %[[SHR:.*]] = arith.shrui %[[B_VAL]], %[[DIFF]] : i64
   ! CHECK: %[[RGT:.*]] = arith.select %[[INV_R]], %[[C_0_R]], %[[SHR]] : i64
   ! CHECK: %[[SHIFT:.*]] = arith.ori %[[LFT]], %[[RGT]] : i64
+  ! CHECK: hlfir.assign %[[SHIFT]] to %[[C_DECL]]#0 : i64, !fir.ref<i64>
 end subroutine dshiftl8_test
 
-! CHECK-LABEL: dshiftl16_test
+! CHECK-LABEL: func.func @_QPdshiftl16_test(
 ! CHECK-SAME: %[[A:.*]]: !fir.ref<i128>{{.*}}, %[[B:.*]]: !fir.ref<i128>{{.*}}, %[[S:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i128>{{.*}}
 subroutine dshiftl16_test(a, b, s, c)
   integer(kind=16) :: a, b
   integer :: s
   integer(kind=16) :: c
 
-  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i128>
-  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i128>
-  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S]] : !fir.ref<i32>
+  ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+  ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[DS]]
+  ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[DS]]
+  ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[DS]]
+  ! CHECK: %[[S_DECL:.*]]:2 = hlfir.declare %[[S]] dummy_scope %[[DS]]
+  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref<i128>
+  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref<i128>
+  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S_DECL]]#0 : !fir.ref<i32>
   c = dshiftl(a, b, s)
   ! CHECK: %[[S_CONV:.*]] = fir.convert %[[S_VAL]] : (i32) -> i128
   ! CHECK: %[[C_BITS:.*]] = arith.constant 128 : i128
@@ -153,4 +181,5 @@ subroutine dshiftl16_test(a, b, s, c)
   ! CHECK: %[[SHR:.*]] = arith.shrui %[[B_VAL]], %[[DIFF]] : i128
   ! CHECK: %[[RGT:.*]] = arith.select %[[INV_R]], %[[C_0_R]], %[[SHR]] : i128
   ! CHECK: %[[SHIFT:.*]] = arith.ori %[[LFT]], %[[RGT]] : i128
+  ! CHECK: hlfir.assign %[[SHIFT]] to %[[C_DECL]]#0 : i128, !fir.ref<i128>
 end subroutine dshiftl16_test
diff --git a/flang/test/Lower/Intrinsics/dshiftr.f90 b/flang/test/Lower/Intrinsics/dshiftr.f90
index 891f2fc54d04b..55d2cb841aa50 100644
--- a/flang/test/Lower/Intrinsics/dshiftr.f90
+++ b/flang/test/Lower/Intrinsics/dshiftr.f90
@@ -1,16 +1,20 @@
-! 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: dshiftr1_test
+! CHECK-LABEL: func.func @_QPdshiftr1_test(
 ! CHECK-SAME: %[[A:.*]]: !fir.ref<i8>{{.*}}, %[[B:.*]]: !fir.ref<i8>{{.*}}, %[[S:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i8>{{.*}}
 subroutine dshiftr1_test(a, b, s, c)
   integer(kind=1) :: a, b
   integer :: s
   integer(kind=1) :: c
 
-  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i8>
-  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i8>
-  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S]] : !fir.ref<i32>
+  ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+  ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[DS]]
+  ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[DS]]
+  ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[DS]]
+  ! CHECK: %[[S_DECL:.*]]:2 = hlfir.declare %[[S]] dummy_scope %[[DS]]
+  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref<i8>
+  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref<i8>
+  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S_DECL]]#0 : !fir.ref<i32>
   c = dshiftr(a, b, s)
   ! CHECK: %[[S_CONV:.*]] = fir.convert %[[S_VAL]] : (i32) -> i8
   ! CHECK: %[[C_BITS:.*]] = arith.constant 8 : i8
@@ -30,18 +34,24 @@ subroutine dshiftr1_test(a, b, s, c)
   ! CHECK: %[[SHR:.*]] = arith.shrui %[[B_VAL]], %[[S_CONV]] : i8
   ! CHECK: %[[RGT:.*]] = arith.select %[[INV_R]], %[[C_0_R]], %[[SHR]] : i8
   ! CHECK: %[[SHIFT:.*]] = arith.ori %[[LFT]], %[[RGT]] : i8
+  ! CHECK: hlfir.assign %[[SHIFT]] to %[[C_DECL]]#0 : i8, !fir.ref<i8>
 end subroutine dshiftr1_test
 
-! CHECK-LABEL: dshiftr2_test
+! CHECK-LABEL: func.func @_QPdshiftr2_test(
 ! CHECK-SAME: %[[A:.*]]: !fir.ref<i16>{{.*}}, %[[B:.*]]: !fir.ref<i16>{{.*}}, %[[S:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i16>{{.*}}
 subroutine dshiftr2_test(a, b, s, c)
   integer(kind=2) :: a, b
   integer :: s
   integer(kind=2) :: c
 
-  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i16>
-  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i16>
-  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S]] : !fir.ref<i32>
+  ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+  ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[DS]]
+  ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[DS]]
+  ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[DS]]
+  ! CHECK: %[[S_DECL:.*]]:2 = hlfir.declare %[[S]] dummy_scope %[[DS]]
+  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref<i16>
+  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref<i16>
+  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S_DECL]]#0 : !fir.ref<i32>
   c = dshiftr(a, b, s)
   ! CHECK: %[[S_CONV:.*]] = fir.convert %[[S_VAL]] : (i32) -> i16
   ! CHECK: %[[C_BITS:.*]] = arith.constant 16 : i16
@@ -61,18 +71,24 @@ subroutine dshiftr2_test(a, b, s, c)
   ! CHECK: %[[SHR:.*]] = arith.shrui %[[B_VAL]], %[[S_CONV]] : i16
   ! CHECK: %[[RGT:.*]] = arith.select %[[INV_R]], %[[C_0_R]], %[[SHR]] : i16
   ! CHECK: %[[SHIFT:.*]] = arith.ori %[[LFT]], %[[RGT]] : i16
+  ! CHECK: hlfir.assign %[[SHIFT]] to %[[C_DECL]]#0 : i16, !fir.ref<i16>
 end subroutine dshiftr2_test
 
-! CHECK-LABEL: dshiftr4_test
+! CHECK-LABEL: func.func @_QPdshiftr4_test(
 ! CHECK-SAME: %[[A:.*]]: !fir.ref<i32>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[S:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i32>{{.*}}
 subroutine dshiftr4_test(a, b, s, c)
   integer(kind=4) :: a, b
   integer :: s
   integer(kind=4) :: c
 
-  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i32>
-  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>
-  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S]] : !fir.ref<i32>
+  ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+  ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[DS]]
+  ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[DS]]
+  ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[DS]]
+  ! CHECK: %[[S_DECL:.*]]:2 = hlfir.declare %[[S]] dummy_scope %[[DS]]
+  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref<i32>
+  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref<i32>
+  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S_DECL]]#0 : !fir.ref<i32>
   c = dshiftr(a, b, s)
   ! CHECK: %[[C_BITS:.*]] = arith.constant 32 : i32
   ! CHECK: %[[DIFF:.*]] = arith.subi %[[C_BITS]], %[[S_VAL]] : i32
@@ -91,18 +107,24 @@ subroutine dshiftr4_test(a, b, s, c)
   ! CHECK: %[[SHR:.*]] = arith.shrui %[[B_VAL]], %[[S_VAL]] : i32
   ! CHECK: %[[RGT:.*]] = arith.select %[[INV_R]], %[[C_0_R]], %[[SHR]] : i32
   ! CHECK: %[[SHIFT:.*]] = arith.ori %[[LFT]], %[[RGT]] : i32
+  ! CHECK: hlfir.assign %[[SHIFT]] to %[[C_DECL]]#0 : i32, !fir.ref<i32>
 end subroutine dshiftr4_test
 
-! CHECK-LABEL: dshiftr8_test
+! CHECK-LABEL: func.func @_QPdshiftr8_test(
 ! CHECK-SAME: %[[A:.*]]: !fir.ref<i64>{{.*}}, %[[B:.*]]: !fir.ref<i64>{{.*}}, %[[S:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i64>{{.*}}
 subroutine dshiftr8_test(a, b, s, c)
   integer(kind=8) :: a, b
   integer :: s
   integer(kind=8) :: c
 
-  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i64>
-  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i64>
-  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S]] : !fir.ref<i32>
+  ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+  ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[DS]]
+  ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[DS]]
+  ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[DS]]
+  ! CHECK: %[[S_DECL:.*]]:2 = hlfir.declare %[[S]] dummy_scope %[[DS]]
+  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref<i64>
+  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref<i64>
+  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S_DECL]]#0 : !fir.ref<i32>
   c = dshiftr(a, b, s)
   ! CHECK: %[[S_CONV:.*]] = fir.convert %[[S_VAL]] : (i32) -> i64
   ! CHECK: %[[C_BITS:.*]] = arith.constant 64 : i64
@@ -122,18 +144,24 @@ subroutine dshiftr8_test(a, b, s, c)
   ! CHECK: %[[SHR:.*]] = arith.shrui %[[B_VAL]], %[[S_CONV]] : i64
   ! CHECK: %[[RGT:.*]] = arith.select %[[INV_R]], %[[C_0_R]], %[[SHR]] : i64
   ! CHECK: %[[SHIFT:.*]] = arith.ori %[[LFT]], %[[RGT]] : i64
+  ! CHECK: hlfir.assign %[[SHIFT]] to %[[C_DECL]]#0 : i64, !fir.ref<i64>
 end subroutine dshiftr8_test
 
-! CHECK-LABEL: dshiftr16_test
+! CHECK-LABEL: func.func @_QPdshiftr16_test(
 ! CHECK-SAME: %[[A:.*]]: !fir.ref<i128>{{.*}}, %[[B:.*]]: !fir.ref<i128>{{.*}}, %[[S:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i128>{{.*}}
 subroutine dshiftr16_test(a, b, s, c)
   integer(kind=16) :: a, b
   integer :: s
   integer(kind=16) :: c
 
-  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i128>
-  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i128>
-  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S]] : !fir.ref<i32>
+  ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+  ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[DS]]
+  ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[DS]]
+  ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[DS]]
+  ! CHECK: %[[S_DECL:.*]]:2 = hlfir.declare %[[S]] dummy_scope %[[DS]]
+  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref<i128>
+  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref<i128>
+  ! CHECK: %[[S_VAL:.*]] = fir.load %[[S_DECL]]#0 : !fir.ref<i32>
   c = dshiftr(a, b, s)
   ! CHECK: %[[S_CONV:.*]] = fir.convert %[[S_VAL]] : (i32) -> i128
   ! CHECK: %[[C_BITS:.*]] = arith.constant 128 : i128
@@ -153,4 +181,5 @@ subroutine dshiftr16_test(a, b, s, c)
   ! CHECK: %[[SHR:.*]] = arith.shrui %[[B_VAL]], %[[S_CONV]] : i128
   ! CHECK: %[[RGT:.*]] = arith.select %[[INV_R]], %[[C_0_R]], %[[SHR]] : i128
   ! CHECK: %[[SHIFT:.*]] = arith.ori %[[LFT]], %[[RGT]] : i128
+  ! CHECK: hlfir.assign %[[SHIFT]] to %[[C_DECL]]#0 : i128, !fir.ref<i128>
 end subroutine dshiftr16_test
diff --git a/flang/test/Lower/Intrinsics/eoshift.f90 b/flang/test/Lower/Intrinsics/eoshift.f90
index 4f01ce989c9f0..9a7141ed676e1 100644
--- a/flang/test/Lower/Intrinsics/eoshift.f90
+++ b/flang/test/Lower/Intrinsics/eoshift.f90
@@ -1,94 +1,72 @@
-! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
 
-! CHECK-LABEL: eoshift_test1
+! CHECK-LABEL: func.func @_QPeoshift_test1(
+! CHECK-SAME: %[[ARG0:.*]]: !fir.ref<!fir.array<3x!fir.logical<4>>>{{.*}}, %[[ARG1:.*]]: !fir.ref<i32>{{.*}})
 subroutine eoshift_test1(arr, shift)
     logical, dimension(3) :: arr, res
     integer :: shift
-  ! CHECK: %[[resBox:.*]] = fir.alloca !fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>
-  ! CHECK: %[[res:.*]] = fir.alloca !fir.array<3x!fir.logical<4>> {bindc_name = "res", uniq_name = "_QFeoshift_test1Eres"}
-  ! CHECK: %[[resLoad:.*]] = fir.array_load %[[res]]({{.*}}) : (!fir.ref<!fir.array<3x!fir.logical<4>>>, !fir.shape<1>) -> !fir.array<3x!fir.logical<4>>
-  ! CHECK: %[[arr:.*]] = fir.embox %arg0({{.*}}) : (!fir.ref<!fir.array<3x!fir.logical<4>>>, !fir.shape<1>) -> !fir.box<!fir.array<3x!fir.logical<4>>>
-  ! CHECK: %[[bits:.*]] = fir.zero_bits !fir.heap<!fir.array<?x!fir.logical<4>>>
-  ! CHECK: %[[init:.*]] = fir.embox %[[bits]]({{.*}}) : (!fir.heap<!fir.array<?x!fir.logical<4>>>, !fir.shape<1>) -> !fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>
-  ! CHECK: fir.store %[[init]] to %[[resBox]] : !fir.ref<!fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>>
-  ! CHECK:  %[[boundBox:.*]] = fir.absent !fir.box<none>
-  ! CHECK: %[[shift:.*]] = fir.load %arg1 : !fir.ref<i32>
-
+  ! CHECK: %[[DS:.*]] = fir.dummy_scope : !fir.dscope
+  ! CHECK: %[[ARR_DECL:.*]]:2 = hlfir.declare %[[ARG0]]
+  ! CHECK: %[[RES_ALLOC:.*]] = fir.alloca !fir.array<3x!fir.logical<4>>
+  ! CHECK: %[[RES_DECL:.*]]:2 = hlfir.declare %[[RES_ALLOC]]
+  ! CHECK: %[[SHIFT_DECL:.*]]:2 = hlfir.declare %[[ARG1]]
+  ! CHECK: %[[EXPR:.*]] = hlfir.eoshift %[[ARR_DECL]]#0 %[[SHIFT_DECL]]#0 : (!fir.ref<!fir.array<3x!fir.logical<4>>>, !fir.ref<i32>) -> !hlfir.expr<3x!fir.logical<4>>
+  ! CHECK: hlfir.assign %[[EXPR]] to %[[RES_DECL]]#0 : !hlfir.expr<3x!fir.logical<4>>, !fir.ref<!fir.array<3x!fir.logical<4>>>
+  ! CHECK: hlfir.destroy %[[EXPR]] : !hlfir.expr<3x!fir.logical<4>>
     res = eoshift(arr, shift)
+end subroutine eoshift_test1
 
-  ! CHECK: %[[resIRBox:.*]] = fir.convert %[[resBox]] : (!fir.ref<!fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>>) -> !fir.ref<!fir.box<none>>
-  ! CHECK: %[[arrBox:.*]] = fir.convert %[[arr]] : (!fir.box<!fir.array<3x!fir.logical<4>>>) -> !fir.box<none>
-  ! CHECK: %[[shiftBox:.*]] = fir.convert...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/185549


More information about the flang-commits mailing list