[flang-commits] [flang] 88f8a2b - [flang][NFC] Converted five tests from old lowering to new lowering (part 34) (#187175)

via flang-commits flang-commits at lists.llvm.org
Wed Mar 18 08:12:25 PDT 2026


Author: Eugene Epshteyn
Date: 2026-03-18T11:12:19-04:00
New Revision: 88f8a2bdb25b7aef4b02df33b859815b7b13216f

URL: https://github.com/llvm/llvm-project/commit/88f8a2bdb25b7aef4b02df33b859815b7b13216f
DIFF: https://github.com/llvm/llvm-project/commit/88f8a2bdb25b7aef4b02df33b859815b7b13216f.diff

LOG: [flang][NFC] Converted five tests from old lowering to new lowering (part 34) (#187175)

Tests converted from test/Lower/Intrinsics: is_iostat_value.f90,
ishft.f90, ishftc.f90, lbound.f90, leadz.f90

Added: 
    

Modified: 
    flang/test/Lower/Intrinsics/is_iostat_value.f90
    flang/test/Lower/Intrinsics/ishft.f90
    flang/test/Lower/Intrinsics/ishftc.f90
    flang/test/Lower/Intrinsics/lbound.f90
    flang/test/Lower/Intrinsics/leadz.f90

Removed: 
    


################################################################################
diff  --git a/flang/test/Lower/Intrinsics/is_iostat_value.f90 b/flang/test/Lower/Intrinsics/is_iostat_value.f90
index 2b4a94a555b9a..b99ed694a678e 100644
--- a/flang/test/Lower/Intrinsics/is_iostat_value.f90
+++ b/flang/test/Lower/Intrinsics/is_iostat_value.f90
@@ -1,21 +1,21 @@
-! RUN: bbc -emit-fir -hlfir=false -o - %s | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir -o - %s | FileCheck %s
 
   ! CHECK-LABEL: func @_QQmain
-  ! CHECK: %[[V_0:[0-9]+]] = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFEi"}
+  ! CHECK: %[[V_0:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFEi"}
   ! CHECK: fir.do_loop
   do i=-20,20
-    ! CHECK: %[[V_5:[0-9]+]] = fir.load %[[V_0]] : !fir.ref<i32>
-    ! CHECK: %[[V_6:[0-9]+]] = arith.cmpi eq, %[[V_5]], %c-1{{.*}} : i32
+    ! CHECK: %[[V_5:.*]] = fir.load %[[V_0]]#0 : !fir.ref<i32>
+    ! CHECK: %[[V_6:.*]] = arith.cmpi eq, %[[V_5]], %c-1{{.*}} : i32
     ! CHECK: fir.if %[[V_6]] {
-    ! CHECK:   %[[V_20:[0-9]+]] = fir.load %[[V_0]] : !fir.ref<i32>
-    ! CHECK:   %[[V_21:[0-9]+]] = fir.call @_FortranAioOutputInteger32(%{{.*}} %[[V_20]]) fastmath<contract> : (!fir.ref<i8>, i32) -> i1
+    ! CHECK:   %[[V_20:.*]] = fir.load %[[V_0]]#0 : !fir.ref<i32>
+    ! CHECK:   %[[V_21:.*]] = fir.call @_FortranAioOutputInteger32(%{{.*}}, %[[V_20]]) fastmath<contract> : (!fir.ref<i8>, i32) -> i1
     ! CHECK: }
     if (is_iostat_end(i)) print*, "iostat_end =", i
-    ! CHECK: %[[V_7:[0-9]+]] = fir.load %[[V_0]] : !fir.ref<i32>
-    ! CHECK: %[[V_8:[0-9]+]] = arith.cmpi eq, %[[V_7]], %c-2{{.*}} : i32
+    ! CHECK: %[[V_7:.*]] = fir.load %[[V_0]]#0 : !fir.ref<i32>
+    ! CHECK: %[[V_8:.*]] = arith.cmpi eq, %[[V_7]], %c-2{{.*}} : i32
     ! CHECK: fir.if %[[V_8]] {
-    ! CHECK:   %[[V_20:[0-9]+]] = fir.load %[[V_0]] : !fir.ref<i32>
-    ! CHECK:   %[[V_21:[0-9]+]] = fir.call @_FortranAioOutputInteger32(%{{.*}} %[[V_20]]) fastmath<contract> : (!fir.ref<i8>, i32) -> i1
+    ! CHECK:   %[[V_20:.*]] = fir.load %[[V_0]]#0 : !fir.ref<i32>
+    ! CHECK:   %[[V_21:.*]] = fir.call @_FortranAioOutputInteger32(%{{.*}}, %[[V_20]]) fastmath<contract> : (!fir.ref<i8>, i32) -> i1
     ! CHECK: }
     if (is_iostat_eor(i)) print*, "iostat_eor =", i
   ! CHECK: }

diff  --git a/flang/test/Lower/Intrinsics/ishft.f90 b/flang/test/Lower/Intrinsics/ishft.f90
index d25bdd86b192b..38dbf49e4c0a8 100644
--- a/flang/test/Lower/Intrinsics/ishft.f90
+++ b/flang/test/Lower/Intrinsics/ishft.f90
@@ -1,24 +1,28 @@
-! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
 
-! CHECK-LABEL: ishft_test
+! CHECK-LABEL: func.func @_QPishft_test(
+! CHECK-SAME: %[[I_ARG:.*]]: !fir.ref<i32> {fir.bindc_name = "i"},
+! CHECK-SAME: %[[J_ARG:.*]]: !fir.ref<i32> {fir.bindc_name = "j"}) -> i32 {
 function ishft_test(i, j)
-    ! CHECK-DAG: %[[result:.*]] = fir.alloca i32 {bindc_name = "ishft_test"
-    ! CHECK-DAG:  %[[i:.*]] = fir.load %arg0 : !fir.ref<i32>
-    ! CHECK-DAG:  %[[j:.*]] = fir.load %arg1 : !fir.ref<i32>
-    ! CHECK-DAG:  %[[VAL_5:.*]] = arith.constant 32 : i32
-    ! CHECK-DAG:  %[[VAL_6:.*]] = arith.constant 0 : i32
-    ! CHECK-DAG:  %[[VAL_7:.*]] = arith.constant 31 : i32
-    ! CHECK:  %[[VAL_8:.*]] = arith.shrsi %[[j]], %[[VAL_7]] : i32
-    ! CHECK:  %[[VAL_9:.*]] = arith.xori %[[j]], %[[VAL_8]] : i32
-    ! CHECK:  %[[VAL_10:.*]] = arith.subi %[[VAL_9]], %[[VAL_8]] : i32
-    ! CHECK:  %[[VAL_11:.*]] = arith.shli %[[i]], %[[VAL_10]] : i32
-    ! CHECK:  %[[VAL_12:.*]] = arith.shrui %[[i]], %[[VAL_10]] : i32
-    ! CHECK:  %[[VAL_13:.*]] = arith.cmpi sge, %[[VAL_10]], %[[VAL_5]] : i32
-    ! CHECK:  %[[VAL_14:.*]] = arith.cmpi slt, %[[j]], %[[VAL_6]] : i32
-    ! CHECK:  %[[VAL_15:.*]] = arith.select %[[VAL_14]], %[[VAL_12]], %[[VAL_11]] : i32
-    ! CHECK:  %[[VAL_16:.*]] = arith.select %[[VAL_13]], %[[VAL_6]], %[[VAL_15]] : i32
-    ! CHECK:  fir.store %[[VAL_16]] to %[[result]] : !fir.ref<i32>
-    ! CHECK:  %[[VAL_17:.*]] = fir.load %[[result]] : !fir.ref<i32>
-    ! CHECK:  return %[[VAL_17]] : i32
-    ishft_test = ishft(i, j)
-  end
+! CHECK-DAG: %[[I:.*]]:2 = hlfir.declare %[[I_ARG]]
+! CHECK-DAG: %[[result:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFishft_testEishft_test"}
+! CHECK-DAG: %[[J:.*]]:2 = hlfir.declare %[[J_ARG]]
+! CHECK-DAG: %[[iVAL:.*]] = fir.load %[[I]]#0 : !fir.ref<i32>
+! CHECK-DAG: %[[jVAL:.*]] = fir.load %[[J]]#0 : !fir.ref<i32>
+! CHECK-DAG: %[[VAL_5:.*]] = arith.constant 32 : i32
+! CHECK-DAG: %[[VAL_6:.*]] = arith.constant 0 : i32
+! CHECK-DAG: %[[VAL_7:.*]] = arith.constant 31 : i32
+! CHECK: %[[VAL_8:.*]] = arith.shrsi %[[jVAL]], %[[VAL_7]] : i32
+! CHECK: %[[VAL_9:.*]] = arith.xori %[[jVAL]], %[[VAL_8]] : i32
+! CHECK: %[[VAL_10:.*]] = arith.subi %[[VAL_9]], %[[VAL_8]] : i32
+! CHECK: %[[VAL_11:.*]] = arith.shli %[[iVAL]], %[[VAL_10]] : i32
+! CHECK: %[[VAL_12:.*]] = arith.shrui %[[iVAL]], %[[VAL_10]] : i32
+! CHECK: %[[VAL_13:.*]] = arith.cmpi sge, %[[VAL_10]], %[[VAL_5]] : i32
+! CHECK: %[[VAL_14:.*]] = arith.cmpi slt, %[[jVAL]], %[[VAL_6]] : i32
+! CHECK: %[[VAL_15:.*]] = arith.select %[[VAL_14]], %[[VAL_12]], %[[VAL_11]] : i32
+! CHECK: %[[VAL_16:.*]] = arith.select %[[VAL_13]], %[[VAL_6]], %[[VAL_15]] : i32
+! CHECK: hlfir.assign %[[VAL_16]] to %[[result]]#0 : i32, !fir.ref<i32>
+! CHECK: %[[VAL_17:.*]] = fir.load %[[result]]#0 : !fir.ref<i32>
+! CHECK: return %[[VAL_17]] : i32
+  ishft_test = ishft(i, j)
+end

diff  --git a/flang/test/Lower/Intrinsics/ishftc.f90 b/flang/test/Lower/Intrinsics/ishftc.f90
index f13d9c06a8197..352eabcc6cf2a 100644
--- a/flang/test/Lower/Intrinsics/ishftc.f90
+++ b/flang/test/Lower/Intrinsics/ishftc.f90
@@ -1,50 +1,56 @@
-! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
 
-! CHECK-LABEL: ishftc_test
+! CHECK-LABEL: func.func @_QPishftc_test(
+! CHECK-SAME:  %[[I_ARG:.*]]: !fir.ref<i32> {fir.bindc_name = "i"},
+! CHECK-SAME:  %[[J_ARG:.*]]: !fir.ref<i32> {fir.bindc_name = "j"},
+! CHECK-SAME:  %[[K_ARG:.*]]: !fir.ref<i32> {fir.bindc_name = "k"}) -> i32 {
 function ishftc_test(i, j, k)
-    ! CHECK-DAG: %[[result:.*]] = fir.alloca i32 {bindc_name = "ishftc_test"
-    ! CHECK-DAG: %[[i:.*]] = fir.load %arg0 : !fir.ref<i32>
-    ! CHECK-DAG: %[[j:.*]] = fir.load %arg1 : !fir.ref<i32>
-    ! CHECK-DAG: %[[k:.*]] = fir.load %arg2 : !fir.ref<i32>
-    ! CHECK-DAG: %[[VAL_7:.*]] = arith.constant 32 : i32
-    ! CHECK-DAG: %[[VAL_8:.*]] = arith.constant 0 : i32
-    ! CHECK-DAG: %[[VAL_9:.*]] = arith.constant -1 : i32
-    ! CHECK-DAG: %[[VAL_10:.*]] = arith.constant 31 : i32
-    ! CHECK: %[[VAL_11:.*]] = arith.shrsi %[[j]], %[[VAL_10]] : i32
-    ! CHECK: %[[VAL_12:.*]] = arith.xori %[[j]], %[[VAL_11]] : i32
-    ! CHECK: %[[VAL_13:.*]] = arith.subi %[[VAL_12]], %[[VAL_11]] : i32
-    ! CHECK: %[[VAL_14:.*]] = arith.subi %[[k]], %[[VAL_13]] : i32
-    ! CHECK: %[[VAL_15:.*]] = arith.cmpi eq, %[[j]], %[[VAL_8]] : i32
-    ! CHECK: %[[VAL_16:.*]] = arith.cmpi eq, %[[VAL_13]], %[[k]] : i32
-    ! CHECK: %[[VAL_17:.*]] = arith.ori %[[VAL_15]], %[[VAL_16]] : i1
-    ! CHECK: %[[VAL_18:.*]] = arith.cmpi sgt, %[[j]], %[[VAL_8]] : i32
-    ! CHECK: %[[VAL_19:.*]] = arith.select %[[VAL_18]], %[[VAL_13]], %[[VAL_14]] : i32
-    ! CHECK: %[[VAL_20:.*]] = arith.select %[[VAL_18]], %[[VAL_14]], %[[VAL_13]] : i32
-    ! CHECK: %[[VAL_21:.*]] = arith.cmpi ne, %[[k]], %[[VAL_7]] : i32
-    ! CHECK: %[[VAL_22:.*]] = arith.shrui %[[i]], %[[k]] : i32
-    ! CHECK: %[[VAL_23:.*]] = arith.shli %[[VAL_22]], %[[k]] : i32
-    ! CHECK: %[[VAL_24:.*]] = arith.select %[[VAL_21]], %[[VAL_23]], %[[VAL_8]] : i32
-    ! CHECK: %[[VAL_25:.*]] = arith.subi %[[VAL_7]], %[[VAL_19]] : i32
-    ! CHECK: %[[VAL_26:.*]] = arith.shrui %[[VAL_9]], %[[VAL_25]] : i32
-    ! CHECK: %[[VAL_27:.*]] = arith.shrui %[[i]], %[[VAL_20]] : i32
-    ! CHECK: %[[VAL_28:.*]] = arith.andi %[[VAL_27]], %[[VAL_26]] : i32
-    ! CHECK: %[[VAL_29:.*]] = arith.subi %[[VAL_7]], %[[VAL_20]] : i32
-    ! CHECK: %[[VAL_30:.*]] = arith.shrui %[[VAL_9]], %[[VAL_29]] : i32
-    ! CHECK: %[[VAL_31:.*]] = arith.andi %[[i]], %[[VAL_30]] : i32
-    ! CHECK: %[[VAL_32:.*]] = arith.shli %[[VAL_31]], %[[VAL_19]] : i32
-    ! CHECK: %[[VAL_33:.*]] = arith.ori %[[VAL_24]], %[[VAL_28]] : i32
-    ! CHECK: %[[VAL_34:.*]] = arith.ori %[[VAL_33]], %[[VAL_32]] : i32
-    ! CHECK: %[[VAL_35:.*]] = arith.select %[[VAL_17]], %[[i]], %[[VAL_34]] : i32
-    ! CHECK: fir.store %[[VAL_35]] to %[[result]] : !fir.ref<i32>
-    ! CHECK: %[[VAL_36:.*]] = fir.load %[[result]] : !fir.ref<i32>
-    ! CHECK: return %[[VAL_36]] : i32
-    ishftc_test = ishftc(i, j, k)
-  end
+! CHECK-DAG: %[[I:.*]]:2 = hlfir.declare %[[I_ARG]]
+! CHECK-DAG: %[[result:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFishftc_testEishftc_test"}
+! CHECK-DAG: %[[J:.*]]:2 = hlfir.declare %[[J_ARG]]
+! CHECK-DAG: %[[K:.*]]:2 = hlfir.declare %[[K_ARG]]
+! CHECK-DAG: %[[i:.*]] = fir.load %[[I]]#0 : !fir.ref<i32>
+! CHECK-DAG: %[[j:.*]] = fir.load %[[J]]#0 : !fir.ref<i32>
+! CHECK-DAG: %[[k:.*]] = fir.load %[[K]]#0 : !fir.ref<i32>
+! CHECK-DAG: %[[VAL_7:.*]] = arith.constant 32 : i32
+! CHECK-DAG: %[[VAL_8:.*]] = arith.constant 0 : i32
+! CHECK-DAG: %[[VAL_9:.*]] = arith.constant -1 : i32
+! CHECK-DAG: %[[VAL_10:.*]] = arith.constant 31 : i32
+! CHECK: %[[VAL_11:.*]] = arith.shrsi %[[j]], %[[VAL_10]] : i32
+! CHECK: %[[VAL_12:.*]] = arith.xori %[[j]], %[[VAL_11]] : i32
+! CHECK: %[[VAL_13:.*]] = arith.subi %[[VAL_12]], %[[VAL_11]] : i32
+! CHECK: %[[VAL_14:.*]] = arith.subi %[[k]], %[[VAL_13]] : i32
+! CHECK: %[[VAL_15:.*]] = arith.cmpi eq, %[[j]], %[[VAL_8]] : i32
+! CHECK: %[[VAL_16:.*]] = arith.cmpi eq, %[[VAL_13]], %[[k]] : i32
+! CHECK: %[[VAL_17:.*]] = arith.ori %[[VAL_15]], %[[VAL_16]] : i1
+! CHECK: %[[VAL_18:.*]] = arith.cmpi sgt, %[[j]], %[[VAL_8]] : i32
+! CHECK: %[[VAL_19:.*]] = arith.select %[[VAL_18]], %[[VAL_13]], %[[VAL_14]] : i32
+! CHECK: %[[VAL_20:.*]] = arith.select %[[VAL_18]], %[[VAL_14]], %[[VAL_13]] : i32
+! CHECK: %[[VAL_21:.*]] = arith.cmpi ne, %[[k]], %[[VAL_7]] : i32
+! CHECK: %[[VAL_22:.*]] = arith.shrui %[[i]], %[[k]] : i32
+! CHECK: %[[VAL_23:.*]] = arith.shli %[[VAL_22]], %[[k]] : i32
+! CHECK: %[[VAL_24:.*]] = arith.select %[[VAL_21]], %[[VAL_23]], %[[VAL_8]] : i32
+! CHECK: %[[VAL_25:.*]] = arith.subi %[[VAL_7]], %[[VAL_19]] : i32
+! CHECK: %[[VAL_26:.*]] = arith.shrui %[[VAL_9]], %[[VAL_25]] : i32
+! CHECK: %[[VAL_27:.*]] = arith.shrui %[[i]], %[[VAL_20]] : i32
+! CHECK: %[[VAL_28:.*]] = arith.andi %[[VAL_27]], %[[VAL_26]] : i32
+! CHECK: %[[VAL_29:.*]] = arith.subi %[[VAL_7]], %[[VAL_20]] : i32
+! CHECK: %[[VAL_30:.*]] = arith.shrui %[[VAL_9]], %[[VAL_29]] : i32
+! CHECK: %[[VAL_31:.*]] = arith.andi %[[i]], %[[VAL_30]] : i32
+! CHECK: %[[VAL_32:.*]] = arith.shli %[[VAL_31]], %[[VAL_19]] : i32
+! CHECK: %[[VAL_33:.*]] = arith.ori %[[VAL_24]], %[[VAL_28]] : i32
+! CHECK: %[[VAL_34:.*]] = arith.ori %[[VAL_33]], %[[VAL_32]] : i32
+! CHECK: %[[VAL_35:.*]] = arith.select %[[VAL_17]], %[[i]], %[[VAL_34]] : i32
+! CHECK: hlfir.assign %[[VAL_35]] to %[[result]]#0 : i32, !fir.ref<i32>
+! CHECK: %[[VAL_36:.*]] = fir.load %[[result]]#0 : !fir.ref<i32>
+! CHECK: return %[[VAL_36]] : i32
+  ishftc_test = ishftc(i, j, k)
+end
 
   ! Test cases where the size argument presence can only be know at runtime
   module test_ishftc
   contains
-  ! CHECK-LABEL: func @_QMtest_ishftcPdyn_optional_scalar(
+  ! CHECK-LABEL: func.func @_QMtest_ishftcPdyn_optional_scalar(
   ! CHECK-SAME:  %[[VAL_0:.*]]: !fir.ref<i32> {fir.bindc_name = "i"},
   ! CHECK-SAME:  %[[VAL_1:.*]]: !fir.ref<i32> {fir.bindc_name = "shift"},
   ! CHECK-SAME:  %[[VAL_2:.*]]: !fir.ref<i32> {fir.bindc_name = "size", fir.optional}) {
@@ -52,70 +58,80 @@ subroutine dyn_optional_scalar(i, shift, size)
     integer, optional :: size
     integer :: i, shift
     print *, ishftc(i, shift, size)
-    ! CHECK:  %[[VAL_8:.*]] = fir.load %[[VAL_0]] : !fir.ref<i32>
-    ! CHECK:  %[[VAL_9:.*]] = fir.load %[[VAL_1]] : !fir.ref<i32>
-    ! CHECK:  %[[VAL_10:.*]] = fir.is_present %[[VAL_2]] : (!fir.ref<i32>) -> i1
-    ! CHECK:  %[[VAL_11:.*]] = fir.if %[[VAL_10]] -> (i32) {
-    ! CHECK:    %[[VAL_12:.*]] = fir.load %[[VAL_2]] : !fir.ref<i32>
-    ! CHECK:    fir.result %[[VAL_12]] : i32
+    ! CHECK:  %[[I:.*]]:2 = hlfir.declare %[[VAL_0]]
+    ! CHECK:  %[[SHIFT:.*]]:2 = hlfir.declare %[[VAL_1]]
+    ! CHECK:  %[[SIZE:.*]]:2 = hlfir.declare %[[VAL_2]] {{.*}} {fortran_attrs = #fir.var_attrs<optional>
+    ! CHECK:  %[[I_VAL:.*]] = fir.load %[[I]]#0 : !fir.ref<i32>
+    ! CHECK:  %[[SHIFT_VAL:.*]] = fir.load %[[SHIFT]]#0 : !fir.ref<i32>
+    ! CHECK:  %[[IS_PRESENT:.*]] = fir.is_present %[[SIZE]]#0 : (!fir.ref<i32>) -> i1
+    ! CHECK:  %[[SIZE_VAL:.*]] = fir.if %[[IS_PRESENT]] -> (i32) {
+    ! CHECK:    %[[LOADED:.*]] = fir.load %[[SIZE]]#0 : !fir.ref<i32>
+    ! CHECK:    fir.result %[[LOADED]] : i32
     ! CHECK:  } else {
-    ! CHECK:    %[[VAL_13:.*]] = arith.constant 32 : i32
-    ! CHECK:    fir.result %[[VAL_13]] : i32
+    ! CHECK:    %[[DEFAULT:.*]] = arith.constant 32 : i32
+    ! CHECK:    fir.result %[[DEFAULT]] : i32
     ! CHECK:  }
-    ! CHECK:  %[[VAL_17:.*]] = arith.constant 31 : i32
-    ! CHECK:  %[[VAL_18:.*]] = arith.shrsi %[[VAL_9]], %[[VAL_17]] : i32
-    ! CHECK:  %[[VAL_19:.*]] = arith.xori %[[VAL_9]], %[[VAL_18]] : i32
+    ! CHECK:  %[[c31:.*]] = arith.constant 31 : i32
+    ! CHECK:  %[[VAL_18:.*]] = arith.shrsi %[[SHIFT_VAL]], %[[c31]] : i32
+    ! CHECK:  %[[VAL_19:.*]] = arith.xori %[[SHIFT_VAL]], %[[VAL_18]] : i32
     ! CHECK:  %[[VAL_20:.*]] = arith.subi %[[VAL_19]], %[[VAL_18]] : i32
-    ! CHECK:  %[[VAL_21:.*]] = arith.subi %[[VAL_11]], %[[VAL_20]] : i32
+    ! CHECK:  %[[VAL_21:.*]] = arith.subi %[[SIZE_VAL]], %[[VAL_20]] : i32
     ! ... as in non optional case
   end subroutine
 
-  ! CHECK-LABEL: func @_QMtest_ishftcPdyn_optional_array_scalar(
+  ! CHECK-LABEL: func.func @_QMtest_ishftcPdyn_optional_array_scalar(
   ! CHECK-SAME:  %[[VAL_0:.*]]: !fir.box<!fir.array<?xi32>> {fir.bindc_name = "i"},
   ! CHECK-SAME:  %[[VAL_1:.*]]: !fir.box<!fir.array<?xi32>> {fir.bindc_name = "shift"},
   ! CHECK-SAME:  %[[VAL_2:.*]]: !fir.ref<i32> {fir.bindc_name = "size", fir.optional}) {
   subroutine dyn_optional_array_scalar(i, shift, size)
     integer, optional :: size
     integer :: i(:), shift(:)
-  ! CHECK:  %[[VAL_10:.*]] = fir.array_load %[[VAL_0]] : (!fir.box<!fir.array<?xi32>>) -> !fir.array<?xi32>
-  ! CHECK:  %[[VAL_11:.*]] = fir.array_load %[[VAL_1]] : (!fir.box<!fir.array<?xi32>>) -> !fir.array<?xi32>
-  ! CHECK:  %[[VAL_12:.*]] = fir.is_present %[[VAL_2]] : (!fir.ref<i32>) -> i1
-  ! CHECK:  fir.do_loop %[[VAL_20:.*]] = %{{.*}} to %{{.*}}
-  ! CHECK:    %[[VAL_22:.*]] = fir.array_fetch %[[VAL_10]], %[[VAL_20]] : (!fir.array<?xi32>, index) -> i32
-  ! CHECK:    %[[VAL_23:.*]] = fir.array_fetch %[[VAL_11]], %[[VAL_20]] : (!fir.array<?xi32>, index) -> i32
-  ! CHECK:    %[[VAL_24:.*]] = fir.if %[[VAL_12]] -> (i32) {
-  ! CHECK:      %[[VAL_25:.*]] = fir.load %[[VAL_2]] : !fir.ref<i32>
-  ! CHECK:      fir.result %[[VAL_25]] : i32
+  ! CHECK:  %[[I:.*]]:2 = hlfir.declare %[[VAL_0]]
+  ! CHECK:  %[[SHIFT:.*]]:2 = hlfir.declare %[[VAL_1]]
+  ! CHECK:  %[[SIZE:.*]]:2 = hlfir.declare %[[VAL_2]] {{.*}} {fortran_attrs = #fir.var_attrs<optional>
+  ! CHECK:  %[[IS_PRESENT:.*]] = fir.is_present %[[SIZE]]#0 : (!fir.ref<i32>) -> i1
+  ! CHECK:  %[[ELEMENTAL:.*]] = hlfir.elemental %{{.*}} unordered : (!fir.shape<1>) -> !hlfir.expr<?xi32> {
+  ! CHECK:  ^bb0(%[[IDX:.*]]: index):
+  ! CHECK:    %[[I_ELEM:.*]] = hlfir.designate %[[I]]#0 (%[[IDX]])
+  ! CHECK:    %[[I_VAL:.*]] = fir.load %[[I_ELEM]] : !fir.ref<i32>
+  ! CHECK:    %[[S_ELEM:.*]] = hlfir.designate %[[SHIFT]]#0 (%[[IDX]])
+  ! CHECK:    %[[S_VAL:.*]] = fir.load %[[S_ELEM]] : !fir.ref<i32>
+  ! CHECK:    %[[SIZE_VAL:.*]] = fir.if %[[IS_PRESENT]] -> (i32) {
+  ! CHECK:      %[[LOADED:.*]] = fir.load %[[SIZE]]#0 : !fir.ref<i32>
+  ! CHECK:      fir.result %[[LOADED]] : i32
   ! CHECK:    } else {
-  ! CHECK:      %[[VAL_26:.*]] = arith.constant 32 : i32
-  ! CHECK:      fir.result %[[VAL_26]] : i32
+  ! CHECK:      %[[DEFAULT:.*]] = arith.constant 32 : i32
+  ! CHECK:      fir.result %[[DEFAULT]] : i32
   ! CHECK:    }
   ! ... as in non optional case
   ! CHECK:  }
     print *, ishftc(i, shift, size)
   end subroutine
 
-  ! CHECK-LABEL: func @_QMtest_ishftcPdyn_optional_array(
+  ! CHECK-LABEL: func.func @_QMtest_ishftcPdyn_optional_array(
   ! CHECK-SAME:  %[[VAL_0:.*]]: !fir.box<!fir.array<?xi32>> {fir.bindc_name = "i"},
   ! CHECK-SAME:  %[[VAL_1:.*]]: !fir.box<!fir.array<?xi32>> {fir.bindc_name = "shift"},
   ! CHECK-SAME:  %[[VAL_2:.*]]: !fir.box<!fir.array<?xi32>> {fir.bindc_name = "size", fir.optional}) {
   subroutine dyn_optional_array(i, shift, size)
     integer, optional :: size(:)
     integer :: i(:), shift(:)
-  ! CHECK:  %[[VAL_10:.*]] = fir.array_load %[[VAL_0]] : (!fir.box<!fir.array<?xi32>>) -> !fir.array<?xi32>
-  ! CHECK:  %[[VAL_11:.*]] = fir.array_load %[[VAL_1]] : (!fir.box<!fir.array<?xi32>>) -> !fir.array<?xi32>
-  ! CHECK:  %[[VAL_12:.*]] = fir.is_present %[[VAL_2]] : (!fir.box<!fir.array<?xi32>>) -> i1
-  ! CHECK:  %[[VAL_17:.*]] = arith.select %[[VAL_12]], %[[VAL_2]], %{{.*}} : !fir.box<!fir.array<?xi32>>
-  ! CHECK:  %[[VAL_18:.*]] = fir.array_load %[[VAL_17]] {fir.optional} : (!fir.box<!fir.array<?xi32>>) -> !fir.array<?xi32>
-  ! CHECK:  fir.do_loop %[[VAL_26:.*]] = %{{.*}} to %{{.*}}
-  ! CHECK:    %[[VAL_28:.*]] = fir.array_fetch %[[VAL_10]], %[[VAL_26]] : (!fir.array<?xi32>, index) -> i32
-  ! CHECK:    %[[VAL_29:.*]] = fir.array_fetch %[[VAL_11]], %[[VAL_26]] : (!fir.array<?xi32>, index) -> i32
-  ! CHECK:    %[[VAL_30:.*]] = fir.if %[[VAL_12]] -> (i32) {
-  ! CHECK:      %[[VAL_31:.*]] = fir.array_fetch %[[VAL_18]], %[[VAL_26]] : (!fir.array<?xi32>, index) -> i32
-  ! CHECK:      fir.result %[[VAL_31]] : i32
+  ! CHECK:  %[[I:.*]]:2 = hlfir.declare %[[VAL_0]]
+  ! CHECK:  %[[SHIFT:.*]]:2 = hlfir.declare %[[VAL_1]]
+  ! CHECK:  %[[SIZE:.*]]:2 = hlfir.declare %[[VAL_2]] {{.*}} {fortran_attrs = #fir.var_attrs<optional>
+  ! CHECK:  %[[IS_PRESENT:.*]] = fir.is_present %[[SIZE]]#0 : (!fir.box<!fir.array<?xi32>>) -> i1
+  ! CHECK:  %[[ELEMENTAL:.*]] = hlfir.elemental %{{.*}} unordered : (!fir.shape<1>) -> !hlfir.expr<?xi32> {
+  ! CHECK:  ^bb0(%[[IDX:.*]]: index):
+  ! CHECK:    %[[I_ELEM:.*]] = hlfir.designate %[[I]]#0 (%[[IDX]])
+  ! CHECK:    %[[I_VAL:.*]] = fir.load %[[I_ELEM]] : !fir.ref<i32>
+  ! CHECK:    %[[S_ELEM:.*]] = hlfir.designate %[[SHIFT]]#0 (%[[IDX]])
+  ! CHECK:    %[[S_VAL:.*]] = fir.load %[[S_ELEM]] : !fir.ref<i32>
+  ! CHECK:    %[[SIZE_VAL:.*]] = fir.if %[[IS_PRESENT]] -> (i32) {
+  ! CHECK:      %[[SIZE_ELEM:.*]] = hlfir.designate %[[SIZE]]#0 (%[[IDX]])
+  ! CHECK:      %[[LOADED:.*]] = fir.load %[[SIZE_ELEM]] : !fir.ref<i32>
+  ! CHECK:      fir.result %[[LOADED]] : i32
   ! CHECK:    } else {
-  ! CHECK:      %[[VAL_32:.*]] = arith.constant 32 : i32
-  ! CHECK:      fir.result %[[VAL_32]] : i32
+  ! CHECK:      %[[DEFAULT:.*]] = arith.constant 32 : i32
+  ! CHECK:      fir.result %[[DEFAULT]] : i32
   ! CHECK:    }
   ! ... as in non optional case
   ! CHECK:    }

diff  --git a/flang/test/Lower/Intrinsics/lbound.f90 b/flang/test/Lower/Intrinsics/lbound.f90
index 75c11ff8bc95f..713f10351cba2 100644
--- a/flang/test/Lower/Intrinsics/lbound.f90
+++ b/flang/test/Lower/Intrinsics/lbound.f90
@@ -1,39 +1,46 @@
-! 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 @_QPlbound_test(
-! CHECK:  %[[VAL_0:.*]] = fir.load %arg1 : !fir.ref<i64>
-! CHECK:  %[[VAL_1:.*]] = fir.rebox %arg0 : (!fir.box<!fir.array<?x?xf32>>) -> !fir.box<!fir.array<?x?xf32>>
+! CHECK-LABEL: func.func @_QPlbound_test(
+! CHECK-SAME:  %[[VAL_0:.*]]: !fir.box<!fir.array<?x?xf32>> {fir.bindc_name = "a"},
+! CHECK-SAME:  %[[VAL_1:.*]]: !fir.ref<i64> {fir.bindc_name = "dim"},
+! CHECK-SAME:  %[[VAL_2:.*]]: !fir.ref<i64> {fir.bindc_name = "res"}) {
 subroutine lbound_test(a, dim, res)
   real, dimension(:, :) :: a
   integer(8):: dim, res
-! CHECK:         %[[VAL_2:.*]] = fir.address_of(
-! CHECK:         %[[VAL_3:.*]] = fir.convert %[[VAL_1]] : (!fir.box<!fir.array<?x?xf32>>) -> !fir.box<none>
-! CHECK:         %[[VAL_4:.*]] = fir.convert %[[VAL_0]] : (i64) -> i32
-! CHECK:         %[[VAL_5:.*]] = fir.convert %[[VAL_2]]
-! CHECK:         %[[VAL_6:.*]] = fir.call @_FortranALboundDim(%[[VAL_3]], %[[VAL_4]], %[[VAL_5]], %{{.*}}) {{.*}}: (!fir.box<none>, i32, !fir.ref<i8>, i32) -> i64
-! CHECK:         fir.store %[[VAL_6]] to %arg2 : !fir.ref<i64>
+! CHECK:         %[[A:.*]]:2 = hlfir.declare %[[VAL_0]]
+! CHECK:         %[[DIM:.*]]:2 = hlfir.declare %[[VAL_1]]
+! CHECK:         %[[RES:.*]]:2 = hlfir.declare %[[VAL_2]]
+! CHECK:         %[[DIM_VAL:.*]] = fir.load %[[DIM]]#0 : !fir.ref<i64>
+! CHECK:         %[[REBOX:.*]] = fir.rebox %[[A]]#1 : (!fir.box<!fir.array<?x?xf32>>) -> !fir.box<!fir.array<?x?xf32>>
+! CHECK:         %[[A_NONE:.*]] = fir.convert %[[REBOX]] : (!fir.box<!fir.array<?x?xf32>>) -> !fir.box<none>
+! CHECK:         %[[DIM_I32:.*]] = fir.convert %[[DIM_VAL]] : (i64) -> i32
+! CHECK:         %[[RESULT:.*]] = fir.call @_FortranALboundDim(%[[A_NONE]], %[[DIM_I32]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.box<none>, i32, !fir.ref<i8>, i32) -> i64
+! CHECK:         hlfir.assign %[[RESULT]] to %[[RES]]#0 : i64, !fir.ref<i64>
   res = lbound(a, dim, 8)
 end subroutine
 
-! CHECK-LABEL: func @_QPlbound_test_2(
-! CHECK:  %[[VAL_c1_i64:.*]] = arith.constant 1 : i64
-! CHECK:  %[[VAL_0:.*]] = fir.convert %[[VAL_c1_i64]] : (i64) -> index
-! CHECK:  %[[VAL_c2_i64:.*]] = arith.constant 2 : i64
-! CHECK:  %[[VAL_1:.*]] = fir.convert %[[VAL_c2_i64]] : (i64) -> index
-! CHECK:  %[[VAL_2:.*]] = fir.load %arg1 : !fir.ref<i64>
+! CHECK-LABEL: func.func @_QPlbound_test_2(
+! CHECK-SAME:  %[[VAL_0:.*]]: !fir.box<!fir.array<?x?xf32>> {fir.bindc_name = "a"},
+! CHECK-SAME:  %[[VAL_1:.*]]: !fir.ref<i64> {fir.bindc_name = "dim"},
+! CHECK-SAME:  %[[VAL_2:.*]]: !fir.ref<i64> {fir.bindc_name = "res"}) {
 subroutine lbound_test_2(a, dim, res)
   real, dimension(:, 2:) :: a
   integer(8):: dim, res
-! CHECK:  %[[VAL_3:.*]] = fir.shift %[[VAL_0]], %[[VAL_1]] : (index, index) -> !fir.shift<2>
-! CHECK:  %[[VAL_4:.*]] = fir.rebox %arg0(%[[VAL_3]]) : (!fir.box<!fir.array<?x?xf32>>, !fir.shift<2>) -> !fir.box<!fir.array<?x?xf32>>
-! CHECK:  %[[VAL_5:.*]] = fir.address_of(
-! CHECK:  %[[VAL_6:.*]] = fir.convert %[[VAL_4]] : (!fir.box<!fir.array<?x?xf32>>) -> !fir.box<none>
-! CHECK:  %[[VAL_7:.*]] = fir.convert %[[VAL_2]] : (i64) -> i32
-! CHECK:  %[[VAL_8:.*]] = fir.convert %[[VAL_5]]
-! CHECK:  %[[VAL_9:.*]] = fir.call @_FortranALboundDim(%[[VAL_6]], %[[VAL_7]], %[[VAL_8]], %{{.*}}) {{.*}}: (!fir.box<none>, i32, !fir.ref<i8>, i32) -> i64
-! CHECK:         fir.store %[[VAL_9]] to %arg2 : !fir.ref<i64>
+! CHECK:  %[[c1_i64:.*]] = arith.constant 1 : i64
+! CHECK:  %[[IDX1:.*]] = fir.convert %[[c1_i64]] : (i64) -> index
+! CHECK:  %[[c2_i64:.*]] = arith.constant 2 : i64
+! CHECK:  %[[IDX2:.*]] = fir.convert %[[c2_i64]] : (i64) -> index
+! CHECK:  %[[A:.*]]:2 = hlfir.declare %[[VAL_0]](%{{.*}})
+! CHECK:  %[[DIM:.*]]:2 = hlfir.declare %[[VAL_1]]
+! CHECK:  %[[RES:.*]]:2 = hlfir.declare %[[VAL_2]]
+! CHECK:  %[[DIM_VAL:.*]] = fir.load %[[DIM]]#0 : !fir.ref<i64>
+! CHECK:  %[[SHIFT:.*]] = fir.shift %[[IDX1]], %[[IDX2]] : (index, index) -> !fir.shift<2>
+! CHECK:  %[[REBOX:.*]] = fir.rebox %[[A]]#1(%[[SHIFT]]) : (!fir.box<!fir.array<?x?xf32>>, !fir.shift<2>) -> !fir.box<!fir.array<?x?xf32>>
+! CHECK:  %[[A_NONE:.*]] = fir.convert %[[REBOX]] : (!fir.box<!fir.array<?x?xf32>>) -> !fir.box<none>
+! CHECK:  %[[DIM_I32:.*]] = fir.convert %[[DIM_VAL]] : (i64) -> i32
+! CHECK:  %[[RESULT:.*]] = fir.call @_FortranALboundDim(%[[A_NONE]], %[[DIM_I32]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.box<none>, i32, !fir.ref<i8>, i32) -> i64
+! CHECK:         hlfir.assign %[[RESULT]] to %[[RES]]#0 : i64, !fir.ref<i64>
   res = lbound(a, dim, 8)
 end subroutine
 
@@ -41,19 +48,18 @@ subroutine lbound_test_3(a, dim, res)
   real, dimension(2:10, 3:*) :: a
   integer(8):: dim, res
 ! CHECK:  %[[VAL_0:.*]] = fir.assumed_size_extent : index
-! CHECK:  %[[VAL_1:.*]] = fir.load %arg1 : !fir.ref<i64>
-! CHECK:  %[[VAL_2:.*]] = fir.shape_shift %{{.*}}, %{{.*}}, %{{.*}}, %[[VAL_0]] : (index, index, index, index) -> !fir.shapeshift<2>
-! CHECK:         %[[VAL_3:.*]] = fir.embox %arg0(%[[VAL_2]]) : (!fir.ref<!fir.array<9x?xf32>>, !fir.shapeshift<2>) -> !fir.box<!fir.array<9x?xf32>>
-! CHECK:         %[[VAL_4:.*]] = fir.address_of(
-! CHECK:         %[[VAL_5:.*]] = fir.convert %[[VAL_3]] : (!fir.box<!fir.array<9x?xf32>>) -> !fir.box<none>
-! CHECK:         %[[VAL_6:.*]] = fir.convert %[[VAL_1]] : (i64) -> i32
-! CHECK:         %[[VAL_7:.*]] = fir.convert %[[VAL_4]]
-! CHECK:         %[[VAL_8:.*]] = fir.call @_FortranALboundDim(%[[VAL_5]], %[[VAL_6]], %[[VAL_7]], %{{.*}}) {{.*}}: (!fir.box<none>, i32, !fir.ref<i8>, i32) -> i64
-! CHECK:         fir.store %[[VAL_8]] to %arg2 : !fir.ref<i64>
+! CHECK:  %[[DIM:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFlbound_test_3Edim"}
+! CHECK:  %[[DIM_VAL:.*]] = fir.load %[[DIM]]#0 : !fir.ref<i64>
+! CHECK:  %[[SHAPESHIFT:.*]] = fir.shape_shift %{{.*}}, %{{.*}}, %{{.*}}, %[[VAL_0]] : (index, index, index, index) -> !fir.shapeshift<2>
+! CHECK:         %[[EMBOX:.*]] = fir.embox %{{.*}}(%[[SHAPESHIFT]]) : (!fir.ref<!fir.array<9x?xf32>>, !fir.shapeshift<2>) -> !fir.box<!fir.array<9x?xf32>>
+! CHECK:         %[[A_NONE:.*]] = fir.convert %[[EMBOX]] : (!fir.box<!fir.array<9x?xf32>>) -> !fir.box<none>
+! CHECK:         %[[DIM_I32:.*]] = fir.convert %[[DIM_VAL]] : (i64) -> i32
+! CHECK:         %[[RESULT:.*]] = fir.call @_FortranALboundDim(%[[A_NONE]], %[[DIM_I32]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.box<none>, i32, !fir.ref<i8>, i32) -> i64
+! CHECK:         hlfir.assign %[[RESULT]] to %{{.*}}#0 : i64, !fir.ref<i64>
   res = lbound(a, dim, 8)
 end subroutine
 
-! CHECK-LABEL: func @_QPlbound_test_4(
+! CHECK-LABEL: func.func @_QPlbound_test_4(
 ! CHECK-SAME:  %[[VAL_0:.*]]: !fir.ref<!fir.array<?x?xf32>> {fir.bindc_name = "a"},
 ! CHECK-SAME:  %[[VAL_1:.*]]: !fir.ref<i64> {fir.bindc_name = "dim"},
 ! CHECK-SAME:  %[[VAL_2:.*]]: !fir.ref<i64> {fir.bindc_name = "l1"},
@@ -62,33 +68,37 @@ subroutine lbound_test_3(a, dim, res)
 ! CHECK-SAME:  %[[VAL_5:.*]]: !fir.ref<i64> {fir.bindc_name = "u2"}) {
 subroutine lbound_test_4(a, dim, l1, u1, l2, u2)
   integer(8):: dim, l1, u1, l2, u2
-! CHECK:  %[[VAL_6:.*]] = fir.alloca !fir.array<2xi32>
-! CHECK:  %[[VAL_7:.*]] = fir.load %[[VAL_2]] : !fir.ref<i64>
-! CHECK:  %[[VAL_8:.*]] = fir.convert %[[VAL_7]] : (i64) -> index
-! CHECK:  %[[VAL_17:.*]] = fir.load %[[VAL_4]] : !fir.ref<i64>
-! CHECK:  %[[VAL_18:.*]] = fir.convert %[[VAL_17]] : (i64) -> index
+! CHECK:  %[[TMP:.*]] = fir.alloca !fir.array<2xi32>
+! CHECK-DAG:  %[[L1:.*]]:2 = hlfir.declare %[[VAL_2]] {{.*}} {uniq_name = "_QFlbound_test_4El1"}
+! CHECK-DAG:  %[[L2:.*]]:2 = hlfir.declare %[[VAL_4]] {{.*}} {uniq_name = "_QFlbound_test_4El2"}
   real, dimension(l1:u1, l2:u2) :: a
 ! BeginExternalListOutput
-! CHECK:  %[[VAL_32:.*]] = arith.constant 1 : i32
-! CHECK:  %[[VAL_33:.*]] = arith.constant 0 : index
-! CHECK:  %[[VAL_34:.*]] = arith.cmpi eq, %[[VAL_16:.*]], %[[VAL_33]] : index
-! CHECK:  %[[VAL_35:.*]] = fir.convert %[[VAL_32]] : (i32) -> index
-! CHECK:  %[[VAL_36:.*]] = arith.select %[[VAL_34]], %[[VAL_35]], %[[VAL_8]] : index
-! CHECK:  %[[VAL_37:.*]] = fir.convert %[[VAL_36]] : (index) -> i32
-! CHECK:  %[[VAL_38:.*]] = arith.constant 0 : index
-! CHECK:  %[[VAL_39:.*]] = fir.coordinate_of %[[VAL_6]], %[[VAL_38]] : (!fir.ref<!fir.array<2xi32>>, index) -> !fir.ref<i32>
-! CHECK:  fir.store %[[VAL_37]] to %[[VAL_39]] : !fir.ref<i32>
-! CHECK:  %[[VAL_40:.*]] = arith.cmpi eq, %[[VAL_26:.*]], %[[VAL_33]] : index
-! CHECK:  %[[VAL_41:.*]] = fir.convert %[[VAL_32]] : (i32) -> index
-! CHECK:  %[[VAL_42:.*]] = arith.select %[[VAL_40]], %[[VAL_41]], %[[VAL_18]] : index
-! CHECK:  %[[VAL_43:.*]] = fir.convert %[[VAL_42]] : (index) -> i32
-! CHECK:  %[[VAL_44:.*]] = arith.constant 1 : index
-! CHECK:  %[[VAL_45:.*]] = fir.coordinate_of %[[VAL_6]], %[[VAL_44]] : (!fir.ref<!fir.array<2xi32>>, index) -> !fir.ref<i32>
-! CHECK:  fir.store %[[VAL_43]] to %[[VAL_45]] : !fir.ref<i32>
-! CHECK:  %[[VAL_46:.*]] = arith.constant 2 : index
-! CHECK:  %[[VAL_47:.*]] = fir.shape %[[VAL_46]] : (index) -> !fir.shape<1>
-! CHECK:  %[[VAL_48:.*]] = fir.embox %[[VAL_6]](%[[VAL_47]]) : (!fir.ref<!fir.array<2xi32>>, !fir.shape<1>) -> !fir.box<!fir.array<2xi32>>
-! CHECK:  %[[VAL_49:.*]] = fir.convert %[[VAL_48]] : (!fir.box<!fir.array<2xi32>>) -> !fir.box<none>
-! CHECK: fir.call @_FortranAioOutputDescriptor(%{{.*}}, %[[VAL_49]]) {{.*}}: (!fir.ref<i8>, !fir.box<none>) -> i1
+! CHECK:  %[[L1_VAL:.*]] = fir.load %[[L1]]#0 : !fir.ref<i64>
+! CHECK:  %[[L1_IDX:.*]] = fir.convert %[[L1_VAL]] : (i64) -> index
+! CHECK:  %[[L2_VAL:.*]] = fir.load %[[L2]]#0 : !fir.ref<i64>
+! CHECK:  %[[L2_IDX:.*]] = fir.convert %[[L2_VAL]] : (i64) -> index
+! CHECK:  %[[c1_i32:.*]] = arith.constant 1 : i32
+! CHECK:  %[[c0:.*]] = arith.constant 0 : index
+! CHECK:  %[[EQ1:.*]] = arith.cmpi eq, %[[SIZE1:.*]], %[[c0]] : index
+! CHECK:  %[[L1_AS_IDX:.*]] = fir.convert %[[c1_i32]] : (i32) -> index
+! CHECK:  %[[LB1:.*]] = arith.select %[[EQ1]], %[[L1_AS_IDX]], %[[L1_IDX]] : index
+! CHECK:  %[[LB1_I32:.*]] = fir.convert %[[LB1]] : (index) -> i32
+! CHECK:  %[[c0_idx:.*]] = arith.constant 0 : index
+! CHECK:  %[[COORD1:.*]] = fir.coordinate_of %[[TMP]], %[[c0_idx]] : (!fir.ref<!fir.array<2xi32>>, index) -> !fir.ref<i32>
+! CHECK:  fir.store %[[LB1_I32]] to %[[COORD1]] : !fir.ref<i32>
+! CHECK:  %[[EQ2:.*]] = arith.cmpi eq, %[[SIZE2:.*]], %[[c0]] : index
+! CHECK:  %[[LB2:.*]] = arith.select %[[EQ2]], %{{.*}}, %[[L2_IDX]] : index
+! CHECK:  %[[LB2_I32:.*]] = fir.convert %[[LB2]] : (index) -> i32
+! CHECK:  %[[c1_idx:.*]] = arith.constant 1 : index
+! CHECK:  %[[COORD2:.*]] = fir.coordinate_of %[[TMP]], %[[c1_idx]] : (!fir.ref<!fir.array<2xi32>>, index) -> !fir.ref<i32>
+! CHECK:  fir.store %[[LB2_I32]] to %[[COORD2]] : !fir.ref<i32>
+! CHECK:  %[[c2:.*]] = arith.constant 2 : index
+! CHECK:  %[[SHAPE:.*]] = fir.shape %[[c2]] : (index) -> !fir.shape<1>
+! CHECK:  %[[TMPDECL:.*]]:2 = hlfir.declare %[[TMP]](%[[SHAPE]]) {uniq_name = ".tmp.intrinsic_result"}
+! CHECK:  %[[EXPR:.*]] = hlfir.as_expr %[[TMPDECL]]#0 move %{{.*}} : (!fir.ref<!fir.array<2xi32>>, i1) -> !hlfir.expr<2xi32>
+! CHECK:  %[[ASSOC:.*]]:3 = hlfir.associate %[[EXPR]](%[[SHAPE]]) {adapt.valuebyref}
+! CHECK:  %[[EMBOX:.*]] = fir.embox %[[ASSOC]]#0(%{{.*}}) : (!fir.ref<!fir.array<2xi32>>, !fir.shape<1>) -> !fir.box<!fir.array<2xi32>>
+! CHECK:  %[[NONE:.*]] = fir.convert %[[EMBOX]] : (!fir.box<!fir.array<2xi32>>) -> !fir.box<none>
+! CHECK: fir.call @_FortranAioOutputDescriptor(%{{.*}}, %[[NONE]]) {{.*}}: (!fir.ref<i8>, !fir.box<none>) -> i1
   print *, lbound(a, kind=4)
 end subroutine

diff  --git a/flang/test/Lower/Intrinsics/leadz.f90 b/flang/test/Lower/Intrinsics/leadz.f90
index 181a8fdc4a4b1..7b1841f14950a 100644
--- a/flang/test/Lower/Intrinsics/leadz.f90
+++ b/flang/test/Lower/Intrinsics/leadz.f90
@@ -1,66 +1,75 @@
-! 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: leadz1_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i8>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPleadz1_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i8>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
 subroutine leadz1_test(a, b)
   integer(1) :: a
   integer :: b
 
-  ! CHECK:  %[[AVAL:.*]] = fir.load %[[AREF]] : !fir.ref<i8>
+! CHECK-DAG: %[[A:.*]]:2 = hlfir.declare %[[AREF]]
+! CHECK-DAG: %[[B:.*]]:2 = hlfir.declare %[[BREF]]
   b = leadz(a)
-  ! CHECK:  %[[COUNT:.*]] = math.ctlz %[[AVAL]] : i8
-  ! CHECK:  %[[RESULT:.*]] = fir.convert %[[COUNT]] : (i8) -> i32
-  ! CHECK:  fir.store %[[RESULT]] to %[[BREF]] : !fir.ref<i32>
+! CHECK-DAG:  %[[AVAL:.*]] = fir.load %[[A]]#0 : !fir.ref<i8>
+! CHECK:  %[[COUNT:.*]] = math.ctlz %[[AVAL]] : i8
+! CHECK:  %[[RESULT:.*]] = fir.convert %[[COUNT]] : (i8) -> i32
+! CHECK:  hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
 end subroutine leadz1_test
 
-! CHECK-LABEL: leadz2_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i16>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPleadz2_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i16>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
 subroutine leadz2_test(a, b)
   integer(2) :: a
   integer :: b
 
-  ! CHECK:  %[[AVAL:.*]] = fir.load %[[AREF]] : !fir.ref<i16>
+! CHECK-DAG: %[[A:.*]]:2 = hlfir.declare %[[AREF]]
+! CHECK-DAG: %[[B:.*]]:2 = hlfir.declare %[[BREF]]
   b = leadz(a)
-  ! CHECK:  %[[COUNT:.*]] = math.ctlz %[[AVAL]] : i16
-  ! CHECK:  %[[RESULT:.*]] = fir.convert %[[COUNT]] : (i16) -> i32
-  ! CHECK:  fir.store %[[RESULT]] to %[[BREF]] : !fir.ref<i32>
+! CHECK-DAG:  %[[AVAL:.*]] = fir.load %[[A]]#0 : !fir.ref<i16>
+! CHECK:  %[[COUNT:.*]] = math.ctlz %[[AVAL]] : i16
+! CHECK:  %[[RESULT:.*]] = fir.convert %[[COUNT]] : (i16) -> i32
+! CHECK:  hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
 end subroutine leadz2_test
 
-! CHECK-LABEL: leadz4_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i32>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPleadz4_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i32>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
 subroutine leadz4_test(a, b)
   integer(4) :: a
   integer :: b
 
-  ! CHECK:  %[[AVAL:.*]] = fir.load %[[AREF]] : !fir.ref<i32>
+! CHECK-DAG: %[[A:.*]]:2 = hlfir.declare %[[AREF]]
+! CHECK-DAG: %[[B:.*]]:2 = hlfir.declare %[[BREF]]
   b = leadz(a)
-  ! CHECK:  %[[RESULT:.*]] = math.ctlz %[[AVAL]] : i32
-  ! CHECK:  fir.store %[[RESULT]] to %[[BREF]] : !fir.ref<i32>
+! CHECK-DAG:  %[[AVAL:.*]] = fir.load %[[A]]#0 : !fir.ref<i32>
+! CHECK:  %[[RESULT:.*]] = math.ctlz %[[AVAL]] : i32
+! CHECK:  hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
 end subroutine leadz4_test
 
-! CHECK-LABEL: leadz8_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i64>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPleadz8_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i64>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
 subroutine leadz8_test(a, b)
   integer(8) :: a
   integer :: b
 
-  ! CHECK:  %[[AVAL:.*]] = fir.load %[[AREF]] : !fir.ref<i64>
+! CHECK-DAG: %[[A:.*]]:2 = hlfir.declare %[[AREF]]
+! CHECK-DAG: %[[B:.*]]:2 = hlfir.declare %[[BREF]]
   b = leadz(a)
-  ! CHECK:  %[[COUNT:.*]] = math.ctlz %[[AVAL]] : i64
-  ! CHECK:  %[[RESULT:.*]] = fir.convert %[[COUNT]] : (i64) -> i32
-  ! CHECK:  fir.store %[[RESULT]] to %[[BREF]] : !fir.ref<i32>
+! CHECK-DAG:  %[[AVAL:.*]] = fir.load %[[A]]#0 : !fir.ref<i64>
+! CHECK:  %[[COUNT:.*]] = math.ctlz %[[AVAL]] : i64
+! CHECK:  %[[RESULT:.*]] = fir.convert %[[COUNT]] : (i64) -> i32
+! CHECK:  hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
 end subroutine leadz8_test
 
-! CHECK-LABEL: leadz16_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i128>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPleadz16_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i128>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
 subroutine leadz16_test(a, b)
   integer(16) :: a
   integer :: b
 
-  ! CHECK:  %[[AVAL:.*]] = fir.load %[[AREF]] : !fir.ref<i128>
+! CHECK-DAG: %[[A:.*]]:2 = hlfir.declare %[[AREF]]
+! CHECK-DAG: %[[B:.*]]:2 = hlfir.declare %[[BREF]]
   b = leadz(a)
-  ! CHECK:  %[[COUNT:.*]] = math.ctlz %[[AVAL]] : i128
-  ! CHECK:  %[[RESULT:.*]] = fir.convert %[[COUNT]] : (i128) -> i32
-  ! CHECK:  fir.store %[[RESULT]] to %[[BREF]] : !fir.ref<i32>
+! CHECK-DAG:  %[[AVAL:.*]] = fir.load %[[A]]#0 : !fir.ref<i128>
+! CHECK:  %[[COUNT:.*]] = math.ctlz %[[AVAL]] : i128
+! CHECK:  %[[RESULT:.*]] = fir.convert %[[COUNT]] : (i128) -> i32
+! CHECK:  hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
 end subroutine leadz16_test


        


More information about the flang-commits mailing list