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

via flang-commits flang-commits at lists.llvm.org
Thu Apr 16 07:14:54 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: logical-operations.f90, loops2.f90, loops3.f90, memory-alloc.f90, zero-size.f90

---
Full diff: https://github.com/llvm/llvm-project/pull/192439.diff


5 Files Affected:

- (modified) flang/test/Lower/logical-operations.f90 (+37-34) 
- (modified) flang/test/Lower/loops2.f90 (+57-82) 
- (modified) flang/test/Lower/loops3.f90 (+14-5) 
- (modified) flang/test/Lower/memory-alloc.f90 (+7-5) 
- (modified) flang/test/Lower/zero-size.f90 (+8-8) 


``````````diff
diff --git a/flang/test/Lower/logical-operations.f90 b/flang/test/Lower/logical-operations.f90
index 445563ead0d28..089642a59d545 100644
--- a/flang/test/Lower/logical-operations.f90
+++ b/flang/test/Lower/logical-operations.f90
@@ -1,65 +1,68 @@
-! RUN: bbc -hlfir=false %s -o "-" | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
 
 ! Test logical intrinsic operation lowering to fir.
 
-! CHECK-LABEL:eqv0_test
+! CHECK-LABEL: func.func @_QPeqv0_test
 LOGICAL(1) FUNCTION eqv0_test(x0, x1)
 LOGICAL(1) :: x0
 LOGICAL(1) :: x1
-! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0
-! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1
-! CHECK-DAG:[[reg3:%[0-9]+]] = fir.convert [[reg1]] {{.*}} -> i1
-! CHECK-DAG:[[reg4:%[0-9]+]] = fir.convert [[reg2]] {{.*}} -> i1
-! CHECK:[[reg5:%[0-9]+]] = arith.cmpi eq, [[reg3]], [[reg4]]
-! CHECK:fir.convert [[reg5]] {{.*}} -> !fir.logical<1>
+! CHECK: %[[X0:.*]]:2 = hlfir.declare %arg0
+! CHECK: %[[X1:.*]]:2 = hlfir.declare %arg1
+! CHECK: %[[V0:.*]] = fir.load %[[X0]]#0 : !fir.ref<!fir.logical<1>>
+! CHECK: %[[V1:.*]] = fir.load %[[X1]]#0 : !fir.ref<!fir.logical<1>>
+! CHECK: %[[EQV:.*]] = fir.eqv %[[V0]], %[[V1]] : !fir.logical<1>
+! CHECK: hlfir.assign %[[EQV]]
 eqv0_test = x0 .EQV. x1
 END FUNCTION
 
-! CHECK-LABEL:neqv1_test
+! CHECK-LABEL: func.func @_QPneqv1_test
 LOGICAL(1) FUNCTION neqv1_test(x0, x1)
 LOGICAL(1) :: x0
 LOGICAL(1) :: x1
-! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0
-! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1
-! CHECK-DAG:[[reg3:%[0-9]+]] = fir.convert [[reg1]] {{.*}} -> i1
-! CHECK-DAG:[[reg4:%[0-9]+]] = fir.convert [[reg2]] {{.*}} -> i1
-! CHECK:[[reg5:%[0-9]+]] = arith.cmpi ne, [[reg3]], [[reg4]]
-! CHECK:fir.convert [[reg5]] {{.*}} -> !fir.logical<1>
+! CHECK: %[[X0:.*]]:2 = hlfir.declare %arg0
+! CHECK: %[[X1:.*]]:2 = hlfir.declare %arg1
+! CHECK: %[[V0:.*]] = fir.load %[[X0]]#0 : !fir.ref<!fir.logical<1>>
+! CHECK: %[[V1:.*]] = fir.load %[[X1]]#0 : !fir.ref<!fir.logical<1>>
+! CHECK: %[[NEQV:.*]] = fir.neqv %[[V0]], %[[V1]] : !fir.logical<1>
+! CHECK: hlfir.assign %[[NEQV]]
 neqv1_test = x0 .NEQV. x1
 END FUNCTION
 
-! CHECK-LABEL:or2_test
+! CHECK-LABEL: func.func @_QPor2_test
 LOGICAL(1) FUNCTION or2_test(x0, x1)
 LOGICAL(1) :: x0
 LOGICAL(1) :: x1
-! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0
-! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1
-! CHECK-DAG:[[reg3:%[0-9]+]] = fir.convert [[reg1]] {{.*}} -> i1
-! CHECK-DAG:[[reg4:%[0-9]+]] = fir.convert [[reg2]] {{.*}} -> i1
-! CHECK:[[reg5:%[0-9]+]] = arith.ori [[reg3]], [[reg4]]
-! CHECK:fir.convert [[reg5]] {{.*}} -> !fir.logical<1>
+! CHECK: %[[X0:.*]]:2 = hlfir.declare %arg0
+! CHECK: %[[X1:.*]]:2 = hlfir.declare %arg1
+! CHECK: %[[V0:.*]] = fir.load %[[X0]]#0 : !fir.ref<!fir.logical<1>>
+! CHECK: %[[V1:.*]] = fir.load %[[X1]]#0 : !fir.ref<!fir.logical<1>>
+! CHECK: %[[OR:.*]] = fir.logical_or %[[V0]], %[[V1]] : !fir.logical<1>
+! CHECK: hlfir.assign %[[OR]]
 or2_test = x0 .OR. x1
 END FUNCTION
 
-! CHECK-LABEL:and3_test
+! CHECK-LABEL: func.func @_QPand3_test
 LOGICAL(1) FUNCTION and3_test(x0, x1)
 LOGICAL(1) :: x0
 LOGICAL(1) :: x1
-! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0
-! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1
-! CHECK-DAG:[[reg3:%[0-9]+]] = fir.convert [[reg1]] {{.*}} -> i1
-! CHECK-DAG:[[reg4:%[0-9]+]] = fir.convert [[reg2]] {{.*}} -> i1
-! CHECK:[[reg5:%[0-9]+]] = arith.andi [[reg3]], [[reg4]]
-! CHECK:fir.convert [[reg5]] {{.*}} -> !fir.logical<1>
+! CHECK: %[[X0:.*]]:2 = hlfir.declare %arg0
+! CHECK: %[[X1:.*]]:2 = hlfir.declare %arg1
+! CHECK: %[[V0:.*]] = fir.load %[[X0]]#0 : !fir.ref<!fir.logical<1>>
+! CHECK: %[[V1:.*]] = fir.load %[[X1]]#0 : !fir.ref<!fir.logical<1>>
+! CHECK: %[[AND:.*]] = fir.logical_and %[[V0]], %[[V1]] : !fir.logical<1>
+! CHECK: hlfir.assign %[[AND]]
 and3_test = x0 .AND. x1
 END FUNCTION
 
-! CHECK-LABEL:not4_test
+! CHECK-LABEL: func.func @_QPnot4_test
 LOGICAL(1) FUNCTION not4_test(x0)
 LOGICAL(1) :: x0
-! CHECK:[[reg1:%[0-9]+]] = fir.load %arg0
-! CHECK:[[reg2:%[0-9]+]] = fir.convert [[reg1]] {{.*}} -> i1
-! CHECK:[[reg3:%[0-9]+]] = arith.xori [[reg2]], %true
-! CHECK:fir.convert [[reg3]] {{.*}} -> !fir.logical<1>
+! CHECK: %[[X0:.*]]:2 = hlfir.declare %arg0
+! CHECK: %[[V0:.*]] = fir.load %[[X0]]#0 : !fir.ref<!fir.logical<1>>
+! CHECK: %true = arith.constant true
+! CHECK: %[[B0:.*]] = fir.convert %[[V0]] : (!fir.logical<1>) -> i1
+! CHECK: %[[NOT:.*]] = arith.xori %[[B0]], %true : i1
+! CHECK: %[[RES:.*]] = fir.convert %[[NOT]] : (i1) -> !fir.logical<1>
+! CHECK: hlfir.assign %[[RES]]
 not4_test = .NOT. x0
 END FUNCTION
diff --git a/flang/test/Lower/loops2.f90 b/flang/test/Lower/loops2.f90
index cdd5c986bce71..b24e8b6401ce6 100644
--- a/flang/test/Lower/loops2.f90
+++ b/flang/test/Lower/loops2.f90
@@ -1,5 +1,5 @@
 ! Test loop variables increment
-! RUN: bbc -emit-fir -hlfir=false -o - %s | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir -o - %s | FileCheck %s
 
 module test_loop_var
   implicit none
@@ -8,111 +8,86 @@ module test_loop_var
   real, pointer :: x_pointer
   real, allocatable :: x_allocatable
 contains
-! CHECK-LABEL: func @_QMtest_loop_varPtest_pointer
+! CHECK-LABEL: func.func @_QMtest_loop_varPtest_pointer
   subroutine test_pointer()
     do i_pointer=1,10
     enddo
-! CHECK:         %[[VAL_0:.*]] = fir.address_of(@_QMtest_loop_varEi_pointer) : !fir.ref<!fir.box<!fir.ptr<i32>>>
-! CHECK:         %[[VAL_1:.*]] = fir.load %[[VAL_0]] : !fir.ref<!fir.box<!fir.ptr<i32>>>
-! CHECK:         %[[VAL_2:.*]] = fir.box_addr %[[VAL_1]] : (!fir.box<!fir.ptr<i32>>) -> !fir.ptr<i32>
-! CHECK:         %[[VAL_9:.*]] = fir.do_loop{{.*}}iter_args(%[[IV:.*]] = {{.*}})
-! CHECK:           fir.store %[[IV]] to %[[VAL_2]] : !fir.ptr<i32>
-! CHECK:         }
-! CHECK:         fir.store %[[VAL_9]] to %[[VAL_2]] : !fir.ptr<i32>
+! CHECK: %[[PTR:.*]]:2 = hlfir.declare %{{.*}} {fortran_attrs = #fir.var_attrs<pointer>, uniq_name = "_QMtest_loop_varEi_pointer"}
+! CHECK: %[[BOX:.*]] = fir.load %[[PTR]]#0 : !fir.ref<!fir.box<!fir.ptr<i32>>>
+! CHECK: %[[ADDR:.*]] = fir.box_addr %[[BOX]] : (!fir.box<!fir.ptr<i32>>) -> !fir.ptr<i32>
+! CHECK: %[[LOOP:.*]] = fir.do_loop
+! CHECK:   fir.store %{{.*}} to %[[ADDR]] : !fir.ptr<i32>
+! CHECK: fir.store %[[LOOP]] to %[[ADDR]] : !fir.ptr<i32>
   end subroutine
 
-! CHECK-LABEL: func @_QMtest_loop_varPtest_allocatable
+! CHECK-LABEL: func.func @_QMtest_loop_varPtest_allocatable
   subroutine test_allocatable()
     do i_allocatable=1,10
     enddo
-! CHECK:         %[[VAL_0:.*]] = fir.address_of(@_QMtest_loop_varEi_allocatable) : !fir.ref<!fir.box<!fir.heap<i32>>>
-! CHECK:         %[[VAL_1:.*]] = fir.load %[[VAL_0]] : !fir.ref<!fir.box<!fir.heap<i32>>>
-! CHECK:         %[[VAL_2:.*]] = fir.box_addr %[[VAL_1]] : (!fir.box<!fir.heap<i32>>) -> !fir.heap<i32>
-! CHECK:         %[[VAL_9:.*]] = fir.do_loop{{.*}}iter_args(%[[IV:.*]] = {{.*}})
-! CHECK:           fir.store %[[IV]] to %[[VAL_2]] : !fir.heap<i32>
-! CHECK:         }
-! CHECK:         fir.store %[[VAL_9]] to %[[VAL_2]] : !fir.heap<i32>
+! CHECK: %[[ALLOC:.*]]:2 = hlfir.declare %{{.*}} {fortran_attrs = #fir.var_attrs<allocatable>, uniq_name = "_QMtest_loop_varEi_allocatable"}
+! CHECK: %[[BOX:.*]] = fir.load %[[ALLOC]]#0 : !fir.ref<!fir.box<!fir.heap<i32>>>
+! CHECK: %[[ADDR:.*]] = fir.box_addr %[[BOX]] : (!fir.box<!fir.heap<i32>>) -> !fir.heap<i32>
+! CHECK: %[[LOOP:.*]] = fir.do_loop
+! CHECK:   fir.store %{{.*}} to %[[ADDR]] : !fir.heap<i32>
+! CHECK: fir.store %[[LOOP]] to %[[ADDR]] : !fir.heap<i32>
   end subroutine
 
-! CHECK-LABEL: func @_QMtest_loop_varPtest_real_pointer
+! CHECK-LABEL: func.func @_QMtest_loop_varPtest_real_pointer
   subroutine test_real_pointer()
     do x_pointer=1,10
     enddo
-! CHECK:         %[[VAL_0:.*]] = fir.alloca index
-! CHECK:         %[[VAL_1:.*]] = fir.address_of(@_QMtest_loop_varEx_pointer) : !fir.ref<!fir.box<!fir.ptr<f32>>>
-! CHECK:         %[[VAL_2:.*]] = fir.load %[[VAL_1]] : !fir.ref<!fir.box<!fir.ptr<f32>>>
-! CHECK:         %[[VAL_3:.*]] = fir.box_addr %[[VAL_2]] : (!fir.box<!fir.ptr<f32>>) -> !fir.ptr<f32>
-! CHECK:         %[[VAL_4:.*]] = arith.constant 1 : i32
-! CHECK:         %[[VAL_5:.*]] = fir.convert %[[VAL_4]] : (i32) -> f32
-! CHECK:         %[[VAL_8:.*]] = arith.constant 1.000000e+00 : f32
-
-! CHECK:         fir.store %[[VAL_5]] to %[[VAL_3]] : !fir.ptr<f32>
-! CHECK:         br ^bb1
-! CHECK:       ^bb1:
-! CHECK:         cond_br %{{.*}}, ^bb2, ^bb3
-! CHECK:       ^bb2:
-! CHECK:         %[[VAL_19:.*]] = fir.load %[[VAL_3]] : !fir.ptr<f32>
-! CHECK:         %[[VAL_20:.*]] = arith.constant 1.000000e+00 : f32
-! CHECK:         %[[VAL_21:.*]] = arith.addf %[[VAL_19]], %[[VAL_20]] {{.*}}: f32
-! CHECK:         fir.store %[[VAL_21]] to %[[VAL_3]] : !fir.ptr<f32>
-! CHECK:         br ^bb1
-! CHECK:       ^bb3:
-! CHECK:         return
+! CHECK: %[[COUNT:.*]] = fir.alloca index
+! CHECK: %[[PTR:.*]]:2 = hlfir.declare %{{.*}} {fortran_attrs = #fir.var_attrs<pointer>, uniq_name = "_QMtest_loop_varEx_pointer"}
+! CHECK: %[[BOX:.*]] = fir.load %[[PTR]]#0 : !fir.ref<!fir.box<!fir.ptr<f32>>>
+! CHECK: %[[ADDR:.*]] = fir.box_addr %[[BOX]] : (!fir.box<!fir.ptr<f32>>) -> !fir.ptr<f32>
+! CHECK: fir.store %{{.*}} to %[[ADDR]] : !fir.ptr<f32>
+! CHECK: cf.br ^bb1
+! CHECK: ^bb1:
+! CHECK: cf.cond_br
+! CHECK: ^bb2:
+! CHECK: %[[VAL:.*]] = fir.load %[[ADDR]] : !fir.ptr<f32>
+! CHECK: %[[NEXT:.*]] = arith.addf %[[VAL]], %{{.*}} fastmath<contract> : f32
+! CHECK: fir.store %[[NEXT]] to %[[ADDR]] : !fir.ptr<f32>
   end subroutine
 
-! CHECK-LABEL: func @_QMtest_loop_varPtest_real_allocatable
+! CHECK-LABEL: func.func @_QMtest_loop_varPtest_real_allocatable
   subroutine test_real_allocatable()
     do x_allocatable=1,10
     enddo
-! CHECK:         %[[VAL_0:.*]] = fir.alloca index
-! CHECK:         %[[VAL_1:.*]] = fir.address_of(@_QMtest_loop_varEx_allocatable) : !fir.ref<!fir.box<!fir.heap<f32>>>
-! CHECK:         %[[VAL_2:.*]] = fir.load %[[VAL_1]] : !fir.ref<!fir.box<!fir.heap<f32>>>
-! CHECK:         %[[VAL_3:.*]] = fir.box_addr %[[VAL_2]] : (!fir.box<!fir.heap<f32>>) -> !fir.heap<f32>
-! CHECK:         %[[VAL_4:.*]] = arith.constant 1 : i32
-! CHECK:         %[[VAL_5:.*]] = fir.convert %[[VAL_4]] : (i32) -> f32
-! CHECK:         %[[VAL_8:.*]] = arith.constant 1.000000e+00 : f32
-
-! CHECK:         fir.store %[[VAL_5]] to %[[VAL_3]] : !fir.heap<f32>
-! CHECK:         br ^bb1
-! CHECK:       ^bb1:
-! CHECK:         cond_br %{{.*}}, ^bb2, ^bb3
-! CHECK:       ^bb2:
-! CHECK:         %[[VAL_19:.*]] = fir.load %[[VAL_3]] : !fir.heap<f32>
-! CHECK:         %[[VAL_20:.*]] = arith.constant 1.000000e+00 : f32
-! CHECK:         %[[VAL_21:.*]] = arith.addf %[[VAL_19]], %[[VAL_20]] {{.*}}: f32
-! CHECK:         fir.store %[[VAL_21]] to %[[VAL_3]] : !fir.heap<f32>
-! CHECK:         br ^bb1
-! CHECK:       ^bb3:
-! CHECK:         return
+! CHECK: %[[COUNT:.*]] = fir.alloca index
+! CHECK: %[[ALLOC:.*]]:2 = hlfir.declare %{{.*}} {fortran_attrs = #fir.var_attrs<allocatable>, uniq_name = "_QMtest_loop_varEx_allocatable"}
+! CHECK: %[[BOX:.*]] = fir.load %[[ALLOC]]#0 : !fir.ref<!fir.box<!fir.heap<f32>>>
+! CHECK: %[[ADDR:.*]] = fir.box_addr %[[BOX]] : (!fir.box<!fir.heap<f32>>) -> !fir.heap<f32>
+! CHECK: fir.store %{{.*}} to %[[ADDR]] : !fir.heap<f32>
+! CHECK: cf.br ^bb1
+! CHECK: ^bb1:
+! CHECK: cf.cond_br
+! CHECK: ^bb2:
+! CHECK: %[[VAL:.*]] = fir.load %[[ADDR]] : !fir.heap<f32>
+! CHECK: %[[NEXT:.*]] = arith.addf %[[VAL]], %{{.*}} fastmath<contract> : f32
+! CHECK: fir.store %[[NEXT]] to %[[ADDR]] : !fir.heap<f32>
   end subroutine
 
-  ! CHECK-LABEL: func @_QMtest_loop_varPtest_pointer_unstructured_loop()
+  ! CHECK-LABEL: func.func @_QMtest_loop_varPtest_pointer_unstructured_loop()
   subroutine test_pointer_unstructured_loop()
     do i_pointer=1,10
       if (i_pointer .gt. 5) exit
     enddo
-! CHECK:         %[[VAL_1:.*]] = fir.address_of(@_QMtest_loop_varEi_pointer) : !fir.ref<!fir.box<!fir.ptr<i32>>>
-! CHECK:         %[[VAL_2:.*]] = fir.load %[[VAL_1]] : !fir.ref<!fir.box<!fir.ptr<i32>>>
-! CHECK:         %[[VAL_3:.*]] = fir.box_addr %[[VAL_2]] : (!fir.box<!fir.ptr<i32>>) -> !fir.ptr<i32>
-! CHECK:         %[[VAL_4:.*]] = arith.constant 1 : i32
-! CHECK:         %[[VAL_6:.*]] = arith.constant 1 : i32
-! CHECK:         fir.store %[[VAL_4]] to %[[VAL_3]] : !fir.ptr<i32>
-! CHECK:         br ^bb1
-! CHECK:       ^bb1:
-! CHECK:         cond_br %{{.*}}, ^bb2, ^bb5
-! CHECK:       ^bb2:
-! CHECK:         cond_br %{{.*}}, ^bb3, ^bb4
-! CHECK:       ^bb3:
-! CHECK:         br ^bb5
-! CHECK:       ^bb4:
-! CHECK:         %[[VAL_20:.*]] = fir.load %[[VAL_3]] : !fir.ptr<i32>
-! CHECK:         %[[VAL_21:.*]] = arith.constant 1 : i32
-! CHECK:         %[[VAL_22:.*]] = arith.addi %[[VAL_20]], %[[VAL_21]] overflow<nsw> : i32
-! CHECK:         fir.store %[[VAL_22]] to %[[VAL_3]] : !fir.ptr<i32>
-! CHECK:         br ^bb1
-! CHECK:       ^bb5:
-! CHECK:         return
-! CHECK:       }
+! CHECK: %[[PTR:.*]]:2 = hlfir.declare %{{.*}} {fortran_attrs = #fir.var_attrs<pointer>, uniq_name = "_QMtest_loop_varEi_pointer"}
+! CHECK: %[[BOX:.*]] = fir.load %[[PTR]]#0 : !fir.ref<!fir.box<!fir.ptr<i32>>>
+! CHECK: %[[ADDR:.*]] = fir.box_addr %[[BOX]] : (!fir.box<!fir.ptr<i32>>) -> !fir.ptr<i32>
+! CHECK: fir.store %{{.*}} to %[[ADDR]] : !fir.ptr<i32>
+! CHECK: cf.br ^bb1
+! CHECK: ^bb1:
+! CHECK: cf.cond_br
+! CHECK: ^bb2:
+! CHECK: cf.cond_br
+! CHECK: ^bb3:
+! CHECK: cf.br ^bb5
+! CHECK: ^bb4:
+! CHECK: %[[VAL:.*]] = fir.load %[[ADDR]] : !fir.ptr<i32>
+! CHECK: %[[NEXT:.*]] = arith.addi %[[VAL]], %{{.*}} overflow<nsw> : i32
+! CHECK: fir.store %[[NEXT]] to %[[ADDR]] : !fir.ptr<i32>
   end subroutine
 
 end module
diff --git a/flang/test/Lower/loops3.f90 b/flang/test/Lower/loops3.f90
index 2965b954b49a8..5df3c4fd93703 100644
--- a/flang/test/Lower/loops3.f90
+++ b/flang/test/Lower/loops3.f90
@@ -1,7 +1,7 @@
 ! Test do concurrent reduction
-! RUN: bbc -emit-fir -hlfir=false -o - %s | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir -o - %s | FileCheck %s
 
-! CHECK-LABEL: loop_test
+! CHECK-LABEL: func.func @_QPloop_test
 subroutine loop_test
   integer(4) :: i, j, k, tmp, sum = 0
   real :: m
@@ -10,9 +10,18 @@ subroutine loop_test
   j = 200
   k = 300
 
-  ! CHECK: %[[VAL_0:.*]] = fir.alloca f32 {bindc_name = "m", uniq_name = "_QFloop_testEm"}
-  ! CHECK: %[[VAL_1:.*]] = fir.address_of(@_QFloop_testEsum) : !fir.ref<i32>
-  ! CHECK: fir.do_concurrent.loop ({{.*}}) = ({{.*}}) to ({{.*}}) step ({{.*}}) reduce(@add_reduction_i32 #fir.reduce_attr<add> %[[VAL_1]] -> %{{.*}}, @other_reduction_f32 #fir.reduce_attr<max> %[[VAL_0]] -> %{{.*}} : {{.*}}) {
+  ! CHECK: %[[M:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFloop_testEm"}
+  ! CHECK: %[[SUM:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFloop_testEsum"}
+  ! CHECK: fir.do_concurrent.loop ({{.*}}) = ({{.*}}) to ({{.*}}) step ({{.*}}) local(@_QFloop_testEtmp_private_i32 %{{.*}} -> %{{.*}} : !fir.ref<i32>) reduce(@add_reduction_i32 #fir.reduce_attr<add> %[[SUM]]#0 -> %{{.*}}, @other_reduction_f32 #fir.reduce_attr<max> %[[M]]#0 -> %{{.*}} : !fir.ref<i32>, !fir.ref<f32>) {
+  ! CHECK: %[[TMP:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFloop_testEtmp"}
+  ! CHECK: %[[SUM_INNER:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFloop_testEsum"}
+  ! CHECK: %[[M_INNER:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFloop_testEm"}
+  ! CHECK: hlfir.assign %{{.*}} to %[[TMP]]#0 : i32, !fir.ref<i32>
+  ! CHECK: %[[TMPVAL:.*]] = fir.load %[[TMP]]#0 : !fir.ref<i32>
+  ! CHECK: %[[SUMVAL:.*]] = fir.load %[[SUM_INNER]]#0 : !fir.ref<i32>
+  ! CHECK: %[[ADDED:.*]] = arith.addi %[[TMPVAL]], %[[SUMVAL]] : i32
+  ! CHECK: hlfir.assign %[[ADDED]] to %[[SUM_INNER]]#0 : i32, !fir.ref<i32>
+  ! CHECK: hlfir.assign %{{.*}} to %[[M_INNER]]#0 : f32, !fir.ref<f32>
   do concurrent (i=1:5, j=1:5, k=1:5) local(tmp) reduce(+:sum) reduce(max:m)
     tmp = i + j + k
     sum = tmp + sum
diff --git a/flang/test/Lower/memory-alloc.f90 b/flang/test/Lower/memory-alloc.f90
index 3669208591011..abf81e370d90a 100644
--- a/flang/test/Lower/memory-alloc.f90
+++ b/flang/test/Lower/memory-alloc.f90
@@ -1,9 +1,11 @@
-! RUN: bbc -hlfir=false -o - %s | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir -o - %s | FileCheck %s
 
-! CHECK-LABEL: func @_QMw0bPtest1(
-! CHECK: %[[TWO:.*]] = arith.constant 2 : index
-! CHECK: %[[HEAP:.*]] = fir.allocmem !fir.array<?x!fir.logical<4>>, %[[TWO]] {uniq_name = ".array.expr"}
-! CHECK: fir.freemem %[[HEAP]] : !fir.heap<!fir.array<?x!fir.logical<4>>>
+! CHECK-LABEL: func.func @_QMw0bPtest1(
+! CHECK: %[[A:.*]]:2 = hlfir.declare %{{.*}}(%{{.*}}) {fortran_attrs = #fir.var_attrs<parameter>, uniq_name = "_QMw0bECa"}
+! CHECK: %[[SLICE:.*]] = hlfir.designate %[[A]]#0 (%{{.*}}:%{{.*}}:%{{.*}}, %{{.*}})  shape %{{.*}} : (!fir.ref<!fir.array<2x2xi32>>, index, index, index, i64, !fir.shape<1>) -> !fir.ref<!fir.array<2xi32>>
+! CHECK: %[[EXPR:.*]] = hlfir.elemental %{{.*}} unordered : (!fir.shape<1>) -> !hlfir.expr<2x!fir.logical<4>>
+! CHECK: %[[ANY:.*]] = hlfir.any %[[EXPR]] : (!hlfir.expr<2x!fir.logical<4>>) -> !fir.logical<4>
+! CHECK: hlfir.destroy %[[EXPR]] : !hlfir.expr<2x!fir.logical<4>>
 
 Module w0b
   Integer,Parameter :: a(*,*) = Reshape( [ 1,2,3,4 ], [ 2,2 ])
diff --git a/flang/test/Lower/zero-size.f90 b/flang/test/Lower/zero-size.f90
index 426f634a705ae..9d7324067f11a 100644
--- a/flang/test/Lower/zero-size.f90
+++ b/flang/test/Lower/zero-size.f90
@@ -1,36 +1,36 @@
-! RUN: bbc -hlfir=false -o - %s | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir -o - %s | FileCheck %s
 
-! CHECK-LABEL: _QPzero1
+! CHECK-LABEL: func.func @_QPzero1
 subroutine zero1(z)
   real, dimension(:) :: z
   print*, size(z), z, ':'
 end
 
-! CHECK-LABEL: _QPzero2
+! CHECK-LABEL: func.func @_QPzero2
 subroutine zero2
   type dt
     integer :: j = 17
   end type
   ! CHECK: %[[z:[0-9]*]] = fir.alloca !fir.array<0x!fir.type<_QFzero2Tdt{j:i32}>> {bindc_name = "z", uniq_name = "_QFzero2Ez"}
   ! CHECK: %[[shape:[0-9]*]] = fir.shape %c0 : (index) -> !fir.shape<1>
-  ! CHECK: fir.embox %[[z]](%[[shape]]) : (!fir.ref<!fir.array<0x!fir.type<_QFzero2Tdt{j:i32}>>>, !fir.shape<1>) -> !fir.box<!fir.array<0x!fir.type<_QFzero2Tdt{j:i32}>>>
+  ! CHECK: %{{.*}}:2 = hlfir.declare %[[z]](%[[shape]]) {uniq_name = "_QFzero2Ez"}
   type(dt) :: z(0)
   print*, size(z), z, ':'
 end
 
-! CHECK-LABEL: _QPzero3
+! CHECK-LABEL: func.func @_QPzero3
 subroutine zero3
   type dt
     integer :: j
   end type
   ! CHECK: %[[z:[0-9]*]] = fir.address_of(@_QFzero3Ez) : !fir.ref<!fir.array<0x!fir.type<_QFzero3Tdt{j:i32}>>>
   ! CHECK: %[[shape:[0-9]*]] = fir.shape %c0 : (index) -> !fir.shape<1>
-  ! CHECK: fir.embox %[[z]](%[[shape]]) : (!fir.ref<!fir.array<0x!fir.type<_QFzero3Tdt{j:i32}>>>, !fir.shape<1>) -> !fir.box<!fir.array<0x!fir.type<_QFzero3Tdt{j:i32}>>>
+  ! CHECK: %{{.*}}:2 = hlfir.declare %[[z]](%[[shape]]) {uniq_name = "_QFzero3Ez"}
   type(dt) :: z(0) = dt(99)
   print*, size(z), z, ':'
 end
 
-! CHECK-LABEL: _QQmain
+! CHECK-LABEL: func.func @_QQmain
 program prog
   real nada(2:-1)
   interface
@@ -39,7 +39,7 @@ subroutine zero1(aa)
     end
   end interface
   ! CHECK: %[[shape:[0-9]*]] = fir.shape_shift %c2, %c0 : (index, index) -> !fir.shapeshift<1>
-  ! CHECK: %2 = fir.embox %0(%[[shape]]) : (!fir.ref<!fir.array<0xf32>>, !fir.shapeshift<1>) -> !fir.box<!fir.array<0xf32>>
+  ! CHECK: %{{.*}}:2 = hlfir.declare %{{.*}}(%[[shape]]) {uniq_name = "_QFEnada"}
   call zero1(nada)
   call zero2
   call zero3

``````````

</details>


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


More information about the flang-commits mailing list